背景

受困于outlook把我的邮箱地址认为是垃圾邮件,我在经过查阅资料后,发现我现在最大的问题是没有反向DNS解析以及缺少DKIM验证。反向DNS解析,由于主机商不给力,所以不可能完成配置。这里先记录下配置DKIM的过程。

资源准备

配置步骤

安装opendkim

sudo apt install opendkim opendkim-tools

修改opendkim配置文件

修改/etc/opendkim.conf

添加以下代码

1
2
3
4
Domain                  example.com                                                       
KeyFile /etc/dkimkeys/dkim.key
Selector dkim
SOCKET inet:8891@localhost

这里配置的意义是,告诉opendkim你的邮箱域名,设置私钥地址,以及配置dkim服务端口,可以根据自己的需求修改成其他值。

然后修改/etc/default/opendkim

添加这一条语句:

SOCKET="inet:8891@localhost"

该句意为配置opendkim的服务地址,应与上一个配置文件一致。

生成DKIM密钥对

在某个目录内执行下面的语句:

ˋsudo opendkim-genkey -t -s dkim -d example.com`

生成你的域名的密钥对,然后会有两个文件

ˋdkim.key以及dkim.txt`

移动dkim.key

sudo mv dkim.key /etc/dkimkeys/

配置所有者权限

sudo chown opendkim:opendkim dkim.key

配置postfix

编辑/etc/postfix/main.cf

添加或修改以下配置项

1
2
3
4
5
#DKIM                                                                                   
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
milter_protocol = 2
milter_default_action = accept

与opendkim一致即可。

编辑/etc/postfix/master.cf

添加配置项

-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters

重启服务

sudo service opendkim restart
sudo service postfix restart

添加DKIM记录

首先找到生成DKIM密钥对那一步,同时生成的一个dkim.txt文件,格式为

1
2
dkim._domainkey IN      TXT     ( "v=DKIM1; k=rsa; t=y; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAXXXXXXBiQKBgQC/eeMNBhzr+guknXXXXciiY/Wc7HJYNKdxVi+/qlA+6TgleaJY7CC/clWvRAtuXlAzjccsI1V/ICaHSzn9fhZZMKURmy2gsXXXXXXXYw7VZhFNBpTCqRALwsxOryW2BcX8eiwu1oY9krxbUQXXXXXXXXXXI4CLiXXXXXXXXeMK0wIDAQAB" ) ; ----- DKIM key dkim for example.com

在DNS解析里添加如下记录

主机记录 记录类型 记录值
dkim._domainkey TXT "v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAXXXXXXBiQKBgQC/eeMNBhzr+guknXXXXciiY/Wc7HJYNKdxVi+/qlA+6TgleaJY7CC/clWvRAtuXlAzjccsI1V/ICaHSzn9fhZZMKURmy2gsXXXXXXXYw7VZhFNBpTCqRALwsxOryW2BcX8eiwu1oY9krxbUQXXXXXXXXXXI4CLiXXXXXXXXeMK0wIDAQAB"

根据自己的实际数据填写。

测试有效性

贴出两个测试网站:

dkimvalidator

Spamtest