• postfix配置spf认证和dkim认证


    1.为邮箱域名添加spf认证:

    登录域名解析控制台添加txt记录:

     v=spf1 include:spf1.domain.com ~all

    spf1.domain.com  A记录解析到你的固定IP

    1、什么是SPF?
    (Sender Policy Framework) 的缩写,一种以IP地址认证电子邮件发件人身份的技术,是非常高效的垃圾邮件解决方案。
    接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SPF记录里面,如果在,就认为是一封正确的邮件,否则会认为是一封伪造的邮件进行退回。
    2、为什么需要添加SPF记录?
    SPF记录是一种发送者身份验证系统。通过设置SPF记录,可以阻止其他用户伪造你的域名进行发送。
    3、如何设置SPF来防止我的邮件被拒收呢?
    为了提升域名邮箱发送外域邮件的成功率,建议您给自己的域名设置一条TXT记录来避免这种情况。
    添加SPF记录的方法:
        这方法很简单,只要我们的DNS供应商提供的管理界面中可以添加SPF记录就可以设置了(不是所有的供应商会提供这设置,我的域名是在godaddy.com上注册的,可以设置SPF记录)。设置时,添加一个SPF记录,然后输入域名,如果是本域,可用@来表示。然后在VALUE中输入如“v=spf1 ip4:67.202.107.106 -all”的值。 这值分三部分:
       (1)v=spf1 说明是一个SPF的v1记录
       (2)ip4:67.202.107.106 说明邮件会从此声明IPv4地址发出。它可以是一个IP,或一个IP段。如果有多个IP或多个IP段的话,可以声明多个ip4记录(如“ip4:1.0.1.0/24 ip4:1.0.2.0/24″),每个ip4记录间用空格分隔。
          3)-all 定义匹配时的返回值,可有如下选择:
               1) + 缺省值。在测试完成的时候表示通过。
               2) – 表示测试失败。这个值通常是-all,表示没有其他任何匹配发生。
               3) ~ 表示软失败,通常表示测试没有完成。
               4) ? 表示不置可否。这个值也通常在测试没有完成的时候使用。
    所以“v=spf1 ip4:67.202.107.106 -all”的意思是这个域只有67.202.107.106这个IP可以发邮件出来,其他IP的都是非法的。
    注意:
    1、 有些域名运营商要求输入的TXT记录的值当中包括前后的双引号的,即: "v=spf1 include:spf1.alibaba.mail.aliyun.com -all"才是对的。
    2、 TXT记录设置完了之后,并不是即时生效的,需要等待DNS缓存失效之后,才能看到最新的设置结果。
    4、如何验证SPF记录?
    WindowsXP左下角的"开始"菜单选择运行(Win7点左下角图标后在搜索框里),输入cmd,点击确定;
    输入"nslookup -qt=txt 你的域名"(如******.com),然后按回车键; 
    如果返回有如下结果就算成功了: 
    ******.com text = "v=spf1 include:spf1.alibaba.mail.aliyun.com -all "
    View Code

    2、Ip反向解析,找isp添加一条IP到mail.domain.com记录

    3.为postfix添加dkim认证:(http://blog.eqoe.cn/posts/build-perfect-mail-server.html)  http://www.mail-tester.com/

    为了后期更新,在这里我实用yum进行安装

    yum search opendkim,查找opendkim安装包

    找到安装包进行安装

    yum install opendkim.x86_64

    安装完毕后,修改opendkim配置文件 

    vim /etc/opendkim.conf,将以下内容复制到文件末尾,保存

    AutoRestart             Yes
    AutoRestartRate         10/1h
    LogWhy                  Yes
    Syslog                  Yes
    SyslogSuccess           Yes
    Mode                    sv
    Canonicalization        relaxed/simple
    ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
    InternalHosts           refile:/etc/opendkim/TrustedHosts
    KeyTable                refile:/etc/opendkim/KeyTable
    SigningTable            refile:/etc/opendkim/SigningTable
    SignatureAlgorithm      rsa-sha256
    Socket                  inet:8891@localhost
    PidFile                 /var/run/opendkim/opendkim.pid
    UMask                   022
    UserID                  opendkim:opendkim
    TemporaryDirectory      /var/tmp
    

      

    将接下来步骤的所有 test.com 替换成你自己的域名

    mkdir /etc/opendkim/keys/test.com  新建域名目录
    opendkim-genkey -D /etc/opendkim/keys/test.com/ -d test.com -s default  生成随机密钥
    chown -R opendkim: /etc/opendkim/keys/test.com  将目录所有者改为opendkim
    cp /etc/opendkim/keys/test.com/default.private /etc/opendkim/keys/test.com/default 复制一份,来作为私钥(不改直接用default.private也可以)

    chown opendkim default 将复制的default文件的所有者改为opendkim(若不改发送邮件会显示没有权限)

    把test.com添加到/etc/opendkim/KeyTable

    default._domainkey.test.com test.com:default:/etc/opendkim/keys/test.com/default

    修改/etc/opendkim/SigningTable并添加如下记录

    *@test.com default._domainkey.test.com

    添加信任主机到/etc/opendkim/TrustedHosts:

    127.0.0.1
    test.com

    添加txt记录(基本就是default.txt中的内容)

    配置完毕后,可以在http://dkimcore.org/tools/进行检测

    配置成功,下面为postfix添加dkim认证:

    修改postfix的main.cf文件,vim /etc/postfix/main.cf

    smtpd_milters           = inet:127.0.0.1:8891
    non_smtpd_milters       = $smtpd_milters
    milter_default_action   = accept
    milter_protocol         = 2

    配置完毕后重启postfix服务,启动opendkim服务

    service postfix reload 重启postfix

    service opendkim start 启动opendkim服务

    dkim配置完毕

    通过之前使用的phpmailer继续像gmail邮箱发送邮件,并查看原始邮件:

    显示dkim:pass,配置完成

    3.阿里云直接提交工单进行反向解析

    至此全部配置完毕,邮件发送完成。

    ps:在完成spf,dkim,反向解析之后,测试邮箱均能正常接收服务器发送的邮件,但是QQ邮箱依旧无法接收被拦截,查看log文件依旧提示550 ip受限,希望解决了这个的人能在下面留言给我点帮助。。

    ps:在联系腾讯客服反馈问题后,问题得到解决,现在QQ邮箱能够正常接收邮件。

     智读

  • 相关阅读:
    原生ES-Module在浏览器中的尝试
    常见的web攻击总结
    node第三方模块----nodemailer发送邮件
    08----mockjs处理前端传来的路径,获取?后面的值
    07----mockjs获取前端传递的数据
    05-----Mock.Random 扩展方法
    03----Mock.mock() 生成接口,随机数据
    06----Mock.setup()
    十一. for of
    十.数组解构
  • 原文地址:https://www.cnblogs.com/jifeng/p/6501376.html
Copyright © 2020-2023  润新知