postfix 通过 office365 中继所有邮件的问题

postfix 通过 office365 中继所有邮件的问题

这是一个相当长的问题,其中有一系列尝试和艰辛,所以请耐心听完。总结如下。

  1. 我能够使用 postfix 通过 office365 中继来自 ubuntu 的电子邮件;配置有效。
  2. 它只能作为其中一个用户使用;更​​具体地说,针对 office365 进行身份验证的用户是唯一有效的“来自”

更多详细信息如下。我在亚马逊云中有一台机器,我在上面运行大量作业,并希望将状态通过邮件发送给我。我在工作中使用 office365,因此我想通过 office365 中继邮件。我最熟悉的是 postfix,因此我将其用作 MTA。

配置是ubuntu 12.04LTS;我已经安装了 postfix 和 mail-utils。

对于此示例,假设我的公司是“ company.com”,并且有问题的机器(通过弹性 IP 和 DNS 条目)称为“ plaything.company.com”。主机名设置为“ plaything.company.com”,因此/etc/mailname

在 plaything 上,我有以下注册用户alphabravo、、和charlie

我有以下配置文件。

别名数据库 = 哈希:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = 没有
配置目录 = /etc/postfix
inet_interfaces = 全部
inet_protocols = ipv4
邮箱大小限制 = 0
我的目的地 = plaything.company.com, localhost.company.com, , localhost
我的主机名 = plaything.company.com
我的网络 = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = 否
收件人分隔符 = +
中继主机 = [smtp.office365.com]:587
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_sasl_auth_enable = 是
smtp_sasl_password_maps = 哈希:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = 是
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = 是

当机器被调用时,plaything.company.com我经历了注册所有适当的 DNS 条目的练习,以使 office365 识别我拥有它plaything.company.com并允许我创建一个名为[email protected]office365 的用户。

在office365中,我设置了[email protected]另一个电子邮件地址[email protected]

然后,我制作了以下 sender_canonical

[电子邮件保护] [电子邮件保护]

我创建了一个 sasl_passwd 文件,内容如下:

smtp.office365.com [email protected]:123456password123456

假设的密码[email protected]1234...456

完成所有设置后,以以下身份alpha登录

邮件[电子邮件保护]
抄送:
主题:测试
测试

整个过程运行良好。电子邮件通过 postfix 发送,TLS 运行良好,身份验证daemon@...[电子邮件保护]在 Office365 中收到一封电子邮件。

bravo当以机器身份登录时就会出现此问题。

发件人是[email protected],office365 说:

状态=退回(主机 smtp.office365.com[132.245.12.25] 说:
550 5.7.1 客户端没有权限发送
此发送者(回复 DATA 命令的结束)

这是因为我尝试以 的身份发送邮件并以 的bravo@...身份通过 office365 进行身份验证daemon@...。它之所以有效alpha@...是因为在 office365 中,我设置[email protected]为 并拥有另一个电子邮件地址[email protected]


Postfix 中继到 Office365迈尔斯·埃里克森回答这个问题:

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

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

好的,我已经完成了#1,我在 DNS 上有这些记录,但是一旦 Office365 识别出我拥有该域,它们在大多数情况下就不再相关了。

这些记录如下:

CNAME 记录: - msoid.plaything.company.com - autodiscover.plaything.company.com

MX 记录:-plaything.company.com (plaything-company-com.mail.protection.outlook.com)

TXT 记录:-plaything.company.com(v=spf1 include:spf.protection.outlook.com -all)

我尝试了 #2,但无论我做什么,office365 都会以“未验证”为由取消连接。我甚至可以尝试简单地 telnet 到端口 25 并尝试发送,但它不起作用。

250 BY2PR01CA007.outlook.office365.com Hello [54.221.245.236] 
530 5.7.1 Client was not authenticated 
Connection closed by foreign host.

有没有人有这样的配置,可以让 Linux 机器上的多个用户通过 office365 使用 postfix 中继邮件?一定有人在做这件事,能告诉我我的设置出了什么问题...

答案1

我认为你需要退一步:)

plaything如果您以身份登录bravo,是否真的需要将 plaything 发送的所有邮件都以 身份发送[email protected]?如果不是,只需以 身份发送所有邮件[email protected],请参阅没有真实互联网主机名的主机上的 Postfix

如果你不能应用这个,那么你将需要发送方相关 SASL 映射。它会增加您的设置的复杂性,因此我会尽力避免这种情况。

最后但并非最不重要的一点是,如果plaything要以 发送邮件[email protected],您需要调整myhostname和/或myorigin删除该relayhost设置。在这种情况下,plaything将直接发送所有邮件,并具有邮件服务器信誉等所有优点和缺点。

相关内容