Using G Suite Mail and local Postfix and relay to each other

dovecotg-suitegmailpostfix

current situation.
We moving some peoples from local postfix to Googles GMail via G Suite / Business.

Because for test reasons only 4 people using GMail at the moment.
And we have 10 peoples which should use.

But they must configure everything and so we must continue with both services.

GMail is configured really well I think.
If I send a mail from a@example.org to b@example.org it relays the mail to the gmail server and to our local postfix.
So everything is fine.

But if the Postfix sends a message to the local domain, it is only available in the local postfix / dovecot instance.
There is no relay to GMail because its local…

How I can relay this mails from local postfix <-> local postfix to gmail servers?

Current configuration:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) is ready to be MARVELOUS
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file= /etc/ssl/mail.example.org.crt
smtpd_tls_key_file= /etc/ssl/mail.example.org.key
smtpd_tls_CAfile = /etc/ssl/mail.example.org.ca-bundle
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.example.org
mydomain = example.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
message_size_limit = 102400000

# G Suite
relayhost = [smtp-relay.gmail.com]:587
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes

smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

virtual_transport = lmtp:unix:private/dovecot-lmtp

virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_alias_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_maps =
   proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
   proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

If I add transport with

*  smtp:[smtp-relay.gmail.com]

I have a loop and the mail is in GMail but not on dovecot.

Thanks in Advance for ideas!

Best Answer

Don't add a wildcard transport, which will obviously forward all mail. Instead, explicitly forward the individual users that already migrated to GMail. When a to d@example.org have already been migrated, but all other users in this domain haven't, use a transport file like this:

a@example.org  smtp:[smtp-relay.gmail.com]
b@example.org  smtp:[smtp-relay.gmail.com]
c@example.org  smtp:[smtp-relay.gmail.com]
d@example.org  smtp:[smtp-relay.gmail.com]
Related Topic