我有在后缀设置别名,如下所示:
[email protected]: [email protected], [email protected] ...
当一封电子邮件被发送到[email protected],并且该别名中的任何收件人是cc:ed这是相当普遍的(即:“全部回复”),电子邮件将被重复发送。 例如,如果电子邮件发送到[email protected],并且[email protected]是cc:ed,它将被交付两次。 根据Postfix常见问题解答 ,这是devise的,因为Postfix并行地发送电子邮件而不扩展组,这使得它比sendmail更快。 现在这一切都很好,但是可以在发送电子邮件之前configurationPostfix实际删除重复的收件人吗?
我发现网上有很多人都有同样的问题,但我还没有find答案。 如果在Postfix中无法做到这一点,是否可以在途中做到这一点? 我已经试过教育我的用户,但这恐怕是徒劳的
我在Mac OS X Server 10.6上运行postfix,amavis设置为content_filter,dovecot设置为mailbox_command。 我已经尝试设置procmail作为一个smtp传递content_filter(根据下面的build议),但我似乎无法得到正确的。 由于各种原因,我不能取代标准的OS Xconfiguration,这意味着后缀,amavis和dovecot保持放置。 如果我愿意的话,我可以补充一下。
由于结构化的方式,Postfix不知道重复的电子邮件。 通过使用procmail作为您的交付代理,可以做你所build议的。
实质上,每个来自客户端的消息都应该使用一个唯一的Message-Id。 在发送给多个人的情况下,Message-Id应该是相同的,所以我们保存任何我们已经看到并丢弃的Message-Id头,以及与该列表匹配的未来头。
从http://novosial.org/procmail/
:0 Wh: msgid.lock | formail -D 8192 ~/.procmail/msgid.cache
有一种方法如何做到这一点,但不使用Postfix本身。
如果您正在使用Sieve的Pigeonhole实现最新的Dovecot,则可以使用特殊的扩展来进行传递重复数据删除。 在2.2.18之前的Dovecot中,这个扩展的名称是“vnd.dovecot.duplicate” ,默认情况下它是禁用的,在较新的版本中, 扩展叫做“duplicate” ,应该已经启用,但明确地启用它危害。
/etc/dovecot/conf.d/90-sieve.conf:
plugin { sieve = ~/.dovecot.sieve sieve_dir = ~/sieve sieve_before = /mnt/mail/users/global_sieve/deduplicate.sieve # sieve_before2 = /mnt/mail/users/global_sieve/antispam.sieve sieve_extensions = +vnd.dovecot.duplicate # for dovecot < 2.2.18 #sieve_extensions = +duplicate # for dovecot >= 2.2.18 }
然后创buildsieve脚本来处理重复数据删除本身(您可以根据需要调整文件名)。
/mnt/mail/users/global_sieve/deduplicate.sieve:
require "vnd.dovecot.duplicate"; # for dovecot < 2.2.18 # require "duplicate"; # for dovecot >= 2.2.18 if duplicate { discard; stop; }
使用sievec编译脚本,确保脚本可以被dovecot用户读取。 更多在Dovecot文档。
如果您正在使用Cyrus,则可以使用suppress_duplicates = yes启用重复的邮件传递抑制function。
这是从一些旧的后缀常见问题:
Postfix发送重复的邮件有些人会抱怨Postfix发送重复的邮件。 无论何时将一封邮件发送到多个到达同一用户的地址,都会发生这种情况。 这种情况的例子是:
一条消息发送给用户,并发送给列出用户的别名。 用户直接收到邮件的一个副本,通过别名收到一个副本。
- 一条消息被发送到列出用户的多个别名。 用户通过每个别名接收邮件的一个副本。
有些人甚至会争辩说这是“正确”的行为。 这可能更多的是一个期望和习惯的问题。
这只能通过使Postfix变慢来“固定”。 在上面的例子中,Postfix首先必须在开始任何传递之前完全展开所有分发列表。 通过devise,Postfix并行地将邮件递送到不同的目的地,本地递送也不例外。 这就是为什么Postfix可以比sendmail更快。
所以通过devise,你正在看到这种行为。 也许如果你发现一个内容filter可以消除重复的消息ID,你可以在交付事件后消除。
Sendmail没有这个问题,因为它首先展开所有内容,并删除重复项。
官方的解决scheme是在这里.. http://osdir.com/ml/mail.postfix.devel/2007-05/msg00010.html
duplicate_filter_limit(10000)别名(5)或虚拟(5)别名扩展或showq(8)队列显示(使用较早的Postfix发行版时,默认限制为1000)时logging的地址的最大数目。
duplicate_filter_style(strict)重复的收件人过滤策略:严格或实用。
enable_original_recipient=no
我把它放在我的main.cf,它工作正常,但只有从我的域发送的邮件。 我仍然有重复,如果我发送电子邮件从我的域外(雅虎我的域为例如)。
来源: http : //article.gmane.org/gmane.mail.postfix.user/119783
一个适用于我的解决scheme是在master.cf添加-o receive_override_options=no_address_mappings
这里的文档: http : //www.postfix.org/postconf.5.html#receive_override_options