这实际上是这篇文章的后续问题:Postfix aliases and duplicate e-mails, how to fix?
(我没有足够的声誉来评论那篇文章。)
正如第一个答案所暗示的那样,我已经设置了我的 Postfix + Dovecot - 通过使用丢弃重复项的筛子脚本。它在大多数情况下运行良好。当收件人超过配额时,它会奇怪地工作。
这是第一次交付尝试的日志。正如预期的那样,它因 tempfail Quota 超出而失败:
AF4481700032: to=<?@?>, relay=?[private/dovecot-lmtp], delay=0.05, delays=0.05/0/0/0, dsn=4.2.2, status=deferred (host ?[private/dovecot-lmtp] said: 452 4.2.2 <?@?> Quota exceeded (mailbox for user is full) (in reply to end of DATA command))
大约 10 分钟后,再次尝试:
dovecot: lmtp(?)<1742912><+EYHBXjidmBAmBoAcAY70w>: sieve: msgid=<489132c2-7b77-cd2f-ce60-439f6558ddcf@?>: marked message to be discarded if not explicitly delivered (discard action)
postfix/lmtp[1742691]: AF4481700032: to=<?@?>, relay=?[private/dovecot-lmtp], delay=431, delays=431/0/0/0, dsn=2.0.0, status=sent (250 2.0.0 <?@?> +EYHBXjidmBAmBoAcAY70w Saved)
postfix/qmgr[421343]: AF4481700032: removed
在我看来,Dovecot 的筛子在第一次尝试传递时记录了消息 ID,尽管传递被拒绝了。
在第二次投递尝试中,Dovecot 的筛子显然认为它看到了重复邮件,并丢弃了邮件。
这种情况有什么解决方法吗?
这实际上是 Dovecot 的筛子实现中的一个错误。这个错误有一个解决方法(使用配额插件),但是这个解决方法对 aliases 没有帮助。