背景:
- 我们有少量主机(运行 sendmail),每个主机充当几个域的 MX。
- 每个域都通过 sendmail/cf 进行处理
/etc/mail/virtusertable
,具有一组已知收件人和一条全部拒绝规则。 - 每个主机上发往邮政局长的邮件别名为 root,而 root 又别名为
root+<host>@ourdomain.com
。 - ourdomain.com 的 MX 是 Google Apps,
[email protected]
是一个转发给管理员的简单组。 - Google Apps 会在 SMTP 阶段拒绝某些电子邮件,通常是因为包含非法附件(而不是接受它们并将其归档为垃圾邮件)。
问题:
假设有一封特定的垃圾邮件发送到某virtusertable
条目中的某个域:
- 如果收件人地址拒绝该邮件,那么 sendmail 将尝试向发件人发送 DSN。
- 如果该发件人也拒绝该邮件(因为它是伪造的发件人,并且发件人的 MX 将该邮件作为垃圾邮件拒绝),则 sendmail 会向邮件管理员发送 DSN。
- 上面详述的路由发生了,并且...Google Apps 也拒绝了该邮件。
- sendmail 现在放弃并出现“savemail panic”,并将邮件永远留在队列中。
- 我们的邮件队列塞满了垃圾邮件
有什么方法可以让 sendmail 丢弃被下一个 virtusertable 跳转拒绝的消息(即问题描述中的步骤 1 之后)?或者有人对此有其他解决方案吗?
答案1
最后,我们放弃在 sendmail 端修复这个问题,咬紧牙关,打开钱包,购买了 Google Apps Premium,这样我们就可以告诉 GA 接受来自充当 MX 的服务器的所有电子邮件。