经过多次testing和回溯我的步骤,我仍然无法获得谷歌邮件validation。
Exim version 4.72 #1 built 31-Jul-2010 08:12:17 Copyright (c) University of Cambridge, 1995 - 2007 Berkeley DB: Berkeley DB 4.8.24: (August 14, 2009) Support for: crypteq iconv() IPv6 PAM Perl Expand_dlfunc GnuTLS move_frozen_messages Content_Scanning DKIM Old_Demime Lookups: lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmnz dnsdb dsearch ldap ldapdn ldapm mysql nis nis0 passwd pgsql sqlite Authenticators: cram_md5 cyrus_sasl dovecot plaintext spa Routers: accept dnslookup ipliteral iplookup manualroute queryprogram redirect Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp Fixed never_users: 0 Size of off_t: 8 GnuTLS compile-time version: 2.4.2 GnuTLS runtime version: 2.4.2 Configuration file is /var/lib/exim4/config.autogenerated
我的远程smtp传输configuration:
remote_smtp: debug_print = "T: remote_smtp for $local_part@$domain" driver = smtp helo_data = mailer.mydomain.com dkim_domain = mydomain.com dkim_selector = mailer dkim_private_key = /etc/exim4/dkim/mailer.mydomain.com.key dkim_canon = relaxed .ifdef REMOTE_SMTP_HOSTS_AVOID_TLS hosts_avoid_tls = REMOTE_SMTP_HOSTS_AVOID_TLS .endif .ifdef REMOTE_SMTP_HEADERS_REWRITE headers_rewrite = REMOTE_SMTP_HEADERS_REWRITE .endif .ifdef REMOTE_SMTP_RETURN_PATH return_path = REMOTE_SMTP_RETURN_PATH .endif .ifdef REMOTE_SMTP_HELO_FROM_DNS helo_data=REMOTE_SMTP_HELO_DATA .endif
我的私钥的path是正确的。
我在邮件中看到一个DKIM标题,因为它们以我的Gmail帐户结束:
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mydomain.com; s=mailer; h=Content-Type:MIME-Version:Message-ID:Date:Subject:Reply-To:To:From; bh=nKgQAFyGv<snip>tg=; b=m84lyYvX6<snip>RBBqmW52m1ce2g=;
但是,gmail头文件总是报告dkim = neutral(无签名):
dkim=neutral (no signature) [email protected]
我的DNS结果:
dig +short txt mailer._domainkey.mydomain.com mailer._domainkey. mydomain.com descriptive text "v=DKIM1\; k=rsa\; t=y\; p=LS0tLS1CRUdJ<snip>M0RRRUJBUVV" "BQTRHTkFEQ0J<snip>GdLamdaaG" "JwaFZkai93b3<snip>laSCtCYmdsYlBrWkdqeVExN3gxN" "mpQTzF6OWJDN3hoY21LNFhaR0NjeENMR0FmOWI4Z<snip>tLQo="
请注意,base64公钥长度为364个字符,因此我必须使用bind9分解密钥。
$ORIGIN _domainkey. mydomain.com. mailer TXT ("v=DKIM1; k=rsa; t=y; p=LS0tLS1CRUdJTiBQVUJM<snip>U0liM0RRRUJBUVV" "BQTRHTkFEQ0JpUUtCZ1<snip>15MGdLamdaaG" "JwaFZkai93b3lDK21MR<snip>YlBrWkdqeVExN3gxN" "mpQTzF6OWJDN3hoY21L<snip>Ci0tLS0tRU5E" "IFBVQkxJQyBLRVktLS0tLQo=")
任何人都可以指向正确的方向吗? 我真的很感激。
不要打破关键。 只需将其添加为单个string。 它会在大多数编辑器中包装。 我的密钥如下所示。
rsa1._domainkey IN TXT “V = DKIM1; T = S; P = MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhAKq2Ul9a5ixDPQm9WMoPI9fUEZU8FZwfux / O9Sl5 + GDCR4rt0CsBzyZj4PY5DTtVHix ++ EZkR5rVdM4W59DtweKCK6XVntq4Y4GSm + gfZkf / fq45BSCQNilbYux4xqsHQIDAQAB”
我不相信DKIM支持重组string。 如果您使用多行格式,请将其重新组合为一个整体。 如果加上额外的报价,它可能会中断。 你的DNS查询显示这是事实。
我经常看到SPFlogging显示为"v=spf1" "a" "-all" vspf1a-all "v=spf1" "a" "-all" ,它被读作vspf1a-all 。 这个logging应该以v=spf1 a -all但是会作为"v=spf1 " "a " "-all" 。 SPF通过连接部件来指定对引用部分的支持,而不会引入额外的空格。 这允许行在中间被打破。
编辑:我正在testing使用多个string格式的密钥。 但是,我将需要等到DNS更新。 [email protected]告诉我,我的新密钥不存在。
我从绑定获得的格式不符合文档导致我相信我应该得到的格式。 该文档表明,我应该看到一个string连接我input的片段。 相反,我看到在区域文件中input的片段。
使用绑定进行testing表明文本片段可以大至255个字符。 任何事情都需要拆分。 在任何情况下,两个这样的片段可能会超过UPD数据包的容量。
对RFC的回顾表明2048位密钥大小可能是实际的限制。 实施者有一个警告,那就是可能不得不处理TXT碎片并按顺序重新组装。
你混淆了公开的数据,这无助于我们的帮助。
例如,我们无法检查以确保您更新了SOA序列号,并且更改已将其发布到所有NS服务器,并且这是在SOA中使用负面的TTL完成的,因为它足够低,导致Gmail无法合理查看数据。
在DNS TXTlogging中使用多个“…”序列不会合并成一个string,它会提供多个string。 然后由应用程序/协议/规范说出如何处理string; 例如“与他们之间的空间连接”,“直接连接”,“仅使用第一”。
DKIM规范说直接join,但这直接进入实施者容易被忽视的那个领域。 我鼓励你提供一个string作为TXTlogging中唯一的string,看看是否改变了事情。
我使用DKIM和Exim,Gmail 始终validation它; 您的Eximconfiguration是正确的。 因此,您的DNS不可见或者Gmail不喜欢TXTlogging中的多个string。
您也可以尝试一些DKIMtesting服务: