https://help.ubuntu.com/community/Postfix/DKIM
但是,我需要它来签署来自任何域(在发件人地址)的电子邮件而不仅仅是我自己的电子邮件.我正在建立一个电子邮件通讯服务,客户将通过服务器发送自己的电子邮件.
首先,我在/etc/dkim-filter.conf中设置“Domain *”.这使得它可以在所有外发电子邮件中包含DKIM标头,无论域名是什么.
但是,验证检查在gmail上失败,因为它正在检查来自from地址的域,而不是我的域(和dns记录).有谁知道如何做到这一点?
在我如上所述设置“Domain *”之后,它会像这样签名:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=clientdomain.com; s=main; t=1250005729; bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=; h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type; b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi 31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=
注意“d = clientdomain.com”.它是根据电子邮件中的起始地址生成的,其中起始地址类似于“contact@clientdomain.com”.显然,如果它检查了客户端的域而不是我的域,那里没有DNS TXT记录,验证将失败.
所以无论如何我在这篇文档中发现你可以设置一个KeyList参数.
http://manpages.ubuntu.com/manpages/hardy/man5/dkim-filter.conf.5.html
它并没有真正描述我想做什么,但我想我会玩它.我注释掉KeyFile并将KeyList设置为“/etc/mail/dkim_domains.key”,这是我编写的任意文件名.
然后我创建了该文件并将其放入“*:Feedmailpro.com:/etc/mail/dkim.key”.
这告诉它任何客户端域,使用我的域(Feedmailpro.com)进行签名,并使用dkim.key文件.
重新启动DKIM和postfix
sudo /etc/init.d/dkim-filter restart sudo /etc/init.d/postfix restart
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=Feedmailpro.com; s=dkim.key; t=1250005729; bh=twleuNpYDuUTZQ/ur9Y2wxCprI0RpF4+LlFYMG81xwE=; h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type; b=kohI7XnLlw/uG4XMJoloc4m9zC13g48+Av5w5z7CVE0u3NxsfEqwfDriapn7s7Upi 31F3k8PDT+eF57gOu2riXaOi53bH3Fn/+j0xCgJf8QpRVfk397w4nUWP/y8tz4jfRx GhH21iYo05umP0XflHNglpyEX02bssscu2VzXwMc=
改进,你看到d = now设置为我的域名(即使电子邮件的发件人地址不是我的域名).但是s =被改为“dkim.key”而不是我在dkim-filter.conf中选择的选择器.在原始的setup instructions中,我将选择器设置为“邮件”.这很奇怪,但我注意到它将其更改为我的密钥dkim.key的文件名.
所以我把“/etc/mail/dkim.key”重命名为“/ etc / mail / mail”.还在“/etc/mail/dkim_domains.key”中更新了对它的引用.
再次重启dkim-filter和postfix,如上所述,现在它开始工作了.这是使用右选择器正确签名的最终标题(显然基于密钥的文件名).
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=Feedmailpro.com; s=mail; t=1250006218; bh=tBguOuDhBDlhv0m4KF66LG10V/8ijLcAKZ4JbjpLXFM=; h=Date:From:To:Message-Id:Subject:Mime-Version:Content-Type; b=c9eqvd+CY86BJDUItWVVRvI3nibfEDORZbye+sD1PVltrcSBOiLZAxF3Y/4mP6vRX MUUNCC004oIH1u7FYafgF32lpuioMP1cd7bi6x3AZ5zH4BYETNBnnz4AhAPBtqlIh/ FFMz8jkhhLhcM2hDpwJkuKjAe3LzfNVDP8kD11ZI=
现在s = mail是对的,d = Feedmailpro.com是对的.有用!
总体而言,这比我预期的要困难,似乎没有关于如何做到这一点的文档(签署所有传出域名),但我想这是开源软件,所以我不能抱怨.
最后要注意的是,要检查TXT DNS记录是否设置正确,您可以执行与您的域名相同的命令
dig mail._domainkey.Feedmailpro.com TXT
可能需要安装dig(sudo apt-get install dig).如果您使用Slicehost管理器添加DNS条目,则需要输入TXT记录.
Type: TXT Name: mail._domainkey Data: k=rsa; t=s; p=M5GfMA0...YOUR LONG KEY...fIDAQAB TTL seconds: 86400
我真的不明白为什么名称设置为“mail._domainkey”没有句号结尾或没有我的域名,如“mail._domainkey.Feedmailpro.com”.但无论如何,它似乎有效,所以我很高兴.
如果你想复制它,这里是我开始的说明:
https://help.ubuntu.com/community/Postfix/DKIM