我已经使用 postfix、dovecot 和 squirrel mail 设置了一个内部网电子邮件系统,该系统运行良好,我可以向系统上的所有用户发送和接收邮件。我推测问题出在 postfix 配置中,因为当我配置 Thunderbird 发送邮件时,我收到以下错误:
An error occurred while sending mail. The mail server responded: 4.1.8 <[email protected]>: Sender address rejected: Domain not found. Please check the message recipient [email protected] and try again.
以下还有相关的系统日志条目:
NOQUEUE: reject: RCPT from host1.intranetdomain.com [More Information] [192.168.11.1 [More Information] ]: 450 4.1.8 <[email protected]>: Sender address rejected: Domain not found; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[127.0.0.1 [More Information] ]>
我在 DNS 服务器上配置了 MX 记录,当我向它们查询这些 MX 记录时,它们会做出适当的响应,因此我认为这不是问题所在。我认为我的问题是由以下默认配置引起的:
smtpd_recipient_restrictions = reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sender_restrictions = reject_unknown_sender_domain
由于这是在内部网络上,并且不会暴露给整个互联网,我可以安全地删除哪些选项?
答案1
smtpd_sender_restrictions = reject_unknown_sender_domain
不要接受来自不存在的域的邮件。(来源)
reject_unknown_recipient_domain
当 Postfix 不是收件人域的最终目的地时拒绝请求,并且 RCPT TO 域具有 1) 没有 DNS A 或 MX 记录或 2) 格式错误的 MX 记录(例如长度为零的 MX 主机名的记录)(Postfix 版本 2.3 及更高版本)(来源)
如果您需要更改两者才能使其正常工作,您是否必须在本地 DNS 中伪造发件人域或将其添加到/etc/hosts
服务器上的文件中。根据解释,如果 postfix 无法查找域,它将拒绝它。
对于第二个问题,您是否应该在服务器 /etc/hosts 文件中添加接收方域。解释:Dovecot 使用虚拟传输,因此据我所知,Postfix 不被视为最终目的地,您需要有正确的“路径”才能到达目的地。如何操作?将 DNS A 记录(添加到服务器主机文件)或正确的 MX 记录添加到您的本地 DNS。
对于您的问题:是的,您可以安全地删除,但这会关闭上面提到的过滤器。
答案2
您必须添加以下行:
my_destination = intranetdomain.com, host1.intranetdomain.com, localhost
它会告诉 postfix 这台机器负责处理发送到这个域/主机的电子邮件。
如果这是您发送/接收内部电子邮件的唯一入口/出口点,那么这就是您所需要的。另一方面,正确设置 DNS 服务器、为您的域添加 MX 记录并将其指向您的 MTA 始终是明智之举。
建议保留localhost
上面的行,以便它可以处理由其他守护进程发送到/来自 root 的内部电子邮件。