%2C%20mas%20entrega%20emails%20de%20entrada.png)
Estamos migrando lentamente para o Office 365 do Postfix/Dovecot, com o objetivo de habilitar alguns usuários por vez. O e-mail do nosso domínio deve chegar ao Office 365 e, se não houver nenhuma correspondência de endereço encontrada no Office 365, ele deverá ser encaminhado para o Postfix, que o entregará em uma caixa de correio Dovecot (estamos usando uma configuração de usuários virtuais, todos os usuários sendo armazenados em um servidor LDAP separado). Isso nos permite usar o Office 365 para usuários que foram configurados, mas para outros que não o fizeram, o email vai para o sistema Postfix/Dovecot existente.
eu tenho seguidoestas instruçõesem fazer conectores, etc., e funciona - depois de colocar IPs EOP na lista de permissões, o Office 365 entregará ao Postfix sem problemas. O problema é fazer com que as coisas sigam na direção oposta. Todos os emails enviados devem ser retransmitidos através do Office 365, e se eu definir uma relayhost
variável e remover nosso domínio local, mydestinations
isso funcionará... mas o Postfix não entregará nenhum email recebido (resulta em um loop de devolução). Se eu mantiver nosso domínio, mydestinations
o e-mail será entregue localmente e não passará pela retransmissão, o que significa que os usuários que ainda estão no sistema Postfix não poderão enviar e-mails para usuários do Office 365.
Existe uma maneira de forçar todos os emails de saída (incluindo os entregues localmente) a passarem pela retransmissão e ainda assim aceitar emails de entrada para o mesmo domínio? Ontem estive contra uma parede e a única solução real que consigo pensar é executar duas instâncias separadas do Postfix - uma que retransmite tudo e a outra que é usada apenas para mensagens recebidas. Mas certamente há uma maneira de fazer isso com apenas uma instância? Eu procurei, mas em todos os lugares parece que você está apenas retransmitindo e-mails e não fazendo mais nada.
postconf -n se parece com isto (domínio alterado para example.com). Retirei todas as alterações que fiz na tentativa de retransmitir o Office 365:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
content_filter = smtp-amavis:[127.0.0.1]:10024
dovecot_destination_recipient_limit = 1
inet_interfaces = all
inet_protocols = all
mailbox_command = /usr/lib/dovecot/deliver
mailbox_size_limit = 0
mailbox_transport = dovecot
message_size_limit = 20480000
mydestination = $myhostname, silver.example.com, localhost.example.com, localhost, example.com
myhostname = smtp.example.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24 192.168.10.0/24
myorigin = /etc/mailname
readme_directory = no
receive_override_options = no_address_mappings
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
recipient_delimiter = +
relayhost =
smtp_tls_note_starttls_offer = yes
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_access, check_sender_access hash:/etc/postfix/sender_access, check_sender_access cidr:/etc/postfix/o365, reject_authenticated_sender_login_mismatch, permit_sasl_authenticated, permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unauth_destination, reject_rbl_client bl.spamcop.net, reject_rbl_client b.barracudacentral.org, reject_rbl_client zen.spamhaus.org, reject_rbl_client cbl.abuseat.org
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sender_login_maps = hash:/etc/postfix/local_senders, ldap:/etc/postfix/ldap_senders.cf
smtpd_tls_CAfile = /etc/ssl/certs/example.com.cabundle
smtpd_tls_cert_file = /etc/ssl/certs/example.com.crt
smtpd_tls_key_file = /etc/ssl/private/example.com.key
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
virtual_alias_domains = events.example.com
virtual_alias_maps = hash:/etc/postfix/redirect, ldap:/etc/postfix/ldap_virtual_users.cf, ldap:/etc/postfix/ldap_virtual_groups.cf
virtual_transport = dovecot
Para obter toda a retransmissão de e-mail, eu poderia definir relayhost = example-com.mail.protection.outlook.com
e remover example.com da mydestinations
lista, o que faz com que a entrega funcione para o Office 365, mas interrompe o sistema antigo.
Pensei em transport_maps
tentar enviar todos os e-mails para endereços de e-mail específicos (ou seja, aqueles movidos para o Office 365) por meio do retransmissor e todo o resto funciona localmente, mas os valores neles parecem sempre ser ignorados.
Estou totalmente sem ideias, então se alguém tiver alguma ficarei grato.
Responder1
OK, não estou totalmente feliz com isso, mas consegui funcionar. Eu sinto que há uma maneira mais direta, mas não consigo descobrir.
Depois de mais pesquisas, descobri que virtual_alias_maps
é executadoantesqualquer coisa em transport_maps
, e é por isso que pensei que estava sendo ignorado. Portanto, se você tiver endereços sendo reescritos, qualquer que seja a saída da reescrita do alias virtual, ela precisará corresponder ao que você irá alimentar transport_maps
. Então meu transport_maps
hash fica assim:
[email protected] smtp:example-com.mail.protection.outlook.com
@example.com :
* :
Isso faria com que o e-mail fosse enviado para[e-mail protegido]será retransmitido para o Office 365, mas todo o resto será entregue localmente.
Funciona, mas ainda sinto que há uma maneira melhor de lidar com isso.