使用nodemailer代发邮件被拒收,配置SPF/DKIM仍无效如何解决?
你遇到的553报错是SMTP发件服务器的出站校验拦截,和收件方的SPF/DKIM校验无关,你即使把商家域名的DNS记录配全也过不了这层校验,原因是你当前用的SMTP服务(emailhost.com)要求,认证账号kyle@mydomain.com仅允许发送发件人(from字段)归属该账号下已验证域名的邮件,未在SMTP服务商后台验证过的域名不允许作为发件地址。
问题解决及排查指引
- 方案1:保留你现有SMTP配置,修改发件人格式为平台代发模式
将from字段改为${商家名称} <你的平台官方发件地址>,比如exampleshop店铺 <no-reply@mydomain.com>,replyTo字段保持填写商家的shop@exampleshop.com即可。这种方式既不会触发SMTP服务的拦截,用户收到邮件后点击回复也会直接发送到商家邮箱,符合代发场景需求。同时你只需要要求商家在自己的域名SPF记录中添加include:spf.mydomain.com,就能通过收件方的发件合法性校验。 - 方案2:若必须让from字段完全显示商家自有域名,需先完成SMTP服务商的域名验证
登录你使用的SMTP服务商(emailhost.com)后台,找到「发件域名」「外发域名管理」这类功能入口,按照指引添加exampleshop.com为可发件域名,一般需要你在商家域名下配置服务商指定的TXT所有权验证记录,验证通过后你就可以直接把exampleshop.com下的地址作为from字段发件,不会再触发553错误。 - DNS记录生效排查方法
配置完所有DNS记录后,可在本地终端执行命令校验记录是否已同步:
查SPF记录:nslookup -type=TXT exampleshop.com
查DKIM记录:nslookup -type=TXT default._domainkey.exampleshop.com
确认返回的记录值和你配置的一致后再测试发件,若本地仍显示旧记录,可以尝试清空本地DNS缓存后再查询。
内容的提问来源于stack exchange,提问作者Kyle Truong
相关产品推荐
相关产品推荐

