Postfix / Dovecot SASL 身份验证仅在主域上有效

Postfix / Dovecot SASL 身份验证仅在主域上有效

我已经有一个 Postfix 服务器运行了三个月,一切顺利。用户通过连接到 mail.mydomain.com(使用 SSL)在各自的邮件客户端中登录服务器,这种设置从未出现过任何问题。

然而,大约一周前,我需要在这个服务器上设置另一个域名。它已经托管了多个域名,但每个人都通过 mail.mydomain.com 连接。即使他们的电子邮件地址可能是[电子邮件保护],他们登录到 mail.mydomain.com 的服务器。但是,对于这个新域名,用户必须登录到 mail.theirdomain.com。

因此,A 记录已设置 - mail.theirdomain.com 指向我的 IP 地址,certbot 顺利为我获取了多域证书,我们应该可以开始比赛了。他们可以登录 IMAP 并完美查看他们的邮件。但是,发送邮件是另一回事。

当用户登录 mail.mydomain.com 并发送电子邮件时,将打印以下内容/var/log/mail.log

postfix/smtpd[29147]: connect from myPC.lan[192.168.0.241]
postfix/smtps/smtpd[30562]: Anonymous TLS connection established from myPC.lan[192.168.0.241]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchan>
postfix/smtps/smtpd[30562]: 9A9DC20E15: client=myPC.lan[192.168.0.241], sasl_method=PLAIN, sasl_username=them
postfix/cleanup[30580]: 9A9DC20E15: message-id=<[email protected]>
opendkim[517]: 9A9DC20E15: DKIM-Signature field added (s=default, d=theirdomain.com)
mail-pi postfix/qmgr[30134]: 9A9DC20E15: from=<[email protected]>, size=835, nrcpt=1 (queue active)
postfix/smtp[30581]: 9A9DC20E15: to=<[email protected]>, relay=outlook-com.olc.protection.outlook.com[104.47.13.33]:25, delay=7.4, delays=0.1/0.07/3.3/3.9, dsn=2>
postfix/qmgr[30134]: 9A9DC20E15: removed

但是,当尝试使用配置为使用 mail.theirdomain.com 的邮件客户端执行完全相同的操作时;

postfix/smtpd[29147]: connect from myPC.lan[192.168.0.241]
postfix/smtpd[29147]: Anonymous TLS connection established from myPC.lan[192.168.0.241]: TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25>
postfix/smtpd[29147]: NOQUEUE: reject: RCPT from myPC.lan[192.168.0.241]: 554 5.7.1 <[email protected]>: Relay access denied; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.0.241]>

但是,他们可以在服务器内部发送邮件。来自[电子邮件保护]发送得很好[电子邮件保护]

有两个关键点让我印象深刻:

  • helo 主机名只是一个 IP 地址,或者(取决于客户端)类似的东西smtpclient.apple- 它应该是吗?我的印象是我们应该将 helo 发送为 mail.mydomain.com。
  • 没有进行 SASL 身份验证,导致消息被拒绝(因为smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

我不认为第一点是个问题,因为我也设定了

smtpd_helo_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname
    check_helo_access hash:/etc/postfix/helo_access

因此,只要我们可以修复 SASL,根据该列表中的第二个标准,HELO 限制也应该可以清除。

但这里我有点不知所措。如果我们从不同的域登录,SASL 为什么不工作?它在 A 记录的另一侧仍然是相同的 IP 地址。为什么它会被区别对待?我是不是错过了某个配置选项?

答案1

作为安克斯刚刚指出,两个日志条目显示客户端上的服务器设置实际上并不完全相同 - 自动配置已假定 mail.theirdomain.com 的端口为 25 且无 SSL,但对于 mail.mydomain.com 却选择正确。我真的应该早点发现这一点。

感谢你的帮助。

相关内容