Postfix 中继到 Office365

Postfix 中继到 Office365

我正在尝试在 Linux 上设置 Postfix 服务器,将所有邮件转发到我们的 Office365(Exchange,由 Microsoft 托管)邮件服务器,但是,我一直收到有关发送地址的错误:

BB338140DC1:to=relay=pod51010.outlook.com[157.56.234.118]:587,delay=7.6,delays=0.01/0/2.5/5.1,dsn=5.7.1,status=bounced(主机 pod51010.outlook.com[157.56.234.118] 表示:550 5.7.1 客户端无权以此发送者身份发送(回复 DATA 命令结束))

Office 365 要求 MAIL FROM 和 From: 标头中的发送地址与用于验证的地址相同。我已尝试了配置中能想到的所有方法来实现这一点。我的postconf -n:

append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
debug_peer_list = 127.0.0.1
inet_interfaces = loopback-only
inet_protocols = all
mailbox_size_limit = 0
mydestination = xxxxx, localhost.localdomain, localhost
myhostname = localhost
mynetworks = 127.0.0.0/8
recipient_delimiter = +
relay_domains = our.doamin
relayhost = [pod51010.outlook.com]:587
sender_canonical_classes = envelope_sender
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_always_send_ehlo = yes
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = login
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

/etc/postfix/sender_canonical

www-data                [email protected]
root                    [email protected]
www-data@localhost      [email protected]
root@localhost          [email protected]

此外,sasl_passwd设置为正确的凭据(使用以下方法测试斯瓦克斯多次。)身份验证有效,并在发件人标题正确时发送消息(也使用以下方法进行了测试斯瓦克斯,有效)

这些电子邮件来自 PHP,因此我还尝试更改 sendmail 路径,以便php.ini通过 -f 传递正确的发件人地址

因此,出于某种原因,来自www-数据没有将发件人字段重写到 Office 365 满意的程度,因此它不会发送消息。

有没有 Postfix 专家可以帮助我设置这个中继?

答案1

以防以后有人遇到这种情况。我终于让电子邮件中继正常工作了。问题与使用旧版本的 Postfix 有关,它以 Office 365 不喜欢的方式格式化了信封中的“发件人”元素。将 Postfix 更新到 2.9 或更高版本(并使用类似上述配置)解决了该问题。

答案2

解决方案:

  1. 不要以 Office365 托管电子邮件域用户的身份向 Office365 发送邮件。请改用子域,例如[电子邮件保护]代替[电子邮件保护]。为 services.mydomain.com 或您决定使用的任何网站设置 SPF 记录不会有什么坏处。

  2. 不要以 Office365 用户的身份对 mail.messaging.microsoft.com 进行身份验证。只需连接到端口 25 并将邮件发送到您的域,就像任何外部 SMTP 代理一样。

答案3

我发现缺少一些 SASL 身份验证模块。以下方法可修复此问题:

yum install cyrus-sasl-plain  cyrus-sasl-scram cyrus-sasl-md5  cyrus-sasl-ntlm

清楚的模块可能就足够了)

相关内容