我无法在我的服务器(Ubuntu 14.04)上配置 DKIM。 有没有相关教程?(我的邮件服务器已根据此手册进行了配置:http://www.krizna.com/ubuntu/setup-mail-server-ubuntu-14-04/)
答案1
首先安装必要的软件包:
sudo apt-get install opendkim opendkim-tools
添加以下内容/etc/opendkim.conf
:
Domain example.com
KeyFile /etc/postfix/dkim.key
Selector dkim
SOCKET inet:8891@localhost
添加以下内容/etc/default/opendkim
:
SOCKET="inet:8891@localhost"
将合适的 DKIM 配置附加到/etc/postfix/main.cf
:
# DKIM
# --------------------------------------
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
您必须将其附加no_milters
到receive_override_options
中的行/etc/postfix/master.cf
。这可以防止在同一封外发邮件上放置多个签名
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
现在您可以生成用于签署外发邮件的私钥。请注意,在下面的命令中,dkim
是 中赋予 Selector 的值/etc/opendkim.conf
。
opendkim-genkey -t -s dkim -d example.com
将密钥移到位,但不要忘记复制一份并将该副本备份到安全的地方:
mv dkim.private /etc/postfix/dkim.key
您需要重新启动 Postfix 和 OpenDKIM 服务以应用配置更改,以便使用 DKIM 签名外发邮件:
service opendkim start
service postfix restart
接下来是 DNS 记录设置。如何执行此操作同样完全取决于您如何管理 DNS 或 DNS 如何为您管理 - 每个人的工具都不同。
该文件dkim.txt
包含以下内容,即必须创建的完整 TXT 记录。它具有子域dkim._domainkey
和一长组编码内容作为值。再次,“dkim”是 中提供给 Selector 的值/etc/opendkim.conf
。
dkim._domainkey IN TXT ( "v=DKIM1; k=rsa; t=y; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9rulKo58JIb5h+3MMEnYhlnbuVgRoA4w68R/X7qA2Lfv3RpdrrUb+r7KxemIo6PUIOm6uZ5OymhBgpJ0LAWBHBSJjnFmDXNajSgxMOcvkpgmVCW1/k1kxK864WVVSyFVQPyUImqklY+ws4u+mog3PSbuq2J8NFAnvSwzMg3vT1QIDAQAB" ; ----- DKIM key mail for example.com
设置此项时,应省略k=rsa; t=y;
值的部分。第一项指的是密钥格式,默认为 RSA。第二项表示这是一个测试条目,不应包括在内。因此,值如下所示:
"v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC9rulKo58JIb5h+3MMEnYhlnbuVgRoA4w68R/X7qA2Lfv3RpdrrUb+r7KxemIo6PUIOm6uZ5OymhBgpJ0LAWBHBSJjnFmDXNajSgxMOcvkpgmVCW1/k1kxK864WVVSyFVQPyUImqklY+ws4u+mog3PSbuq2J8NFAnvSwzMg3vT1QIDAQAB"
为了进行比较,查看实际示例会很有帮助,这样您就可以了解如何将值输入到记录中。您可以使用DKIM 密钥检查器或其他工具,例如 dig。请注意,dkim._domainkey
以下命令中的 是子域:
dig dkim._domainkey.twitter.com txt
编辑1
/etc/postfix/main.cf
形态改变
# DKIM
# --------------------------------------
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
到
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
milter_protocol = 2
重新启动postfix
。检查服务状态opendkim
。postfix
再次检查邮件发送。