服务器 频道

用procmail做域过滤

  【IT168 服务器学院】假设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上测试通过.其他系统应该也一样.
  

0
相关文章