让 postfix/opendkim 对所有域的邮件进行签名

让 postfix/opendkim 对所有域的邮件进行签名

因此,目前我使用 opendkim 对来自特定域的邮件进行签名,并且这样做有效。但是当我尝试从 opendkim 不认识的域发送邮件时,它们没有被签名。

我想要做的是让 opendkim 使用单个域名对通过 postfix 的所有电子邮件进行签名,就像 mailchimp 等所做的那样。

例如:我正在发送电子邮件[电子邮件保护]使用 mailchimp,签名如下所示:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=k1; 
  d=mail2.suw13.rsgsv.net;
  h=Subject:From:Reply-To:To:Date:Message-ID:
    List-ID:List-Unsubscribe:Sender:Content-Type:MIME-Version; 
  i=*****[email protected]; 
  bh=4Rla76/wHV31ER3IZqXOuA09j3OG2SuFbfD5Jc7Kn94=;  
  b=17jmyvz05JfeNC+avqWJmtESF2A58LA/CievFVtQ0sqwo4FYKAP
    0Gfpjtc5LSG7tr9ntS5CziAgSOa+UyEjRP3AhZOOXDFoQMUG0gn
    tqxg/gP074Vi7Hy0XvFzAiJYZfAhijwvaroY45hjuX+RN3nQ0xT
    fhWem5mv3+VVYpwvUo=

我如何实现这个目标?

答案1

喜欢这个答案 诀窍在于使用SigningTableand KeyTable

/etc/opendkim.conf

...
SigningTable    refile:/etc/mail/dkim_signing_table
KeyTable        csl:keyname=example.com:selector:/etc/mail/selector.key 

/etc/mail/dkim_signing_table

* keyname

因此SigningTable将所有域映射到一个键,并KeyTable为键名提供一个域/选择器。

答案2

在您的示例中,邮件不是为您自己的域签名的,而是为 签名的d=mail2.suw13.rsgsv.net。MailChimp 将其作为其默认身份验证, 但它建议使用自定义域身份验证即每个域都有自己的 DKIM 身份验证。

它会删除默认的 MailChimp 身份验证信息(“通过 mcsv.net”或“代表 mcsv.net”) 会显示在某些电子邮件客户端中您的营销活动的“发件人”姓名旁边。

出于同样的原因,您不应该尝试使用单个域来为所有域签署消息。

答案3

opendkim总是“自己”决定是否签名(然后验证)。你只能操纵它的决定并说服它签名:

  1. 有相关电子邮件的密钥材料
  2. 让 MTA 发送预定的键值对到opendkim

以下几行是我的“全部签名”配置的关键元素:

/etc/opendkim.conf

SigningTable csl:*=key1
KeyTable     csl:key1=example.org:selector:/etc/dkimkeys/key.private
MacroList    csl:{dkimsign}=yes,dkimsign=yes
Socket       local:/var/spool/postfix/opendkim/opendkim.sock

第 1 行:对所有域使用“key1”
第 2 行:在 DKIM-Signature 标头中使用“d=example.org; s=selector;”并使用该私钥进行签名
第 3 行:向 MTA 发送请求{dkimsign}dkimsign签名电子邮件(如果其中任何一个被设置为)yes(请参阅下面的注释)
第 4 行:用于与 MTA 通信的套接字
第 1 行和第 2 行满足上面的第 1 点,第 3 行满足上面的第 2 点。

/etc/postfix/main.cf

milter_macro_defaults = dkimsign=yes
smtpd_milters = unix:opendkim/opendkim.sock
non_smtpd_milters = unix:opendkim/opendkim.sock

第 1 行:将dkimsign属性设置为yes 第 2 行和第 3 行:用于访问过滤器应用程序的套接字(与上面的 opendkim 相同,但相对于 postfix chroot...)

笔记:

  • opendkim 的惊喜
    • 选项Mode=s不强制签名
    • 选项LogWhy没有记录原因
    • 即使没有,标准输出/错误也没有SysLog
  • 既没有opendkim也没有postfix适当的
  • 有些地方有问题:opendkim 需要请求{dkimsign}and dkimsign(或任何其他属性,但必须带括号和不带括号),否则无法正常工作;也可能是postfix

相关内容