提醒:本文最后更新于 2807 天前,文中所描述的信息可能已发生改变,请仔细核实。
虽然OpenDKIM的前身dkim-milter仍然可以使用,而且也不存在性能问题,或其他问题,但总有人喜新厌旧。(如何配置dkim-milter详见《[Postfix进阶]CentOS邮件系统添加DKIM签名》)
注:该文章不适合Ubuntu和Debian,需要做些变动。这两系统比较煞笔,还要修改/etc/default/opendkim才行。
今个儿就来说说,OpenDKIM的配置方法(仍然以CentOS示例),其实也很简单,请继续往下看。
本人系统是CentOS 6.6 X64,考虑到方便以后可以升级,我们使用yum方式来安装。
我写了个Shell的自动安装脚本。(注意:确保你的hostname是你的域名)
#!/bin/bash #Made By kn007 #Add EPEL Community Project rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6 rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm #Fix EPEL Setup Error sed -i 's:#baseurl:baseurl:g' /etc/yum.repos.d/epel.repo sed -i 's:mirrorlist:#mirrorlist:g' /etc/yum.repos.d/epel.repo #Install Postfix DKIM Signature yum -y install opendkim cat > /etc/opendkim.conf<<EOF UserID opendkim:opendkim UMask 022 Mode sv PidFile /var/run/opendkim/opendkim.pid Canonicalization relaxed/relaxed TemporaryDirectory /var/tmp ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable MinimumKeyBits 1024 Socket inet:8891 LogWhy Yes Syslog Yes SyslogSuccess Yes EOF mkdir -p /etc/opendkim/keys/`hostname -f` opendkim-genkey -D /etc/opendkim/keys/`hostname -f`/ -d `hostname -f` -s default chown opendkim:opendkim -R /etc/opendkim/ chmod -R 700 /etc/opendkim echo "default._domainkey.`hostname -f` `hostname -f`:default:/etc/opendkim/keys/`hostname -f`/default.private" >> /etc/opendkim/KeyTable echo "*@`hostname -f` default._domainkey.`hostname -f`" >> /etc/opendkim/SigningTable echo "localhost" >> /etc/opendkim/TrustedHosts echo "`hostname -f`" >> /etc/opendkim/TrustedHosts cat >> /etc/postfix/main.cf<<EOF #DKIM milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:8891 non_smtpd_milters = inet:8891 EOF service opendkim start service postfix restart cp /etc/opendkim/keys/`hostname -f`/default.txt /root/`hostname -f`-dkim-signature_default.txt echo "open '/root/`hostname -f`-dkim-signature_default.txt', then add the TXT record to you DNS resolution system."
就这样,就好了。过程非常简单。
最后,需要你打开/root下的XXX-dkim-signature_default.txt添加到DNS域名解析商里面,如下所示。
转载请注明转自:kn007的个人博客的《[Postfix进阶]使用新版DKIM签名(OpenDKIM)》
好吧
@hannah: 。。额
啦啦啦
@haze:
学习了。
@DUX主题: 主题不错
代码!
@灰常记忆: 复制就能用
@kn007: 木机器
@灰常记忆:
留言错误,看另一条,不好意思。
按照你的安装了。
得到的default.txt里面是这样的格式,并没有你截图里面的 g=*;(我自己按照你的格式解析到dns里面去了),如下:
default._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC91VFxYN+53apjWt4it6Y.............
然后重启
service opendkim restart
service postfix restart
测试发信了n封,等了一个小时都收不到。
然后service opendkim stop,停止opendkim
3秒钟内,之前没收到的信立马都收到了。(gmail和QQ邮箱中都分别收到了。)
请问这是opendkim没装好导致的? 还是要在postfix里面有另外的配置? 我的postfix已经正常可以发信,spf也可以。
希望回复,谢谢。
@小王涛: 你是centos的哪个版本?
这种描述我无法为你解答任何问题。需要提供log。谢谢。
DKIM Key 简单测试:http://dkimcore.org/c/keycheck
或许你也可以试试旧版
@kn007: CentOS release 6.5,64位 ,日志是这个吗?:/var/log/maillog
@小王涛: 嗯。对的。主要看下有什么错误。
另外下次在安装时,可以利用类似 sh tmp.sh >install.log 来保存安装日志。
@kn007: 安装很正常,没报错,刚刚我看了日志。错误如下(域名和邮箱以免ad我替换了。)
Mar 25 14:18:36 v16 postfix/pickup[11964]: D57F74261C: uid=80 from=《mypostfix@xxxx.com》
Mar 25 14:18:36 v16 postfix/cleanup[12082]: D57F74261C: message-id=《20150325061836.D57F74261C@mail.xxxx.com》
Mar 25 14:18:36 v16 opendkim[11867]: can't load key from /etc/opendkim/keys/xxxx.com/default.private: Permission denied
Mar 25 14:18:36 v16 opendkim[11867]: D57F74261C: error loading key 'default._domainkey.xxxx.com'
Mar 25 14:18:36 v16 postfix/cleanup[12082]: D57F74261C: milter-reject: END-OF-MESSAGE from localhost[127.0.0.1]: 4.7.1 Service unavailable - try again later; from=《mypostfix@xxxx.com》 to=《test@qq.com》
-------------
/etc/opendkim/keys/xxxx.com/default.private 这个文件是存在的,并且用户名当组都是opendkim ,权限是700,后来我改为755测试了也无效。
@小王涛: Permission denied,如果700不行,就只能600试试,不可能会有x权限的
@小王涛: 600不行就644试试
@kn007: 700 755 600 666 644 600 444 400 这些权限全部试过了,还是不行,昨天搞了一天+一个通宵,今天爬起来又搞,心力交瘁了。
@小王涛: selinux关了试试?
@kn007: selinux 一直是关着的,防火墙也临时关闭了,也测试没用。
@小王涛: ps -Aef 看下opendkim是被哪个用户运行的,确定是不是opendkim这个用户运行的。
@kn007: 是的
opendkim 17815 0.0 0.6 138792 3036 ? Ssl 15:28 0:00 /usr/sbin/opendkim -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid
@小王涛: 那特么的就奇怪了,你换成root启动试试,文件也用root授权
@kn007: 无效,root启动后opendkim自动接管。。
@小王涛: 这还真是奇了怪了。在很多vps都试过没问题。。。
要不你试下dkim-milter,一样功能实现
@kn007: 好的,我试试。
@小王涛: 我没有空闲的vps,晚些我买一个测试下。你postfix都配置了什么?什么版本?是yum安装吗?
@kn007: 是yum安装的,版本是 postfix-2.6.6-6.el6_5.x86_64
@小王涛: 脚本第36行至43行已经配置了postfix。
另外,好像hostname -f 这个是不能执行的吧?会报错,我是直接用域名替代的。
@小王涛: hostname -f 是可以执行的,你可以自己搜索这条命令
@kn007: 嗯,这个的问题知道是在哪里了。
@小王涛: 字母是不是打错了
最近一直在实验这个东西,但是确认操作正确,到了验证Key的时候总是提示:opendkim-testkey: keys do not match
@王琪亮: 你是什么系统,非centos会有一些不同
@kn007: 我确认了一下,你的文章是给Centos写的……我的系统是Ubuntu 17.04
@王琪亮: 嗯,注意下文章红色字
@kn007: 好吧看见了……
配置了/etc/default/之后发现这货居然不听端口……