PHPMailer配置DKIM签名后Gmail验证失败(提示无对应签名密钥)
DKIM 验证失败(错误提示:no key for signature)排查方案
- 检查DKIM选择器与DNS记录的匹配性
你代码中配置的选择器为1636290028.redravian,对应的DNS TXT记录主机名必须为1636290028.redravian._domainkey.redravian.com,常见错误包括遗漏_domainkey后缀、选择器拼写错误。如果你的DNS记录里的选择器前缀没有带.redravian后缀,可尝试将代码中的选择器修改为1636290028再测试。 - 验证DNS TXT记录是否正确生效
可通过命令行工具查询记录是否正常解析:
解析返回的内容必须符合DKIM格式要求:以nslookup -type=TXT 1636290028.redravian._domainkey.redravian.comv=DKIM1; k=rsa; p=开头,p=后紧跟公钥内容,不要包含公钥文件的头尾标识(-----BEGIN PUBLIC KEY-----、-----END PUBLIC KEY-----),也不要有多余的空格、换行符。 - 校验公私钥是否配对
执行以下命令导出私钥对应的公钥,和DNS记录中p=后的内容(去除所有空格换行后)对比,确认二者完全一致:openssl rsa -in key.private -pubout - 补充PHPMailer DKIM配置
可在现有配置基础上添加DKIM身份标识配置,避免因缺省参数导致的校验失败:$mail->DKIM_identity = '@redravian.com'; - 后续优化建议
当前DKIM问题解决后,建议尽快添加SPF和DMARC记录,可大幅提升邮件送达率,避免被邮箱服务商判定为垃圾邮件。
内容的提问来源于stack exchange,提问作者habib
相关产品推荐
相关产品推荐

