去除postfix群组重复邮件

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

解决方法可以修改 POSTFIX main.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>[email protected]
Fri Jan 25 09:29:17 CST 2013 Message-ID: <011501cdfa9b$bc46bdc0$34d43940$@com>[email protected]
Fri Jan 25 09:31:05 CST 2013 Message-ID: <011d01cdfa9c$259709b0$70c51d10$@com>[email protected]
Fri Jan 25 09:34:28 CST 2013 Message-ID: <012201cdfa9c$d4b4e700$7e1eb500$@com>[email protected]
Fri Jan 25 09:34:30 CST 2013 Message-ID: <012201cdfa9c$d4b4e700$7e1eb500$@com>[email protected]
Fri Jan 25 09:47:06 CST 2013 Message-ID: <012701cdfa9f$b7b88640$272992c0$@com>[email protected]
Fri Jan 25 09:47:06 CST 2013 Message-ID: <012701cdfa9f$b7b88640$272992c0$@com>[email protected]
Fri Jan 25 09:47:06 CST 2013 Message-ID: <012701cdfa9f$b7b88640$272992c0$@com>[email protected]
Fri Jan 25 09:47:06 CST 2013 Message-ID: <012701cdfa9f$b7b88640$272992c0$@com>[email protected]
Fri Jan 25 09:47:06 CST 2013 Message-ID: <012701cdfa9f$b7b88640$272992c0$@com>[email protected]
 
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
        }
}

你可能感兴趣的:(postfix,重复邮件)