procmail过滤邮件之我所见.

发表于:2007-06-08来源:作者:点击数: 标签:
在CU各位朋友的帮助下,已经成功实现使用procmail过滤邮件主题,发件人地址.域,附件等功能.现在贴出来,供大家参考. 首先确定 服务器 是否安装procmail包,可到此处下载procmail-3.22-7.i386.rpm: ftp://202.194.116.12/pub/RedHat/rpms/ rpm-ivhprocmail-3.22-7

在CU各位朋友的帮助下,已经成功实现使用procmail过滤 邮件主题, 发件人地址. 域,附件等功能.现在贴出来,供大家参考.
首先确定服务器是否安装procmail包,可到此处下载procmail-3.22-7.i386.rpm:
ftp://202.194.116.12/pub/RedHat/rpms/
rpm -ivh procmail-3.22-7.i386.rpm
如果已安装显示如下,并可以在/etc下找到procmailrc文件(如无可以自己编辑)
[root@jason tmp]# rpm -aq|grep procmail
procmail-3.22-7
root@jason etc]# ls procmailrc -l
-rw-r--r--    1 root     root          413 10月 22 11:32 procmailrc
root@jason etc]# vi procmailrc

#Begin /etc/procmailrc
ORGMAIL /var/spool/mail/$LOGNAME  #指定用户邮件目录
MAILDIR $HOME/
Sendmail /usr/sbin/sendmail                         #指定sendmail所在目录

:0b:                                                                #过滤主题为Thank you的邮件
*^Subject:.Thank you
/dev/null

#过滤从[email protected]发送的邮件 也可编辑/etc//mail/aclearcase/" target="_blank" >ccess文件添加
[email protected]              reject  然后运行makemap hash access.db<access
:0
*^From.* [email protected]           
{                                                             
:0                                                            
/dev/null                                                  
}

 #过滤从域microsoft.com发送的邮件也可编辑/etc//mail/access文件添加
@microsoft.com              reject 然后运行makemap hash access.db<access
:0
*^From.*@microsoft.com              
{                                                         
:0                                                          
/dev/null                                           
}

:0                                                        # 过滤用户名为tony所有域的邮件
*^From.* tony
{
:0
/dev/null
}

:0 B                                          #过滤附件后缀名为exe等的邮件
* ^Content-Type:.*
* name=.*\.(hta|com|pif|vbs|vbe|js|jse|exe|bat|cmd|vxd|scr|shm|dll|SCR)
/dev/null

以上仅是我个人的一点经验,请大家把交流一下防止垃圾邮件的办法.

 seacaptain 回复于:2003-10-22 14:06:58
在qmail+vpopmail的环境里怎样使用procmail

 reidstone 回复于:2003-10-22 16:50:44
[quote:058dec3f77="seacaptain"]在qmail+vpopmail的环境里怎样使用procmail[/quote:058dec3f77]
在虚拟域下设定.qmail-(user name)文件,如:
/home/vpopmail/domains/test.com下有用户aaa,则建文件.qmail-aaa,文件内容如下:
|/usr/bin/procmail -p -m ./aaa/Maildir/.procmailrc
在用户aaa的邮箱目录下建过滤规则文件,具体请参考楼定, 

 liuwping 回复于:2003-10-23 08:25:17
总算对 PROCMAIL 有点了解了, 请问如要在 QMAIL VPOPMAIL 下,用PROCMAIL 的过滤怎样对QMAIL 的整个DOMAIN 都起作用, 因为这样我不用建立每个USER的。QMAIL-USERNAME 文件啊! 谢谢!

 liuwping 回复于:2003-10-23 08:29:58
你好,请问可以设定 PROCMAIL 将 寄件者是 USER1@DOMAIN。COM 都转寄给 USER2@DOMAIN。COM ? 感谢!

 reidstone 回复于:2003-10-23 08:44:19
