拒绝:来自未知的 RCPT[]:450 4.7.1 客户端主机被拒绝:找不到您的反向主机名

拒绝:来自未知的 RCPT[]:450 4.7.1 客户端主机被拒绝:找不到您的反向主机名

从我的本地网络发送电子邮件很顺利。也可以通过 Thunderbird 或使用本地安装的 Roundcube 进行远程发送。但现在我在亚洲,并尝试使用 Thunderbird 发送电子邮件。日志中出现以下错误:

postfix/submission/smtpd[4588]: NOQUEUE: reject: RCPT from unknown[110.170.163.146]: 450 4.7.1 Client host rejected: cannot find your reverse hostname, [110.170.163.146]; from=<<me>@<mydomain.com>> to=<<me>@<mydomain.co>> proto=ESMTP helo=<[10.10.3.55]>

dig +short -t A mail.<mydomain.com> 给出:xxx.xxx.xxx.xxx,我的服务器的 IP。

dig +short -x 110.170.163.146 给出:110-170-163-146.static.asianet.co.th。在这里你可以看到,我现在在泰国。

在 Thunderbird 中我有:

Server Name: mail.<mydomain.com>
Port: 587
Connection security: STARTTLS
Authentication method: Normal password
Username: <me>@<mydomain.com>

master.cf 中的所有 smtpd 行:

submission     inet     n    -    y    -    -    smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_tls_wrappermode=no
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=inet:10.89.0.10:12345

main.cf 中的所有 smtpd 规则:

smtpd_tls_cert_file = /etc/letsencrypt/live/mail.<mydomain.com>/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.<mydomain.com>/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_sasl_auth_enable = yes
smtpd_tls_auth_only = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = inet:dovecot:12345
reject_unauth_destination, check_policy_service unix:private/spfcheck check_sender_access /etc/postfix/sender_access check_recipient_access /etc/postfix/recipient_access
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_policy_service unix:private/spfcheck
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated,
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname
smtpd_client_restrictions = permit_mynetworks, reject_unknown_reverse_client_hostname

据我所知,错误消息与“反向主机名”有关。我超出了正常主机名的范围。但 Thunderbird 应该可以登录并发送电子邮件。

有人知道如何解决这个问题吗?

答案1

实际情况是,您的submission服务正在继承这些main.cf选项。这些与 Postfix 默认值的偏差对于服务器到服务器的邮件交换来说可能并不不合理。但对于从任何地方(不是通过固定上行链路或 VPN)连接的客户端,不应期望可解析的反向名称。

也没有必要要求两个都反向名称和 sasl。身份验证期间提交的名称无论如何都是更有用的标识符(唯一、本地管理、已验证)。

建议的修复:覆盖 master.cf 中仅身份验证端口的相关选项,就像已经对要求身份验证的限制集所做的那样:

submission     inet     n    -    y    -    -    smtpd
  -o ...
  -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
  -o smtpd_client_restrictions=
  -o ...
  -o ...

进行更改后,重新加载配置(取决于分布,类似于systemctl reload postfix)并检查启动期间生成的日志。

相关内容