我有一个附加到电子表格的 Google Apps 脚本,它使用 MailApp.SendMail()。
MailApp.sendEmail(recipient, subject, body, {
noReply: true,
htmlBody: htmlBody,
name: emailFromName,
replyTo: replyToEmailAddress,
cc: ccEmailAddress
});
我从我自己的域myowndomain.com下的帐户运行此程序我使用gmail来管理来自此域的电子邮件。
我配置了 SPF 和 DKIM,它们可以正常工作。我的 DMARC 当前设置为隔离,但我想将其移至拒绝。
如果我从我的个人发件箱发送邮件,无论是通过 gmail 还是通过 IMAP 的其他邮件客户端,一切都很好。 SPF、DKIM 和 DMARC 均通过。
但是,从脚本发送的任何邮件都会通过 SPF,但无法通过 DMARC。我不认为 DKIM 被触发。据我所知,这是因为 SPF 检查来自 google 的域,而 DMARC 来自 myowndomain.com。
Received-SPF: pass (google.com: domain of [email protected] designates xxx.xxx.xxx.xxx as permitted sender)
dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=QUARANTINE) header.from=myowndomain.com
我必须相信其他人已经这样做了并且有解决方案。
有没有办法配置脚本或我的 DMARC/DKIM/SPF 记录,以便它们通过并且我的脚本生成的邮件不会最终成为垃圾邮件?
在不知道您的 DKIM 设置的情况下很难回答,但从这些信息来看,您的 SPF 设置似乎工作正常,而 DKIM 检查失败。当您已经设置了 DKIM 时,您需要两者才能使 DMARC 拒绝策略发挥作用。
DKIM 依赖于发送电子邮件服务器需要访问的密钥对(一个公钥和一个私钥)。公钥很容易,因为它可以从您的 DNS 获得。不过私钥很棘手。
虽然您的发送电子邮件服务(Gmail 和 Google Apps)均由同一家公司(即 Google)提供,但您需要将它们视为完全独立的电子邮件服务,因为据我所知,Google 不共享私有 DKIM他们的这些不同电子邮件服务之间的密钥。
这意味着您需要从 Gmail 设置中获取 DKIM 私钥,并将其输入到 Google Apps 设置中,以便您的域可供在 Google Apps 中运行的脚本使用。
如果这是不可能的(因为 Google 可能不提供由 Gmail 生成的私有 DKIM 密钥),您需要生成自己的 DKIM 密钥对并将其输入 Gmail 和 Google Apps 中,以用作唯一的一组 DKIM您的域的密钥。