[quote:ec9dc47bb6="liuwping"]你好,请问可以设定 PROCMAIL 将 寄件者是 USER1@DOMAIN。COM 都转寄给 USER2@DOMAIN。COM ? 感谢![/quote:ec9dc47bb6]
系统级的应用我也不会,呵呵~~
用户级的我还是看了好多资料和帮助才了解的,大部分资料对于系统级的应用不是没有,就是说没有完成,:(

:0:
* ^[email protected]
[email protected]

 liuwping 回复于:2003-10-23 09:01:47
:0: 
* ^[email protected] 
[email protected]

请问上面的意思是不是 寄给 [email protected] 的电邮就 给[email protected] 
请问上面是 COPY一份给 [email protected], 还是直接转给 [email protected] 本来给 [email protected] 的邮箱中就没了啊!

感谢你抽空给我看看吧,我找这个功能好久了,刚学LINUX,谢!

 reidstone 回复于:2003-10-23 09:19:31
直接转发的
如果是要同时发送到多个用户的话
* ^[email protected] 
! (原接收地址) [email protected] [email protected] ...

相关的应用请参考下面的资料
http://www.stimpy.net/procmail/tutorial/ref/

 liuwping 回复于:2003-10-23 10:05:52
感谢中,谢!

 liuwping 回复于:2003-10-23 10:54:55
can_not_open_new_email_file_errno=2_file=|/usr/bin/procmail_-p_-m_/home/vpopmail/domains/luckytoy.com.hk/backup/Maildir/.procmailrctmp/1066877567.23108.redhat2.luckytoy.com.hk,S=1588/did_0+0+1/

 liuwping 回复于:2003-10-23 11:03:21
在MAILLOG 中发现在有上面错误,
我的环镜是: QMAIL VPOPMAIL MYSQL 下用QMAILSCANNER 并有设定QMAIL 下发的所有电邮都给一份[email protected]  
我在 /home/vpopmail/domains/luckytoy.com.hk/backup/ 下建 。QMAIL 文件,文件内容是 |/usr/bin/procmail -p -m /home/vpopmail/domains/luckytoy.com.hk/backup/.procmailrc

。PROCMAILRC 的文件内容是:
:0: 
* ^[email protected]
[email protected] 

即将 [email protected]寄出的电邮(因为所有人发电邮BACKUP都有一份的)给一份给 [email protected], 但出现上面错误
我主要想做的是 上面的功能, 谁能给我看看,还有其它方法,或怎样改吗? 谢了!

 reidstone 回复于:2003-10-23 14:22:34
你的.qmail-backup文件应该在虚拟域目录下,即:/home/vpopmail/domains/luckytoy.com.hk/,而.procmailrc文件应该建在backup/Maildir/目录下,如果是将寄出的信做过滤,我也不清除的,呵呵~~

 liuwping 回复于:2003-10-23 14:57:30
请问你有QQ吗? 我的QQ 37193287 有空吗? 想请教你一下!

我的QMAILBACKUP 是QMAIL 本身的功能, 即KEEP ALL IN AND OUT MAIL 到 [email protected] 下的, 所以我要在BACKUP 下再过滤, 将[email protected] 发出的电邮都 给一份给 [email protected] 的, 
请问现在 我这种情况, .qmail 同 .procmailrc 文件都要放到:/home/vpopmail/domains/luckytoy.com.hk/backup/Maildir 下吗? 谢! 

 liuwping 回复于:2003-10-23 14:58:25
我在线等!

 reidstone 回复于:2003-10-23 15:00:59
我是通过代理上网,公司不让用QQ的,你是不是修改qmail的extra.h文件来备份邮件的?

 liuwping 回复于:2003-10-23 15:19:44
正是的, 这样将所有的电邮都给 [email protected] 之后我想在 BACKUP  邮箱中 作过滤, 将 一些人发的所有电邮 给另一个人,上面的列子是 将liuwping  发的电邮都给 wongjun ,这样可以做到 SEND A COPY  功能啊, 也就是将 一些用户只要他发电邮都 自动给他的上司一份电邮! 这个功能 在企业内很有用的, 能帮忙解决吗?

 reidstone 回复于:2003-10-23 15:31:32
这好像侵权哦,呵呵
既然你已经修改了extra.h文件,你发邮件的时候已经自动发了一个COPY过去啊,还要加什么规则啊,让你的老板用log用户登录就可以看了啊

 liuwping 回复于:2003-10-23 15:54:01
要看的人不是一个,即BACKUP 中的所有电邮不能给一个人看, 不是给给BOSS 看,是自已给他的上司,上司的自动给他的上司,  如全部给BOSS 看,他哪有时间,他只是看他直属的几个经理, 经理的只看他下的主管,主管看他下的马仔, 这样只是方便而已, 因为彼此间不需问 “你那个什么事搞定了没有?” ,因为下属发的电邮上司都可以看到,这样办公室中好安静的,并是有条有理,因为有明文电邮作证, 如口头讲,有时下属忘了,或下属讲上司没同他讲,有时就是有理讲不清,有了电邮后,大家做事都通过电邮, 这就是电邮的用途吧,  BOSS 同过电邮可知天下事啊!
有SEND A COPY 功能的电邮SERVER  4年前国外的软件很多有的, 在WINDOWS下用的 FTGATE OFFICE 都有的!所以没这个功能 我们公司不用QMAIL, 我都搞这个功能2个月了,还搞不定,麻烦你们想想办法吧!

 reidstone 回复于:2003-10-23 16:41:33
也很简单的,只要在这个备份用户下设置过滤规则就可以啊,相关的发件人和收件人的邮件COPY发送到指定的用户邮箱里就可以了哦

 liuwping 回复于:2003-10-23 16:55:30
我现在就是不知具体怎么写啊,能帮我抽空写写吗,我对写那些不会啊, 
[email protected] 发的电邮都给 [email protected] 就可以了!
谢谢先!
帮帮我吧!

 liuwping 回复于:2003-10-23 17:06:59
总是在MAILLOG 中发现出现 can_not_open_new_email_file_errno=2_file=|/usr/bin/procmail_-p_-m_/home/vpopmail/domains/luckytoy.com.hk/backup/Maildir/.procmailrctmp/1066877567.23108.redhat2.luckytoy.com.hk,S=1588/did_0+0+1/
 这个错误,估计是什么问题啊!~

 reidstone 回复于:2003-10-24 08:49:27
[quote:76b7a01363="liuwping"]我现在就是不知具体怎么写啊,能帮我抽空写写吗,我对写那些不会啊, 
[email protected] 发的电邮都给 [email protected] 就可以了![/quote:76b7a01363]
如果备份用户为backup,则在虚拟域下建文件.qmail-backup,内容如下:
|/usr/bin/procmail -p -m ./backup/Maildir/.procmailrc
而backup的.procmailrc过滤规则为:

VERBOSE=off
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
#LOGFILE=/var/log/procmail.log
MAILDIR="./backup/Maildir/"

:0
* ^From.*liuwping
! wongjun(只转发)
! liuwping wongjun(同时发送)

 liuwping 回复于:2003-10-24 09:20:27
感谢, 我试试先!

 liuwping 回复于:2003-10-24 13:41:51
感谢reidstone  ,总算成功了!

原文转自:http://www.ltesting.net