我有一个安装了 sendmail 和 majordomo 的 debian 服务器,用于处理一些邮件列表的来信。有些用户同时在多个列表中,当邮件发送到两个列表时,他们会收到两次邮件。虽然这不是意料之外的行为,但这些人只收到一次邮件就好了。
所以基本上的问题是:有没有办法可以防止向多个(majordomo)列表中的收件人发送多次邮件?
奇怪的是,我自己在使用内部用户(作为服务器的一部分)或向我的学生邮件帐户发送邮件时不会收到两次邮件。不知何故,这些服务器会过滤掉重复的邮件。
对我来说可行的解决方案是在发送消息时重写标题[电子邮件保护]和[电子邮件保护]进入[电子邮件保护]。 在哪里[电子邮件保护]包含 list1 和 list2 的所有成员,且无重复。
答案1
在您的 majordomo 源代码分发版中存在Doc/majordomo.ora
。在那里,您会发现一个建议,使用 -odq 开关运行 sendmail,以便首先让 sendmail 排队,而不是立即尝试发送它们。因此,在您的代码中majordomo.cf
有以下行:
$mailer = "$sendmail_command -oi -odq -oee -f\$sender";
Sendmail 会扩展它必须处理的列表并向其发送邮件。当它已扩展并开始向第一个列表的成员发送邮件时,它将扩展并向第二个列表的成员发送邮件。Sendmail 会尝试识别相同的消息,以便向每个发件人发送一次,但如果在列表 1 上有一些收件人已经在处理,而在列表 2 扩展之前,他们也在处理,那么他们将收到两次。因此,您可以-odq
将消息放在两个列表的队列中。如果两个列表的消息相同,那么合并后的收件人将向每个用户发送一次。