I'm late to this thread, but hopefully I can add some value.
I've recently been through this for my own personal email. I have a domain with some interesting rewrites to the address that I forward to GMail. I put together my set up into a Docker container:
https://github.com/jbeda/docker-postfix-forwarder
It is worth breaking this down into each direction -- sending and receiving.
Sending
This is the easy side. You simply run an SMTP server and have GMail use this to send. If you want others to not mark you as spam you'll want to look at setting up SPF (publishing which IPs are allowed to send from your domain) and perhaps DKIM (digitally sign your email).
GMail used to allow sending from aliases directly without an external SMTP server but that is disabled. Old accounts are grandfathered in.
Receiving
This is where things get complicated. Essentially, you are having folks send mail to your server and you are turning around and relaying that email to GMail. GMail has a hard job here. It doesn't know if it should trust you and that you are acting on behalf of the user or if you are an open relay sending spam. I've found after I change my forwarding set up I have to police my spam folder for a couple of days to retrain GMail.
The real complication here is SPF. Sending domains will publish their own SPF records. When doing this they can either specify a soft or hard fail. If they specify a soft fail (`~all`) then there is a chance that GMail won't mark it as spam. But if they use soft fail (`-all`) then it will go to spam all the time. The problem is that the sending domain (say evite.com) doesn't list your relay IP as having permission to send that mail and so GMail respects that.
Having GMail pull the mail via POP is one solution here but that introduces latency.
Or you can rewrite the "envelope sender" so that you are honest about the mail coming through your server. The accepted scheme to do this is SRS. This is not a silver bullet though. If you are forwarding a lot of spam, GMail may decide that your SRS domain is spammy and penalize all incoming mail.
Also, if you are forwarding a lot of spam, GMail will throttle you. It'll have you back off and wait to forward more mail. Your best bet is to find ways to eliminate obvious spam before you forward to GMail.
My solution seems to be working okay for now, but it is a pain the ass and I'm honestly not sure it is worth it.
EDIT: Here is a tutorial that I used to inform my approach. It is worth digging in to. http://seasonofcode.com/posts/setting-up-dkim-and-srs-in-pos...