设为首页 收藏本站
查看: 1451|回复: 0

[经验分享] Postfix (3) 反垃圾邮件的措施(2)

[复制链接]

尚未签到

发表于 2015-11-24 08:22:26 | 显示全部楼层 |阅读模式
  本系统接着Postfix (3) 反垃圾邮件的措施(1)继续
  


  


  Postfix共有6种限制条件,


  1) 访问表
  2) 客户端参数
  3)严格语法检查
  4)DNS检查
  5)实时黑名单
  6)通用限制条件
  


  1. 访问表
  任何涉及客户端资格检查的限制条件,都需要提供一个访问表, 由一系列的key-value组成。


  check_client_access maptype:mapname             Check_client_access指向一个含有 IP地址、网络地址、主机名称、从属网络名称的访问表。
  Postfix先从DNS系统中反查出客户端的IP地址的完整主机名(PTR),并自己分析出主机名与网络,然后以这些信息与访问表中的每一个索引键对比,如果发现相同的,就采取对应的动作。 如果没有就是DUNNO
  Check_helo_access maptype:mapname             用于对比客户端在HELO命令中显示的主机名
  Check_recipient_access maptype:mapname              check_recipient_access指向一个包含邮件地址,网络名、人名的访问表, 用于对比客户端在RCPT TO命令中提供的收件地址。 如果发现相同的键,就采用相同的动作。



  check_sender_access maptype:mapname
            check_sender_access指向一个包含邮件地址,网络名、人名的访问表, 用于对比客户端在MAIL FROM命令中提供的收件地址。 如果发现相同的键,就采用相同的动作。



  


  2. 客户端参数
  permit_auth_destination

  如果收件地址位于Postfix的辖域内,则批准请求。 包括mydestination, inet_interfaces, virtual_alias_map或者 virtual_mailbox_maps 以及relay_domains
  如果recipient不符合 permit_auth_destination它会返回DUNNO,而不是REJECT

  permit_mynetwork

  如果客户端的IP地址 位于mynetworks所列的任何地址范围内,则批准请求



  reject_unauth_destination

  如果收件人不在Postfix的辖域内,则拒绝请求。 默认值是554



  


  


  3. 严格的语法条件
  reject_invalid_hostname: 如果客户端在HELO命令提供的主机名不是有效的主机名,返回invalid_hostname_reject_code(501)


  reject_non_fqdn_hostname:如果客户端在HELO命令提供的主机名不符合RFC的要求,返回non_fqdn_reject_code(504)
  reject_non_fqdn_recipient:如果客户端在RCPT TO命令提供的收件地址的网络部分,不是RFC要求的, 返回non_fqdn_reject_code(504)


  reject_non_fqdn_sender: 如果客户端在MAIL FROM命令提供的收件地址的网络部分,不是RFC要求的, 返回non_fqdn_reject_code(504)
  reject_unauth_pipeline


  


  4. DNS限制条件
  reject_unknow_client:如果Postfix DNS通过反查不出PTR记录,则会拒绝服务 ,拒绝码unknown_client_reject_code 450


  reject_unknow_hostname:如果HELO提供的主机名没有A记录,也没有MX记录,则拒绝服务, 拒绝码unknown_client_reject_code 450


  reject_unknow_recipient_domain:如果 RCPT TO提供的收件人的网络,查不出有效的A或者是MX记录,则拒绝服务,拒绝码unknown_client_reject_code 450


  reject_unknow_sender_domain:如果 MAIL FROM提供的收件人的网络,查不出有效的A或者是MX记录,则拒绝服务,拒绝码unknown_client_reject_code 450


  


  5. 实时黑名单(RBL)
  专为抵制垃圾邮件而设计的网络服务,让SMTP Server通过 DNS系统实时查询客户端是否为垃圾源。 
  reject_rbl_client rblprovider.domain


  将客户端的Ip地址(例如1.2.3.4)颠倒顺序(4.3.2.1),搭配RBL的网络名,构成一个主机名称,然后以此主机名向DNS系统查询, 如果能查出一个A记录,表示该IP已被列入黑名单, 则Postfix会拒收邮件。
  reject_rhsbl_client rblprovider.domain


  如果客户端的主机名在rblprovider.domain内有一笔A记录,则拒绝服务
  
  reject_rhsbl_sender rblprovider.domain


  如果寄件人的邮件地址的网络部分在rblprovider.domain内有一笔A记录,则拒绝服务


  6. 通用限制条件
  Postfix还提供了下面的限制条件
  permit:批准收下邮件,Postfix不再继续当前的过滤规则,但是会跳到下一组规则
  reject:无条件拒收
  defer:婉拒请求,客户端被告知稍后再试。
  


  举个例子, 对HELO,我们有如下的检查

smtpd_helo_restrictions =
check_helo_access hash:/usr/local/etc/postfix/helo_access
reject_invalid_hostname
  其中 helo_access的内容如下:

             a.com reject
b.com OK
  


  现在有下面的几个连接实例


  1)HELO test
  首先检查check_helo_access,在helo_access中找不以test的记录
  于是再检查hostname 是否valid, 由于 test不是标准的完整的主机名,所以Postfix拒收。
  2) HELO a.com
  首先检查check_helo_access,在helo_access中找到了a.com的记录,REJECT, Postfix当场拒收。


  3) HELO b.com
  首先检查check_helo_access,在helo_access中找到了b.com的记录,OK


  Postfix跳过helo_restrictions的检查, 如果有其他的检查,就转到其他的检查去(比如:sender_restrictions)
  4) HELO c.com


  首先检查check_helo_access,在helo_access中找不以c.com的记录


  于是再检查hostname 是否valid, 由于 c.com是标准的完整的主机名,所以postfix继续下面的检查(如果还有的话,比如:sender_restrictions)


  


  


  Postfix的最后一道防线就是内容检查


  Postfix提供了4邮件内容检查的参数

  header_checkes
  mime_header_checks
  nested_header_checks
  body_checks



  内容检查是全面的, 要么都检查,要么都不检查,没有办法让特定的寄件人或者是收件人绕过。
  header_checks = regexp:/usr/local/etc/postfix/header_checks

模式表的索引键是正则表达式,所以必须放在一对分隔符“/"之间, 例如
  /match pattern/ REJECT

内容检查的动作:
  


REJECT Message txt
拒收邮件,并将message传给客户端
WARN message txt
模拟拒收动作,还会真的拒收,只将message记录在日志文件中,
IGNORE
删除符合模式的标题字段或整行文字
HOLD message text
将整封邮件放在保留队列中
DISCARD message
要求Postfix假装接收邮件,其实偷偷丢掉



  对于模式匹配,想要测试的话,可以使用postmap命令,


  postmap -q -regexp:/usr/local/etc/postfix/header_checks <msg.txt这样的话,postmap会显示出符合模式的字符串,以及对应该模式的动作。
  


  


  最后上传一个笔者测试环境的一个配置文件的内容如下 :
  


DSC0000.gif




  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-142822-1-1.html 上篇帖子: Postfix (3) 反垃圾邮件的措施(1) 下篇帖子: Infix to Postfix Convertor
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表