Exim并收到大量收件人列表的电子邮件

我在运行Debian的Exim4上configuration了接收多个域的邮件。 Exim设置为将收到的所有电子邮件转发到其中一个域。 这个盒子configuration了一个所有东西都进来的catchall邮箱。

我的问题是,当一个电子邮件发送到域,其中包含大量的地址(全部到相同的域,但不同的用户),Exim将通过多个连接接收单个电子邮件。 这意味着全部邮箱都会收到包含完整收件人列表的单个邮件的多个副本

例如,我可以通过发送包含500个收件人的gmail帐户(例如[email protected]; [email protected]; [email protected];等等,总共500个)的电子邮件来复制该邮件。 Exim以20条消息(每个25个收件人;看起来是gmail服务器设置)收到消息。 所以邮件信箱收到20条消息,每条消息都包含500个地址。

我很确定我明白为什么会发生这种情况,但有什么办法可以将Eximconfiguration为只接收一次,或者将它合并为一个? 有没有什么可以做我的目的,还是我在发送电子邮件服务器的摆布?

这是一个过程,造成浩浩荡荡的查询邮箱和parsing每个电子邮件中的每个收件人。

更新:另一个可能性:我可以告诉exim只转发第一个消息,而忽略其余的?

更新2:我如何知道哪些收件人的电子邮件是为了? 所以,如果exim收到500个收件人的邮件,但是只能收到25个邮件,那我该如何判断这个收件人的意思? 我在邮件标题中看到的最接近的内容是“Received:from SMTPD-FWD by”,这是25个收件人中的第一个。 我可以有进出口插入所有25到标题莫名其妙吗?

Exim的默认configuration是允许每封邮件无限制的收件人。 这由recipients_max参数控制。 如果你越来越less,那么你的configuration是限制收件人,或问题是上游。

正如您可能已经注意到,Exim只会在多个扩展创build相同的邮件传递地址时递送一次。 它只是不通过消息的方式工作。

对于所有这些消息, message_id应该是相同的,您可能想要使用procmail或类似的程序将重复文件存储在不同的文件夹中。 网上有些例子可以做类似于你想做的事情。

编辑:你可能会得到Exim使用milter做过滤出重复。 如果启用了数据库访问,则可以在数据ACL中构build一个筛选器来检测重复项。 但是,使用像procmail这样更专业化的MDA来传递消息到catchall地址可能会更好。 对于部分或全部用户来说,Exim和procmail都可以很好的兼容。

有现有的食谱处理重复的消息。 蒂莫有一个procmail规则来检查发送的重复邮件是快速连续 。 这应该处理消息的message_id更改的情况。