看起来有一些很棒的库可以在C#/ .NET上对DomainKeys进行电子邮件签名,但是我很难找到同样的PHP支持.也许我不是在寻找合适的地方?
我找到的唯一一个是http://php-dkim.sourceforge.net/ ; 它看起来非常hacky并且仅支持PHP4.考虑到PHP的流行程度,以及DomainKeys对于非垃圾邮件分类的重要性,我希望有更好的工具; 你知道吗?你推荐的任何其他技巧?
额外信息:我正在使用外部SMTP提供商,因为我需要每天发送数千封电子邮件.
亚马逊的SES邮件服务需要DKIM身份验证.身份验证的一个步骤是将CNAME记录添加到域的DNS中.
不幸的是,CNAME记录有一个下划线.我的注册商Network Solutions不允许在CNAME记录中使用下划线.
这有解决方法吗?转移到不同的注册商是一种选择,但显然是一个可怕的选择.
我试图找出如何使用MailGun Golang API发送邮件,而不是代表'发送'.
这是From地址当前的样子(foo.com是发件人的电子邮件域,bar.com是我的域):
john=foo.com@mail.bar.com on behalf of John Smith <john@foo.com>
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能使它看起来像这样:
John Smith <john@foo.com>
Run Code Online (Sandbox Code Playgroud)
我根据MailGun指令设置了SPF和DKIM,一切都正确.SetDKIM(true)
当我发送邮件时我也用过.是否有一些我缺少的设置或我需要做的其他验证?
我有几个云应用程序将Mails发送给联系人.每个应用程序都有DKIM设置.
For example:
cloud app 1 : k=rsa; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfl0chtL4siFYCrSPxw43fqc4zOo3N+Il220oK2Cp+NZw9Kuvg8iu2Ua3zfbUnZWvWK4aEeooliRd7SXIhKpXkgkwnAB3DGAQ6+/7UVXf9xOeupr1DqtNwKt/NngC7ZIZyNRPx1HWKleP13UXCD8macUEbbcBhthrnETKoCg8wOwIDAQAB
cloud app 2 : k=rsa; t=s; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDfl0chtL4siFYCrSPxw43fqc4zOo3N+Il220oK2Cp+NZw9Kuvg8iu2Ua3zfbUnZWvWK4aEeooliRd7SXIhKpXkgkwnAB3DGAQ6+/7UVXf9xOeupr1DqtNwKt/NngC7ZIZyNRPx1HWKleP13UXCD8macUEbbcBhthrnETKoCg8wOwIDAQAB
Run Code Online (Sandbox Code Playgroud)
我应该在我的DNS记录中添加两个文本记录.我相信我可以添加2个txt记录.是否需要结合两个txt记录.
请建议我在单个域中添加多个TXT记录的方法.
电流我使用phpmailer发送邮件.现在如何使用DKIM密钥在phpmailer中发送电子邮件
我在phpmailer类文件中搜索,我找到了下面的代码
/**
* DKIM selector.
* @type string
*/
public $DKIM_selector = '';
/**
* DKIM Identity.
* Usually the email address used as the source of the email
* @type string
*/
public $DKIM_identity = '';
/**
* DKIM passphrase.
* Used if your key is encrypted.
* @type string
*/
public $DKIM_passphrase = '';
/**
* DKIM signing domain name.
* @example 'example.com'
* @type string
*/
public $DKIM_domain = '';
/**
* DKIM private key file …
Run Code Online (Sandbox Code Playgroud) 我承认我不擅长核心验证.我所拥有的是一个从POP3服务器下载消息的脚本,我正在尝试验证PHP中的DKIM签名.我已经想出了身体哈希(bh)验证检查,但我无法弄清楚头部验证.
http://www.dkim.org/specs/rfc4871-dkimbase.html#rfc.section.6.1.3
下面是我的邮件标题的示例.我已经能够使用Mail :: DKIM包验证Perl中的签名,所以我知道它很好.我似乎无法弄清楚RFC中的指令并将它们转换为PHP代码.
DomainKey-Signature: q=dns; a=rsa-sha1; c=nofws;
s=angrychimp-1.bh; d=angrychimp.net;
h=From:X-Outgoing;
b=RVkenibHQ7GwO5Y3tun2CNn5wSnooBSXPHA1Kmxsw6miJDnVp4XKmA9cUELwftf9
nGiRCd3rLc6eswAcVyNhQ6mRSsF55OkGJgDNHiwte/pP5Z47Lo/fd6m7rfCnYxq3
DKIM-Signature: v=1; a=rsa-sha1; d=angrychimp.net; s=angrychimp-1.bh; c=relaxed/simple;
q=dns/txt; i=@angrychimp.net; t=1268436255;
h=From:Subject:X-Outgoing:Date;
bh=gqhC2GEWbg1t7T3IfGMUKzt1NCc=;
b=ZmeavryIfp5jNDIwbpifsy1UcavMnMwRL6Fy6axocQFDOBd2KjnjXpCkHxs6yBZn
Wu+UCFeAP+1xwN80JW+4yOdAiK5+6IS8fiVa7TxdkFDKa0AhmJ1DTHXIlPjGE4n5;
To: iptest@example.com
Message-ID: <EF.CC.24859.F1DCA9B4>
From: DKIM Tester <noreply@angrychimp.net>
Reply-To: noreply@angrychimp.net
Subject: Automated DKIM Testing (angrychimp.net)
X-Outgoing: dhaka
Date: Fri, 12 Mar 2010 15:24:15 -0800
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
MIME-Version: 1.0
Return-Path: noreply@angrychimp.net
X-OriginalArrivalTime: 12 Mar 2010 23:25:50.0326 (UTC) FILETIME=[5A0ED160:01CAC23B]
Run Code Online (Sandbox Code Playgroud)
我可以从我的DNS中提取公钥就好了,我相信我正确地规范了标题,但我无法验证签名.我不认为我正在准备我的密钥或正确计算签名验证.
这是可能的(我需要梨扩展或什么吗?)或手动验证PHP中的DKIM签名是不可行的?
DKIM支持两种规范化方案:轻松和简单.前者更宽松,允许中间邮件程序在有限的程度上修改电子邮件.
我能找到的唯一数据是对实现的调查,显示绝大多数电子邮件发件人使用标题和正文的轻松规范化.(明显少用于身体的放松,但它仍然是绝对多数.)
DKIM规范说,如果支持DKIM,所有客户都必须支持规范化形式,因此这似乎不是一个主要因素.两种方案都允许中间人添加标题.唯一的区别是,我可以告诉在头名(不是值)和空白的情况下的处理中的标头.鉴于此,似乎放松总是至少具有良好的可传递性,这是DKIM的目标.
(当然,如果我想实际签署我的电子邮件以证明他们的内容,我会使用S/MIME和证书.DKIM严格关于可传递性,对吗?)
我用C#编写了一个发送电子邮件的程序.现在我需要使用Dominkeys/DKIM签署出站电子邮件,但我不知道该怎么做.
我已经设置了所有密钥,但我不知道如何将它们和hwo包含在电子邮件标题中.
我一直在努力弄清楚为什么会这样,但我的电子邮件被Gmail和Hotmail标记为垃圾邮件(他们在雅虎工作.)
SPF,DKIM,rDNS和sender-id全部通过.更奇怪的是,我发送了与我的开发服务器中确切内容完全相同的电子邮件,而且Gmail将其视为非垃圾邮件,即使在生产中传递的每个支票都在开发中失败.Hotmail仍然将其标记为垃圾邮件.
知道会发生什么吗?以下是Gmail的示例标题(IP和域名已更改为隐私):
Delivered-To: REMOVED@gmail.com
Received: by 10.194.16.130 with SMTP id g2csp192349wjd;
Mon, 13 Aug 2012 14:04:10 -0700 (PDT)
Received: by 10.236.193.105 with SMTP id j69mr12819871yhn.21.1344891849751;
Mon, 13 Aug 2012 14:04:09 -0700 (PDT)
Return-Path: <mailer@mydomain.com>
Received: from mail.mydomain.com (mydomain.com. [xxx.xxx.xxx.xxx])
by mx.google.com with ESMTPS id e22si563514yhh.132.2012.08.13.14.04.08
(version=TLSv1/SSLv3 cipher=OTHER);
Mon, 13 Aug 2012 14:04:09 -0700 (PDT)
Received-SPF: pass (google.com: domain of mailer@mydomain.com designates xxx.xxx.xxx.xxx as permitted sender) client-ip=xxx.xxx.xxx.xxx;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of mailer@mydomain.com designates xxx.xxx.xxx.xxx as permitted sender) smtp.mail=mailer@mydomain.com; …
Run Code Online (Sandbox Code Playgroud)