我如何才能确定我的 sendmail 设置中的转换和过滤器的确切顺序?
我的问题是我收到了已删除帐户的邮件,并且正在对其进行垃圾邮件检查,尽管它应该在知道收件人后立即将其丢弃。
答案1
据我记得,过滤器是按照定义的顺序执行的。即InputMailFilters=milter1, milter2
,配置文件中的所有规则都是按照定义的顺序执行的sendmail.cf
。
自从我上次配置 sendmail 以来已经过去了很长时间,对于所有非标准的东西来说,这总是一件非常麻烦的事(甚至在那时也是如此)。据我记得,sendmail 不会立即检查收件人是否存在,但如果域是本地的,则会在 SMTP 对话期间接受该消息,然后进行进一步处理,如果发现特定用户无效,则稍后发送退回邮件。这可能是您的邮件过滤器即使对于无效收件人也会被执行的原因。
虽然不太理想,但最好的办法可能是启用blacklist_recipients
IIRC,因为这是 SMTP 对话期间执行的测试,并且应该首先阻止指定无效收件人的消息被接受。Sendmail 应该在 SMTP 对话期间拒绝来自这些地址的邮件,并且不做任何进一步的处理:
FEATURE(`blacklist_recipients')
然后你可以将条目添加到access
地图 对于您域中的本地用户和/或地址,其中用户已被删除并且不再应接收邮件:
badlocaluser@ ERROR:550 Mailbox disabled for this username
[email protected] ERROR:550 Mailbox disabled for this username
这会增加一些开销,因为您既需要禁用用户帐户,又需要在访问表中将其“记录”为已删除。