如果用户a加入了两个以上的邮箱群组如BC,当用户发邮件给BC两个群组时,a就会收到两封相同重复的邮件。

解决方法可以修改POSTFIXmain.conf配置文件如下
1、在/etc/postfix/main.conf加入如下参数
enable_original_recipient = no

该参数只在 postfix 2.4.x 版本以及更高版本中有效,2.3.x 系列版本则只在 2.3.14 及更高版本有效
 
2.由于邮件服务器整合了mailscanner+mailwatch,当加入以上参数后影响到了我的mailwatch功能,导致mailwatch获取不To:字段从而使mailwatch web页面的To List栏显示为空白。只能另寻其他办法了,参考上网其他朋友的思路,可以通过maildrop实现过滤重复邮件。如下:
通过获取一封邮件的Message-ID与收件人地址,组合成新的New Message-ID用以确定邮件的唯一性,然后通过maildrop 过滤重复的New Message-ID邮件,去除重复邮件。
a、 生成 New Message-ID:
Fri Jan 25 09:29:17 CST 2013 Message-ID: <011501cdfa9b$bc46bdc0$34d43940$@com>test03@ph.com
Fri Jan 25 09:29:17 CST 2013 Message-ID: <011501cdfa9b$bc46bdc0$34d43940$@com>test01@ph.com
Fri Jan 25 09:31:05 CST 2013 Message-ID: <011d01cdfa9c$259709b0$70c51d10$@com>test02@test.com
Fri Jan 25 09:34:28 CST 2013 Message-ID: <012201cdfa9c$d4b4e700$7e1eb500$@com>test02@test.com
Fri Jan 25 09:34:30 CST 2013 Message-ID: <012201cdfa9c$d4b4e700$7e1eb500$@com>test03@ph.com
Fri Jan 25 09:47:06 CST 2013 Message-ID: <012701cdfa9f$b7b88640$272992c0$@com>test02@test.com
Fri Jan 25 09:47:06 CST 2013 Message-ID: <012701cdfa9f$b7b88640$272992c0$@com>test02@ph.com
Fri Jan 25 09:47:06 CST 2013 Message-ID: <012701cdfa9f$b7b88640$272992c0$@com>test01@ph.com
Fri Jan 25 09:47:06 CST 2013 Message-ID: <012701cdfa9f$b7b88640$272992c0$@com>test03@ph.com
Fri Jan 25 09:47:06 CST 2013 Message-ID: <012701cdfa9f$b7b88640$272992c0$@com>test03@test.com
 
b、 编写过滤规则,在maildrop将邮件投递到用户邮箱时过滤重复的New Message-ID邮件。
操作如下:
/tmp/目录下建立message_id文件,权限修改为maildrop可读写用户与用户组。
修改maildroprc的配置文件如下,默认是不存在这个文件的,需手动建立。
Vim /etc/maildroprc
#delete repetition mail:
if (/^Message-I.*/:hD)
{
        num=`wc -l /tmp/message_id |awk '{print $1}'`
        if ( $num >= 2000 )
        {
                `> /tmp/message_id`
        }
        ok=`grep "$MATCH$LOGNAME" /tmp/message_id > /dev/null 2>&1 && echo 'y'`
        if ( $ok ne 'y' )
        {
                date=`date`
                `echo $date $MATCH$LOGNAME >> /tmp/message_id`
        }
        else
        {
                exit
        }
}