zoukankan      html  css  js  c++  java
  • postfix反垃圾邮件说明

    参考地址:http://guailele.blog.51cto.com/1156442/780223

    1、打开 smtp 的认证模块

    /etc/postfix/main.cf文件最后加上:
       smtpd_sasl_auth_enable = yes
       smtpd_delay_reject=yes
       smtpd_recipient_restrictions = permit_mynetworkspermit_sasl_authenticated permit_auth_destination reject
       smtpd_client_restrictions = permit_sasl_authenticated
       broken_sasl_auth_clients = yes
       smtpd_sasl_security_options = noanonymous
    这样用户的postfix就支持smtp认证了

    #1、postfix配置说明(强烈建议参看“postfix权威指南 第十一章 反垃圾邮件”
    #fqdn格式:完全限定域名格式,即用点分隔开的包括域名和主机名的主机全名
    # smtpd related config
    smtpd_recipient_restrictions =
            permit_mynetworks,        #检测客户端是否来自mynetworks或者mynetworks_style的网络,是的话返回OK,否则返回DUNNO状态码。
            permit_sasl_authenticated,    #检测用户认证是否通过的,认证通过的返回状态OK,否则返回DUNNO状态码。
            reject_non_fqdn_hostname,    #HELO/EHLO时:客户端提供的主机名不是RFC要求的完整形式(FQND),返回REJECT,否则返回DUNNO状态码。 
            reject_non_fqdn_sender,        #MAIL FROM时:客户端提供的主机名不是RFC要求的完整形式(FQND),返回REJECT,否则返回DUNNO状态码。
            reject_non_fqdn_recipient,    #RCPT TO时:客户端提供的主机名不是RFC要求的完整形式(FQND),返回REJECT,否则返回DUNNO状态码。
            reject_unauth_destination,    #RCPT TO时:收件人不在postfix管辖的区域(由mydestination定义),返回REJECT,否则返回DUNNO状态码。
            reject_unauth_pipelining,    #禁止非授权客户端使用pipelining
            reject_invalid_hostname        #HELO/EHLO时:客户端提供的主机名不是有效的主机名时,返回REJECT,否则返回DUNNO状态码。

    # SMTP sender login matching config
    smtpd_sender_restrictions =
            permit_mynetworks,        #检测客户端是否来自mynetworks或者mynetworks_style的网络,是的话返回OK,否则返回DUNNO状态码。
            reject_sender_login_mismatch,    #拒绝发送者在$smtpd_sender_owner_maps中所匹配的用户名和sasl登录名不一致的连接。
            reject_authenticated_sender_login_mismatch,    #拒绝认证成功的发送者在$smtpd_sender_owner_maps中所匹配的用户名和sasl登录名不一致的连接。
            reject_unauthenticated_sender_login_mismatch    #拒绝认证失败的发送者在$smtpd_sender_owner_maps中所匹配的用户名和sasl登录名不一致的连接。

    smtpd_sender_login_maps =
            mysql:/etc/postfix/mysql_virtual_sender_maps.cf,
            mysql:/etc/postfix/mysql_virtual_alias_maps.cf
        


    #2、smtp会话过程的各个限制条件参数:详看图片“stmp对话过程以及各个阶段对于的限制条件.png”,共分为7个顺序过程的参数限制:
    1、smtpd_client_restrictions
    2、smtpd_helo_restrictions
    3、smtpd_sender_restrictions
    4、smtpd_recipient_restrictions
    5、smtpd_data_restrictions
    6、header_checks
    7、body_checks

    #3、会话过程对比:
    #---------------------------------------------------------------------------
    root@mail:/etc/postfix# telnet mail.jmail.com 25
    Trying 192.168.0.234...
    Connected to mail.jmail.com.
    Escape character is '^]'.
    220 ESMTP                    #smtpd_client_restrictions
    #---------------------------------------------------------------------------
    ehlo mail.zmail.com                #smtpd_helo_restrictions
    250-mail.jmail.com
    250-PIPELINING
    250-SIZE 5242880
    250-VRFY
    250-ETRN
    250-STARTTLS
    250-AUTH LOGIN PLAIN
    250-AUTH=LOGIN PLAIN
    250-ENHANCEDSTATUSCODES
    250-8BITMIME
    250 DSN
    #---------------------------------------------------------------------------
    MAIL FROM:<zyq@zmail.com>            #smtpd_sender_restrictions
    250 2.1.0 Ok
    #---------------------------------------------------------------------------
    RCPT TO:<jj@extmail.org>            #smtpd_recipient_restrictions
    250 2.1.5 Ok
    #---------------------------------------------------------------------------
    DATA                        #smtpd_data_restrictions
    354 End data with <CR><LF>.<CR><LF>
    #---------------------------------------------------------------------------
    Client: To: jingjing<jj@extmail.org>        #header_checks
    From:<zyq@zmail.com>
    Subject:SMTP Test!
    #---------------------------------------------------------------------------
    this is a test message body!            #body_checks
    .
    250 2.0.0 Ok: queued as 959FDE03CA
    #---------------------------------------------------------------------------


    #4、限制条件与对应的受检信息
    限制条件                    客户端提供的受检信息
    #RBL:实时黑名单

    reject_rbl_client                         客户端提供的IP地址或则主机名称    #smtpd_client_restrictions
    reject_rhsbl_client
    reject_unknown_client

    check_client_access type:mapname    helo提供的主机名称        #smtpd_helo_restrictions    
    permit_naked_ip_address
    reject_invalid_hostname
    reject_non_fqdn_hosname
    reject_unknown_hosname

    check_helo_access type:mapname        MAIL FROM提供的寄件人邮件地址    #smtpd_sender_restrictions
    reject_non_fqdn_sender
    reject_rhsbl_sender
    reject_unknown_sender_domain

    check_sender_access type:mapname    RCPT TO提供的收件人的地址        #smtpd_recipient_restrictions
    permit_auth_destination
    permit_mx_backup
    reject_non_fqdn_recipient
    reject_unauth_destination
    reject_unkownn_recipient_domain

    check_recipient_access type:mapname    
    reject_unauth_pipeling            DATA命令
    permint                    无条件批准
    reject                    无条件拒绝
    defer                    无条件延迟
    warn_if_reject                将原本的REJECT动作改为WARN(eg:warn_if_reject reject_unauth_destination 注意此命令必须放在其他条件之前,不能单独调用)
    reject_unauth_pipelining        禁止非授权客户端使用pipelining



    #参数详细说明

    reject_rbl_client    #拒绝来自属于rbl和rhsbl列表中的地址进行连接。通过检查一个ip地址或域名是否存在于domain.tld的rbl或rhsbl中,可以判断该客户端是否被列入了domain.tld的实时黑名单,从而决定是否接受连接。
    reject_rhsbl_client    #拒绝来自属于rbl和rhsbl列表中的地址进行连接。通过检查一个ip地址或域名是否存在于domain.tld的rbl或rhsbl中,可以判断该客户端是否被列入了domain.tld的实时黑名单,从而决定是否接受连接。
    reject_unknown_client    #拒绝客户的地址没有对应的dns的a记录或ptr记录的连接。通常有些机器,尤其是个人拨号用户的机器没有对应的a记录或ptr记录,所以要注意漫游用户的使用(漫游用户是指不在$mynetworks中,比如在别的isp拨号上网的用户。通常用smtp认证来解决这个问题)。

    check_client_access type:mapname
    permit_naked_ip_address            #允许直接使用ip地址的连接。通常在helo/ehlo中使用主机名而不是ip地址。
    reject_invalid_hostname            #拒绝无效格式的主机名的连接。 
    reject_non_fqdn_hosname            #HELO/EHLO时:客户端提供的主机名不是RFC要求的完整形式(FQND),返回REJECT,否则返回DUNNO状态码。 
    reject_unknown_hosname            #HELO/EHLO时:客户端提供的主机名未知时,返回REJECT,否则返回DUNNO状态码。

    check_helo_access type:mapname
    reject_non_fqdn_sender            #MAIL FROM时:客户端提供的服务器主机名不是RFC要求的完整形式(FQND),返回REJECT,否则返回DUNNO状态码。
    reject_rhsbl_sender            #MAIL FROM时:拒绝来自实时黑名单的用户主机
    reject_unknown_sender_domain        #MAIL FROM时:提供的网域无效时(DNS查询),返回REJECT,否则返回DUNNO状态码。

    check_sender_access type:mapname
    permit_auth_destination            #RCPT TO时:
    #允许发往默认转发和默认接收的连接。
    #postfix默认转发以下的邮件:
    #来自$mynetworks中地址发送的邮件
    #发往$relay_domains中的域或其子域的邮件。但是不能包含邮件路由(如user@elsewhere@domain.tld)。
    #postfix默认接收最终投递目标符合如下条件的邮件:
    #目标在$inet_interfaces
    #目标在$mydestinations
    #目标在$virtual_alias_domains
    #目标在$virtual_mailbox_domains
    permit_mx_backup            #RCPT TO时:允许接收本地主机是邮件投递目标的mx地址的邮件。但是不能包含邮件路由(如user@elsewhere@domain.tld)
    reject_non_fqdn_recipient        #RCPT TO时:客户端提供的服务器主机名不是RFC要求的完整形式(FQND),返回REJECT,否则返回DUNNO状态码。
    reject_unauth_destination        #RCPT TO时:拒绝不是发往默认转发和默认接收的连接。(防止成为垃圾邮件服务器)。
    reject_unkownn_recipient_domain        #RCPT TO时:拒绝发往未知域名的连接。

    check_recipient_access type:mapname    
    reject_unauth_pipeling            #DATA命令
    permint                    #无条件批准
    reject                    #无条件拒绝
    defer                    #无条件延迟
    warn_if_reject                #将原本的REJECT动作改为WARN(eg:warn_if_reject reject_unauth_destination 注意此命令必须放在其他条件之前,不能单独调用)
    reject_unauth_pipelining        #禁止非授权客户端使用pipelining

  • 相关阅读:
    windows版本nginx帮助文档
    angular渲染超链接bug
    ionic踩过的一些坑
    ionic项目中使用自定义图标打包出现错误-broken import
    ionic项目中使用自定义图标
    ionic3运行时gradle下载失败的解决方法
    阿里云菜鸡上云实例
    如何用手机控制pc鼠标——Java开发与学习记实
    LeetCode刷题笔记---6月
    编译原理复习题
  • 原文地址:https://www.cnblogs.com/AloneSword/p/3222912.html
Copyright © 2011-2022 走看看