验证gmail发件人

时间:2012-11-12 16:29:24

标签: email dkim

我希望能够对用户发送到我的应用的电子邮件进行身份验证。为了简单起见,我只能为gmail用户这样做,因为gmail使用DKIM签署所有外发电子邮件。

如何查找gmail的DKIM公钥?我尝试使用http://www.protodave.com/tools/dkim-key-checker/,但找不到gmail的选择器名称。

然后我如何验证邮件的真实性? HMAC?是否有一些API /服务可以做到这一点?

1 个答案:

答案 0 :(得分:3)

我从Gmail向其他帐户发送了测试邮件,然后查看了DKIM信息的标题。我得到了:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
    d=gmail.com; s=20120113;
    h=mime-version:x-received:date:message-id:subject:from:to
     :content-type; bh=fd9JXP6Ngw+hgcG1EbBo7GpsrIIZzdJb9Q/14o9e5C8=;
    b=sYlJC2oYWzBUOPIo0jtR4iFsIVqUlwo2QRcG1186hg5ai0oO1nisiOJUD+QXjt (snip)

这里的选择器是“20120113”。在shell提示符下,在Google的DNS中查询与该选择器关联的公钥:

dig 20120113._domainkey.google.com TXT

这导致:

20120113._domainkey.google.com. 86400 IN TXT    "k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp5kQ31/aZDreQqR9/ikNe00ywRvZBFHod6dja+Xdui4C1y8SVrkUMQQLOO49UA+ROm4evxAru5nGPbSl7WJzyGLl0z8Lt+qjGSa3+qxf4ZhDQ2chLS+2g0Nnzi6coUpF8r" "juvuWHWXnzpvLxE5TQdfgp8yziNWUqCXG/LBbgeGqCIpaQjlaA6GtPbJbh0jl1NcQLqrOmc2Kj2urNJAW+UPehVGzHal3bCtnNz55sajugRps1rO8lYdPamQjLEJhwaEg6/E50m58BVVdK3KHvQzrQBwfvm99mHLALJqkFHnhyKARLQf8tQMy8wVtIwY2vOUwwJxt3e0KcIX6NtnjSSwIDAQAB"

公钥是p =后的所有内容。

然而......选择器看起来像基于日期,这意味着Google可能会定期轮换它。您无法相信选择器始终有效。

因此,如果您想要可靠地验证收到的邮件,请省去编写自己的验证工具并使用OpenDKIM(http://opendkim.org/)的麻烦。它不仅会验证收到的邮件,还会签发您的外发邮件。