postfix邮件过滤
在上一篇 RH254小结(二)postfix邮件服务器的搭建 中有提到邮件内容过滤 ,不过由于篇幅所限,写的有些零散,有些东西总有些意犹未尽。这里再写下。在此之前,先了解下过滤技术。postfix 的过滤技术非常的全而细 ,其可以在客户端smtp连接时过虑、HELO 阶段过虑、进行发件人过滤、收件人过虑,邮件头和邮件内容过滤等。前面提到的几种过虑可以参看如下几个参数:
1smtpd_client_restrictions
2smtpd_helo_restrictions
3smtpd_sender_restrictions
4smtpd_recipient_restrictions
一、header_checks 规则与分类
下面接下来了解header_checks ,header_checks规则是一个统称,其规则不仅仅限于狭义的头检测,还包含body和附件等。通过man header_checks 可以获取如下用法:
1#main.cf 文件中增加的规则及分类
2header_checks = pcre:/etc/postfix/header_checks
3mime_header_checks = pcre:/etc/postfix/mime_header_checks
4nested_header_checks = pcre:/etc/postfix/nested_header_checks
5body_checks = pcre:/etc/postfix/body_checks
6milter_header_checks = pcre:/etc/postfix/milter_header_checks
7smtp_header_checks = pcre:/etc/postfix/smtp_header_checks
8smtp_mime_header_checks = pcre:/etc/postfix/smtp_mime_header_checks
9smtp_nested_header_checks = pcre:/etc/postfix/smtp_nested_header_checks
10smtp_body_checks = pcre:/etc/postfix/smtp_body_checks
11# 规则生效的方法
12postmap -q "string" pcre:/etc/postfix/filename
13postmap -q - pcre:/etc/postfix/filename <inputfile
具体的规则分为三部分,格式如下
1正则匹配部分 ACTIONS动作部分 通知信息部分
正则部分以标准的regexp正则为例(实则pcre正则更强大一些,但基本部分两者差别不大):
1、正则格式
1/pattern/flags result //匹配时执行后面定义的动作
2!/pattern/flags result //不匹配时执行后面定义的动作
3if /pattern/flags //条件匹配时的动作, 以endif结束
4endif
5if !/pattern/flags //条件不匹配时的动作, 以endif结束
6endif
注:if语句多用于开篇提到的smtpd规则部分。如:
1if !/^owner-/
2/^(.*)-outgoing@(.*)$/ 550 Use ${1}@${2} instead
3endif
2、正则元字符
1. :代表任意一个字符
2* :代表一个或多个字符
3\ :将一个特别字符取消转义
4^ :匹配行首
5$ :匹配行尾
3、flags部分
1i :忽略大小写,默认为on
2m :多行匹配模式,默认为off
3x : 扩展正则 ,默认为on
4、actions动作
actions动作有DISCARD、DUNNO、FILTER、 HOLD、IGNORE、INFO、PREPEND、REDIRECT、REPLACE、REJECT、WARN ,这里取几个常用的作下说明:
- DISCARD 通知Postfix直接删除邮件,在这种情况下,服务器不对发送者返回任何信息,以便让发送端感觉邮件已经正常发送。只适用于postfix2.0以后的版本,其不支持smtp header/body checks 。
- HOLD 通知Postfix将邮件保存在邮件队列中,以便管理对之进一步处理。
- IGNORE 通知Postfix删除满足过滤条件的那部分内容。
- REJECT 退回邮件,并告知通信原因。
- WARN 将邮件收下来,但将邮件的基本信息记录在日志档内。
- REPLACE 将匹配行替换后发给邮件接收者。
二、常用过虑示例
邮件头过滤:
1/filename\=\".*src\.exe/ REJECT Virus filename is unavailable header
2/filename\=\".*\.cpl\"/ REJECT Virus filename is unavailable header
3/name\=\".*\.bat\"/ REJECT Virus filename is unavailable header
4/name\=\".*\.scr/ REJECT Virus filename is unavailable header
5/^Subject:.*Hello\,.*\,how\ are\ you.*/ DISCARD Virus drop the unavailable header
6/^Subject:.*W32.*removal\ tools$/ DISCARD Virus drop the unavailable header
7/^From:.*rayman\.com\.cn/ DISCARD Commercial unavailable header
8/^From:.*\@263\.net/ DISCARD Commercial unavailable header
9/^To:.*\.TXT@/ DISCARD Commercial unavailable header
10/^To:.*apatite.*\
11/^Subject: .* / REJECT Spam Header Many Spaces
12/^Subject: Free Money/ REJECT Spam Free Money Mails
13/^Date: 19[0-9][0-9]/ REJECT Spam past date
14/name=[^>]*/.(bat|com|exe)/ REJECT Spam Executable Attachements
邮件内容过滤:
1/http\:\/\/168\-news\.com/ DISCARD Commercial drop the unavailable body
2/http\:\/\/.*edms\.tv/ DISCARD Commercial drop the unavailable body
3/mailto\:.*\@126\.com/ DISCARD Commercial drop the unavailable body
4/mailto\:.*\@powererp\.org/ DISCARD Commercial drop the unavailable body
5/0982\-281\-125/ DISCARD Commercial unavailable body
6/www\.email104\.com/ DISCARD Commercial unavailable body
7/\/nomail\.gif\"/ DISCARD Commercial nomail unavailable body
8/\/nomail\.htm\"/ DISCARD Commercial nomail unavailable body
以下是之前一些针对老的邮件病毒过虑的规则:
1############# Part I 病毒攻防 #######################
2/filename/=/"1.*zip/"/ REJECT Virus 不允许该命名的附件(/filename/=/"1.*zip/"/)
3/filename/=/"postcard/.zip/"/ REJECT Virus 不允许该命名的附件(/filename/=/"postcard/.zip/"/ )
4# 1. KLEZ.G 病毒攻防 #####################################
5/^Subject:.*Let/'s be friends/ DISCARD Virus drop the unavailable header
6#/^Subject:.*A/ funny/ game/ DISCARD Virus drop the unavailable header
7#/^Subject:.*A WinXP patch$/ DISCARD Virus drop the unavailable header
8#/^Subject:.*A special funny website/ DISCARD Virus drop the unavailable header
9/^Subject:.*Hello/,.*/,how/ are/ you.*/ DISCARD Virus drop the unavailable header
10/^Subject:.*W32.*removal/ tools$/ DISCARD Virus drop the unavailable header
11/^Subject:.*Worm/ Klez.*immunity.*/ DISCARD Virus drop the unavailable header
12# 4. Sobig #############################################
13/^Subject.*my/ details/ DISCARD Virus drop the unavailable header
14#/^Subject.*your/ details/ DISCARD Virus drop the unavailable header
15#/^Subject.*your/ application/ DISCARD Virus drop the unavailable header
16# 5. 微軟 假好心病毒 ####################################
17#/^Subject.*Last/ Internet/ Pack/ DISCARD Virus drop the unavailable header
18#/^Subject.*Last/ Network/ Pack/ DISCARD Virus drop the unavailable header
19/^From.*MS/ Network/ Security/ DISCARD Virus drop the unavailable header
20# 6. 其他最新 #########################################
21/^Subject.*our/ private/ photos/ DISCARD Virus drop the unavailable header
22/^Subject.*don/'t/ be/ late/!/ DISCARD Virus drop the unavailable header
23# 其他病毒 #############################################
24/^Subject:.*Here/ is/ that/ sample/ REJECT Virus drop the unavailable header
25/^Subject:.*Your.*password/ REJECT Virus drop the unavailable header
26/charset/=/"Windows/-1252/"/ REJECT Virus 本主机不可使用 charset 為 windows-1252 (Sorry, charset=windows-1252 is unavailable header)
27#/^Subject/:/ warning$/ REJECT Virus 本主机不可使用这个标题做为邮件标题 unavailable header
28#/^Subject/:/ unknown$/ REJECT Virus 本主机不可使用这个标题做为邮件标题 unavailable header
29#/^Subject/:/ stolen$/ REJECT Virus 本主机不可使用这个标题做为邮件标题 unavailable header
30#/^Subject/:/ hi$/ REJECT Virus 本主机不可使用这个标题做为邮件标题 unavailable header
31#/^Subject/:/ fake$/ REJECT Virus 本主机不可使用这个标题做为邮件标题 unavailable header
32# 一些不要被允許的帳號,這些都可以抵擋! #############################################
33/^From/:.linyan/@/ REJECT Virus 本主机不允许使用该来源帐号的邮件 linyan
34/^From/:.*admin/@/ REJECT Virus 本主机不允许使用该来源帐号的邮件 unavailable header
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/postfix-mail-filter/4695.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.