先安装maildrop,不重复了
进入域所在目录
cd /home/vpopmail/domains/xxx.com
编辑.qmail-default文件
vi .qmail-default
内容为:
|/usr/local/bin/maildrop ./.mailfilter
| /home/vpopmail/bin/vdelivermail @#@# bounce-no-mailbox
建立过滤规则文件.mailfilter
vi .mailfilter
内容请参考
http://www.chinaunix.net/jh/14/192282.html
但有点注意,此时内容最后不能加to "./Maildir/"(在单用户中是为了把不符合过滤规则的信件发到用户目录里,而现在不符合过滤规则的信件是要去执行.qmail-default的| /home/vpopmail/bin/vdelivermail @#@# bounce-no-mailbox这句话)
同样注意.mailfilter的属性
chmod 600 .mailfilter
chown vpopmail:vchkpw .mailfilter
这样通常情况下,就会对整个域做过滤了.但这里有个小问题.假如某个用户做了转发或者别名的话,域目录下会生成.qmail-user文件,这样该用户邮件到达时,就会去执行.qmail-user文件的内容,导致无法进行过滤.
所以需要注意的就是,在设置别名或转发的时候,要在生成的.qmail-user文件里也加上这一句
|/usr/local/bin/maildrop ./.mailfilter
保证邮件先进行过滤再分发到用户目录,这样就可以实现了.
假设qmail虚拟域为wangxu.com,现要整个域针对主题包含test的邮件进行过滤拦截,被过滤拦截的邮件均保存在/home/vpopmail/domains/wangxu.com/spammail目录下,以msg.* 命名的文件中,具体实现过程如下:
1、cd /home/vpopmail/domains/wangxu.com/
touch .procmailrc
chown vpopmail:vchkpw .procmailrc
mkdir spammail #被过滤文件的存放处
chown vpopmail:vchkpw spammail
touch /var/log/procmail.log
chown vpopmail:vchkpw /var/log/procmail.log
建立.procmailrc文件
vi .procmailrc
[code:1:31f83bb3df]MAILDIR=./
VERBOSE=off
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
LOGFILE=/var/log/procmail.log
:0:
* ^Subject:.*test
./spammail/ [/code:1:31f83bb3df]
注意这里.和
http://www.chinaunix.net/jh/14/194261.html
相比较,会发现域过滤的.procmailrc少了
[code:1:31f83bb3df]:0
*
./Maildir/[/code:1:31f83bb3df]
这一段代码
2.
修改.qmail-default文件
joe .qmail-default
| preline /usr/local/bin/procmail -t ./.procmailrc
| /home/vpopmail/bin/vdelivermail @#@# bounce-no-mailbox
针对以上信息,系统可以对wangxu.com整个域所接收的邮件进行主题含有test的邮件过滤和拦截.
可以和
http://www.chinaunix.net/jh/14/195027.html
这篇比较一下,应该会很容易看明白实现的思路的
同样也要注意一点.
假如某个用户做了转发或者别名的话,域目录下会生成.qmail-user文件,这样该用户邮件到达时,就会去执行.qmail-user文件的内容,导致无法进行过滤.
所以需要注意的就是,在设置别名或转发的时候,要在生成的.qmail-user文件里也加上这一句
| preline /usr/local/bin/procmail -t ./.procmailrc
保证邮件先进行过滤再分发到用户目录,这样就可以实现了.
以上的这些以及以前写的几篇用maildrop和procmail实现过滤的办法,都在freebsd上测试通过.其他系统应该也一样.
,
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/