Postfix 配置检查收件人

Postfix 配置检查收件人

我已经在 Ubuntu 16 上设置了我的 Posfix 电子邮件 SMTP 服务器,并且它正在运行。我以前使用托管公司的 SMTP 服务器,但我更喜欢使用自己的服务器。

我正在使用 Java Mail 发送电子邮件,但不同之处在于,当我通过托管公司发送且收件人地址错误时,我得到:

com.sun.mail.smtp.SMTPAddressFailedException:450 4.1.2:收件人地址被拒绝:找不到域

但是当我用 Postfix 发送时不会抛出异常。我检查了 Postfix 日志,消息是:

操作:失败状态:5.4.4 诊断代码:X-Postfix;找不到主机或域名。名称服务错误[电子邮件受保护]类型=AAAA:找不到主机

但这永远不会作为 java 异常传播。

有人知道如何设置 Postfix 来表现同样的行为吗?

谢谢,雨果

答案1

普京reject_unknown_recipient_domainsmtpd_recipient_restrictions permit_mynetworkspermit_sasl_authenticated和/或permit_tls_clientcerts

如果reject_unknown_sender_domain配置中缺少,或者permit_*之前出现reject_unknown_sender_domain,则 postfix 将允许所有符合允许规则的客户端发件人发送电子邮件,而无需检查收件人域。 Postfix 将接受传入的邮件,将其排队,并且仅在尝试传递邮件时才注意到域不存在......然后退回邮件。

如果reject_unknown_sender_domain首先出现,则会检查所有客户端,无论它们是否匹配规则permit_*,并且电子邮件将被拒绝并显示 5xx 代码。

在 postfix 中,规则的顺序总是很重要的。

例子:

如果您有以下内容main.cf

smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/junk,
  check_client_access hash:/etc/postfix/junk,
  check_helo_access hash:/etc/postfix/junk,
  reject_unauth_pipelining,
  permit_tls_clientcerts,
  permit_sasl_authenticated,
  permit_mynetworks

reject_unknown_recipient_domain在行前添加某处permit,例如:

smtpd_recipient_restrictions = check_sender_access hash:/etc/postfix/junk,
  check_client_access hash:/etc/postfix/junk,
  check_helo_access hash:/etc/postfix/junk,
  reject_unauth_pipelining,
  reject_unknown_recipient_domain,
  permit_tls_clientcerts,
  permit_sasl_authenticated,
  permit_mynetworks

如果您还没有smtpd_recipient_restrictions规则,请添加一条规则,例如:

smtpd_recipient_restrictions = reject_unauth_pipelining,
  reject_unknown_recipient_domain,
  permit_mynetworks

但是,您应该对配置 postfix 进行更多研究。

相关内容