配置 sendmail 拒绝没有发件人地址的电子邮件

配置 sendmail 拒绝没有发件人地址的电子邮件

我的 MTA 收到大量没有指定发件人地址的电子邮件,例如:

Sep 15 17:09:57 mta1 sm-mta[46864]: STARTTLS=server, relay=mx01.aquila-capital.de [83.236.242.254], version=TLSv1/SSLv3, verify=FAIL, cipher=AES128-SHA, bits=128/128
Sep 15 17:09:57 mta1 sm-mta[46864]: s8FH9vmD046864: from=<>, size=9265, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=Daemon0, relay=mx01.aquila-capital.de [83.236.242.254]

我想立即拒绝它们,不做任何进一步处理。这安全吗?可以为此在 sendmail 中添加哪些规则?

答案1

你要求做的事是个非常糟糕的想法。原因如下:

  • 首先,您很可能会拒绝合法的退回邮件。这意味着您域中的用户可能永远不会知道他们发送的电子邮件是否由于地址输入错误或其他错误而未送达。
  • 其次,其他服务可能会启动 SMTP 会话来验证电子邮件地址的正确性。您的用户的电子邮件地址可能会在某些网站上被拒绝,因为无效,并且某些域可能不再接受来自您域的邮件。

我的建议是,你应当做以下事情:

  • 始终接受<>作为发件人地址。
  • 如果RCPT地址不存在,则550无论发件人地址是什么,都使用代码拒绝。
  • 如果可能的话,您可以在结尾处DATA扫描内容以查找Message-ID来自您域的邮件。如果没有找到,您可以在结尾处拒绝该邮件DATA
  • 无需担心有关尝试将邮件退回到不存在地址的日志消息。没有人会为该电子邮件感到困扰,因为它并未送达。
  • 如果需要,请创建一个不太详细的辅助日志文件。

相关内容