Postfix安装配置DKIM加密(opendkim)

本篇文章只写了编译安装opendkim并配置加密的方式

现在国内发信,首先收件运营商会检测你是不是正常的用户,避免你模仿其他人发垃圾邮件甚至诈骗邮件给用户,避免用户受到损失。

这里最基础的检测是SPF记录以及你邮箱的RDNS记录,DKIM记录主要是保证收发信的传输过程中保证邮件内容不被篡改,目前DKIM记录国内貌似只有比较大的运营商在用,很多小的运营商没有用。

国外一些邮箱尤其是Gmail还会检测你的邮件是否配置了TLS加密,还有DMARC记录等等这里只介绍DKIM。

那DKIM怎么保证邮件内容不被篡改的?

DKIM 技术通过在每封电子邮件上增加加密的数字标志,然后与合法的互联网地址数据库中的记录进行比较。当收到电子邮件后,只有加密信息与数据库中记录匹配的电子邮件,才能够进入用户的收件箱。它还能检查邮件的完整性,避免黑客等未授权者的修改。 DKIM 的基本工作原理同样是基于传统的密钥认证方式,他会产生两组钥匙,公钥(public key)和私钥(private key),公钥将会存放在 DNS 中,而私钥会存放在寄信服务器中。私钥会自动产生,并依附在邮件头中,发送到寄信者的服务器里。公钥则放在DNS服务器上,供自动获得。收信的服务器,将会收到夹带在邮件头中的私钥和在DNS上自己获取公钥,然后进行比对,比较寄信者的域名是否合法,如果不合法,则判定为垃圾邮件。 由于数字签名是无法仿造的(准确的说是DKIM的加密算法特别特别难,几乎没有人可以破解),因此这项技术对于垃圾邮件制造者将是一次致命的打击,他们很难再像过去一样,通过盗用发件人姓名、改变附件属性等小伎俩达到目的。


安装opendkim

    cd /usr/local/src/
    tar -zxf opendkim-2.10.3.tar.gz
    cd opendkim-2.10.3
    ./configure --prefix=/usr/local/opendkim
    make  && make install
 
中间发现了这几个依赖,根据报错需求安装
第一个
     错误提示:configure: error: no strlcpy/strlcat found
            安装这个工具:libbsd-0.8.6.tar  
            下载地址:https://libbsd.freedesktop.org/releases/
 
第二个
     错误提示:checking for OpenSSL library and includes... configure: error: OpenSSL not found
            实际上openssl 已经安装 但是缺少工具包
             apt-get install libssl-dev
    
第三个
     错误提示:error: milter not found
        下载地址: ftp://ftp.sendmail.org/pub/sendmail/sendmail.8.14.5.tar.gz    
   这个安装有点不太一样,这是安装过程:  
  # tar zxf sendmail-8.14.5.tar.gz   
  # cd sendmail-8.14.5/libmilter/      
  # ./Build      
  # ./Build install  
 
 
cp /usr/local/opendkim/sbin/* /usr/bin/   #我犯懒了,最好自己一个一个的copy.....
cp /usr/local/opendkim/sbin/opendkim  /etc/init.d/opendkim

 配置opendkim

  以下所有的$domain 换成自己的域
  所有的$domain_name 换成自己的发信邮箱
 
创建以下目录
mkdir /etc/opendkim/keys/$domain_name  -p
mkdir /var/run/opendkim/ -p
 
 
新增以下文件,并配置,默认都是没有的,文件位置根据自己的需要来
vim /etc/opendkim.conf
        AutoRestart                         Yes
        AutoRestartRate                 10/1h
        Canonicalization                  relaxed/simple
        ExternalIgnoreList                refile:/etc/opendkim/TrustedHosts
        InternalHosts                       refile:/etc/opendkim/TrustedHosts
        KeyTable                              refile:/etc/opendkim/KeyTable
        LogWhy                               Yes
        MinimumKeyBits                 1024
        Mode                                   sv
        PidFile                                  /var/run/opendkim/opendkim.pid
        SigningTable                         refile:/etc/opendkim/SigningTable
        Socket                                  inet:8891@127.0.0.1
        Syslog                                  Yes
        SyslogSuccess                     Yes
        LogWhy                                Yes
        TemporaryDirectory              /var/tmp
        UMask                                  022
        UserID                                  opendkim:opendkim
        MacroList                             192.168.198.100,192.168.198.0/24    #如果涉及转发邮件功能,这里配置转发IP或者签名的IP段,否则转发的邮件不会被签名
 
vim  /etc/opendkim/TrustedHosts
127.0.0.1
 
vim /etc/opendkim/KeyTable
default._domainkey.$domain  $domain:default:/etc/opendkim/keys/$domain_name/default.private
 
vim /etc/opendkim/SigningTable
*@$domain default._domainkey.$domain
 
 
vim /etc/postfix/main.cf   #追加以下内容
smtpd_milters               = inet:127.0.0.1:8891
non_smtpd_milters       = inet:127.0.0.1:8891
milter_protocol              = 2
milter_default_action    = accept

 生成秘钥

opendkim-genkey -D /etc/opendkim/keys/$domain_name/ -d  $domain -s default  #生成随机密钥
useradd opendkim
chown opendkim.opendkim /etc/opendkim -R
chown opendkim.opendkim /etc/opendkim.conf
/etc/init.d/opendkim -Dx /etc/opendkim.conf
/etc/init.d/postfix restart 
 

配置DNS TXT记录

生成的公钥截图

 
 
 
DNSpod配置
主机记录:default._domainkey ,上图文中的内容。
记录值:上图所示()里的内容,记得把换行符删掉,双引号不要,分号保留。
 


DKIM效果检测

检测DKIM配置有没有成功:http://www.mail-tester.com     #每天每个IP只能测试三次,多了要收费
发信测试: swaks 这个工具没有可以安装一下,很方便。
  swaks -f “你的发信地址”   -t “收信地址”  -s "发信IP"    
  例如: swaks -f  123456@qq.com   -t 654321@qq.com  -s localhost  
另外gmail,网易,sina的邮件信头里也有标识,看到DKIM PASS字样也证明DKIM配置成功。
 
原文地址:https://www.cnblogs.com/MYue/p/8205439.html