我正在尝试使用 postfix 和 dovecot 设置邮件服务器。一切正常,我可以使用 Mozilla Thunderbird 在 IMAP 中连接。但是当我尝试使用 smtp 服务器发送电子邮件时,我遇到了以下问题找不到您的主机名日志中出现错误,并且发送邮件失败:
mail postfix/smtpd[15822]: NOQUEUE: reject: RCPT from unknown[xxx.xxx.xxx.xxx]: 550 5.7.1 Client host rejected: cannot find your hostname, [xxx.xxx.xxx.xxx]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.10.47]>
xxx.xxx.xxx.xxx
是客户端(而非服务器)的 IP 地址。我在 Google 上搜索了一下找不到您的主机名错误,这似乎与 PTR DNS 记录有关。但我的服务器的 PTR DNS 记录似乎配置正确:
这是的结果dig -x yyy.yyy.yyy.yyy
,其中yyy.yyy.yyy.yyy
是我的服务器的 IP 地址:
;; QUESTION SECTION:
;yyy.yyy.yyy.yyy.in-addr.arpa. IN PTR
;; ANSWER SECTION:
yyy.yyy.yyy.yyy.in-addr.arpa. 86400 IN PTR mail.domain.com.
在我的 中/etc/postfix/main.cf
,我有以下关于 smtp 限制的内容:
## Customized smtpd paramters
smtpd_banner = $myhostname ESMTP
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks,
reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname,
reject_unknown_helo_hostname, permit
smtpd_recipient_restrictions = reject_unknown_client_hostname,
reject_unknown_sender_domain, reject_unknown_recipient_domain,
reject_unauth_pipelining, permit_mynetworks,
permit_sasl_authenticated, reject_unauth_destination,
reject_invalid_hostname, reject_non_fqdn_sender
smtpd_sender_restrictions = reject_unknown_sender_domain,
reject_sender_login_mismatch
smtpd_sender_login_maps = $virtual_mailbox_maps
在我的中/etc/postfix/master.cf
,只有默认值,没有任何限制:
smtp inet n - - - - smtpd
我还可以补充一点,我正在使用非自签名证书的 sasl 身份验证,并且我的服务器是 Debian Wheezy,但我认为这与我的问题无关。
关于如何解决我的问题或在哪里查找有什么线索吗?
答案1
您已将服务器设置为拒绝 HELO 中使用的无效和未知的主机名。
smtpd_helo_restrictions = permit_mynetworks,
reject_non_fqdn_helo_hostname, reject_invalid_helo_hostname,
reject_unknown_helo_hostname, permit
(另外,那里的那行以 结尾permit
;您缺少部分配置。)
如果您希望能够从未发出具有有效主机名的正确 HELO 的客户端发送电子邮件,请删除reject_invalid_helo_hostname
和reject_unknown_helo_hostname
。