如果用户a加入了两个以上的邮箱群组如B、C,当用户发邮件给B、C两个群组时,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>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
}
}