当挖掘和在线服务找到记录时,为什么Mailgun返回错误498“没有为域找到MX”?

Jar*_*nen 3 dns mailgun

我们正在尝试通过Mailgun API和PHP发送消息。邮件显示在app.mailgun.com日志上很好,但是未传递。日志显示以下状态:

"delivery-status": {
        "attempt-no": 3,
        "description": "No MX for domain.tld'",
        "session-seconds": 0,
        "retry-seconds": 1800,
        "code": 498,
        "message": "No MX for domain.tld'"
},
Run Code Online (Sandbox Code Playgroud)

通过确认dig,domain.tld使用Google的邮件服务器。

domain.tld.     900 IN  MX  0 ASPMX.L.GOOGLE.COM.
domain.tld.     900 IN  MX  5 ALT2.ASPMX.L.GOOGLE.COM.
domain.tld.     900 IN  MX  10 ASPMX2.GOOGLEMAIL.COM.
domain.tld.     900 IN  MX  5 ALT1.ASPMX.L.GOOGLE.COM.
domain.tld.     900 IN  MX  10 ASPMX3.GOOGLEMAIL.COM.
Run Code Online (Sandbox Code Playgroud)

对于domain.tld的两个名称服务器,结果相同。同样,通过例如mxtoolbox.com工具尝试时,结果相同。

我们尝试将邮件发送到anotherdomain.tld,该邮件也具有已知且有效的(非Google)MX记录,完全相同的498错误。

此外,我们尝试发送到gmail.com地址,但是:

 "delivery-status": {
        "attempt-no": 1,
        "description": "No MX for gmail.com'",
        "session-seconds": 0,
        "retry-seconds": 600,
        "code": 498,
        "message": "No MX for gmail.com'"
    },
Run Code Online (Sandbox Code Playgroud)

配置的发送域是domain.tld的子域,已经过验证并且帐户已升级。subdomain.domain.tld具有Mailgun的MX记录集。

我尝试在其文档中搜索对498或的引用no mx for,但我发现的只是示例而没有说明:https : //documentation.mailgun.com/api-events.html#examples

错误消息是什么意思?我能做什么?我具有对domain.tld的DNS和subdomain.domain.tld的Mailgun帐户的完全访问权限。

Jar*_*nen 5

好吧,这是一个令人尴尬的错字。该错误消息很好,但是应该更仔细地检查它:

"delivery-status": {
        "attempt-no": 1,
        "description": "No MX for gmail.com'",
        "session-seconds": 0,
        "retry-seconds": 600,
        "code": 498,
        "message": "No MX for gmail.com'"
    },
Run Code Online (Sandbox Code Playgroud)

它查找MX的域gmail.com'不是gmail.com,因为错误消息清楚地表明了这一点。

错误出在电子邮件生成代码中,该代码在地址中添加了额外的单引号,而Mailgun或DNS则没有问题。