![Postfix 拒绝从 O365 中继的电子邮件](https://linux22.com/image/767378/Postfix%20%E6%8B%92%E7%BB%9D%E4%BB%8E%20O365%20%E4%B8%AD%E7%BB%A7%E7%9A%84%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6.png)
我必须使用 Sogo 将 Office 365 从 Postfix 迁移。我的目标是配置 Office 365 与 Postfix 的小型混合系统,这有点类似于 Exchange On-site。
目前,postfix 是一个拥有 1000 个用户的主要服务器,它负责发送和接收域名.xyz。我已配置 Office 365 并向其添加了相同的域。我已在其上创建了 2 个邮箱并配置了 Exchange Online域名.xyz被设置为InternalRelay域。
Exchange online 目前有 2 个账户
Exchange 的配置是,如果 Exchange 上的某人向 domain.xyz 发送电子邮件,并且邮箱在 Exchange 上,则该电子邮件应保留在 Exchange 上,但如果 Exchange 找不到 domain.xyz 的邮箱,则应使用输出连接器我已将其配置为将电子邮件转发到 postfix。这意味着用户 A 发送给用户 B 的任何电子邮件都可以正常工作,但是当用户 A 向位于 postfix 上的用户 C 发送电子邮件时,它会阻止该电子邮件。
报告错误:554 5.7.1[电子邮件保护]:收件人地址被拒绝:政策拒绝未登录
我的理解是,Postfix 认为它是唯一拥有域 domain.xyz 的服务器,它将来自 domain.xyz 的任何电子邮件视为某些用户/服务试图在未经授权的情况下发送电子邮件,并拒绝它。当我们在 Office 365 中创建完全随机的电子邮件时,在 Postfix 中没有相应的帐户,并且尝试从[电子邮件保护]到[电子邮件保护]我们得到
远程服务器返回 '550 5.1.0[电子邮件保护]:发件人地址被拒绝:虚拟邮箱表中的用户未知”
有什么方法可以告诉 postfix (SoGo) 开始信任 Office 365(IP 地址范围)并允许它接收来自它认为拥有的域以及它拥有的帐户的电子邮件。在将 postfix 迁移到 Office 365 的最后一步,postfix 中的每个帐户在 O365 中都将拥有相同的帐户,我们将使用电子邮件重定向功能一次将 1 个邮箱重定向到 onmicrosoft.com 地址,以确保用户可以使用 O365 而无需担心他们的 postfix 帐户。但要做到这一点,O365 和 postfix 之间的流量需要正常进行。
我猜测这不仅是 Office 365 共存的问题,任何人使用的服务(例如 SendGrid 或类似服务)都会有相同的问题。
最后 - 我无法访问 postfix/sogo。我只“拥有”o365 端。我正在尝试向 Linux/Postfix 团队提供意见以修复此问题
我从团队那里得到了可能相关的配置信息,但我自己不知道这是否正确
# HELO restriction
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_non_fqdn_helo_hostname
reject_invalid_helo_hostname
check_helo_access pcre:/etc/postfix/helo_access.pcre
# Sender restrictions
smtpd_sender_restrictions =
reject_unknown_sender_domain,
reject_non_fqdn_sender,
reject_unlisted_sender,
permit_mynetworks,
permit_sasl_authenticated,
check_sender_access pcre:/etc/postfix/sender_access.pcre
#reject_sender_login_mismatch
# Recipient restrictions
smtpd_recipient_restrictions =
reject_unknown_recipient_domain,
reject_non_fqdn_recipient,
reject_unlisted_recipient,
check_policy_service inet:127.0.0.1:7777,
permit_mynetworks,
permit_sasl_authenticated,
#reject_unauth_destination
# Data restrictions
smtpd_data_restrictions = reject_unauth_pipelining
# O365 addresses
mynetworks = 127.0.0.0/8, 40.92.0.0/15, 40.107.0.0/16, 52.100.0.0/14, 104.47.0.0/17
#
# Lookup virtual mail accounts
#
transport_maps =
#regexp:/etc/postfix/transport_regexp
proxy:ldap:/etc/postfix/ldap/transport_maps_user.cf
proxy:ldap:/etc/postfix/ldap/transport_maps_domain.cf
sender_dependent_relayhost_maps =
proxy:ldap:/etc/postfix/ldap/sender_dependent_relayhost_maps_user.cf
proxy:ldap:/etc/postfix/ldap/sender_dependent_relayhost_maps_domain.cf
# Lookup table with the SASL login names that own the sender (MAIL FROM) addresses.
smtpd_sender_login_maps =
proxy:ldap:/etc/postfix/ldap/sender_login_maps.cf
virtual_mailbox_domains =
proxy:ldap:/etc/postfix/ldap/virtual_mailbox_domains.cf
relay_domains =
$mydestination
proxy:ldap:/etc/postfix/ldap/relay_domains.cf
virtual_mailbox_maps =
proxy:ldap:/etc/postfix/ldap/virtual_mailbox_maps.cf
virtual_alias_maps =
#regexp:/etc/postfix/transport_regexp
proxy:ldap:/etc/postfix/ldap/virtual_alias_maps.cf
proxy:ldap:/etc/postfix/ldap/virtual_group_maps.cf
proxy:ldap:/etc/postfix/ldap/virtual_group_members_maps.cf
proxy:ldap:/etc/postfix/ldap/catchall_maps.cf
proxy:ldap:/etc/postfix/ldap/sender_login_maps.cf
sender_bcc_maps =
proxy:ldap:/etc/postfix/ldap/sender_bcc_maps_user.cf
proxy:ldap:/etc/postfix/ldap/sender_bcc_maps_domain.cf
recipient_bcc_maps =
proxy:ldap:/etc/postfix/ldap/recipient_bcc_maps_user.cf
proxy:ldap:/etc/postfix/ldap/recipient_bcc_maps_domain.cf
在 master.cf 中
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_reject_unlisted_recipient=no
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o smtpd_client_restrictions=permit_sasl_authenticated,permit_mynetworks
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
欢迎任何想法。
答案1
看来规则的顺序很重要!
- smtpd_helo_restrictions
- smtpd_sender_restrictions
- smtpd_recipient_restrictions
这意味着,如果您想允许所有 o365 地址始终被允许,则该permit_mynetworks
规则必须位于每条规则(或负责阻止的规则)的顶部。一旦将规则移至顶部,一切便开始正常工作,并解决了第一个问题。
第二个错误很可能与全局设置有关
# Reject unlisted sender and recipient
smtpd_reject_unlisted_recipient = yes
smtpd_reject_unlisted_sender = yes
哪些规则优先于发件人限制和收件人限制下定义的规则 - 因此似乎通过禁用这些规则 - 这些规则也将被允许。我没有测试过 - 但这是我的赌注,因为我们不需要测试它,所以我会把它留给别人去发现 :-)