用maildrop实现域过滤规则

12/3/2006来源:Qmail人气:7446

时候整个域的管理都要用到过滤规则.琢磨了一下,把我的实现方法整理出来,请大家指正.

先安装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上测试通过.其他系统应该也一样.
,