DKIM从任何域签署外发邮件(使用Postfix和Ubuntu)

我在我的邮件服务器(postfix和ubuntu)上安装了DKIM,因此它会签署外发电子邮件.我用这些说明:
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

相关文章

目录前言一、创建Hadoop用户二、更新apt和安装Vim编辑器三、...
原文连接:https://www.cnblogs.com/yasmi/p/5192694.html ...
电脑重启后,打开VirtualBox,发现一直用的虚拟机莫名的消失...
参见:https://blog.csdn.net/weixin_38883338/article/deta...
Ubuntu 18.04 LTS 已切换到 Netplan 来配置网络接口。Netpla...
介绍每个 Web 服务都可以通过特定的 URL 在 Internet 上访问...