1

我是一个托管代码的人,所以当我与非托管代码互操作时,它不像宣传的那样工作,我会抽搐。有人可以向我解释为什么当命令行工作时这会返回没有 MX 记录nslookup

[DllImport("dnsapi", EntryPoint = "DnsQuery_W", CharSet = CharSet.Unicode, SetLastError = true, ExactSpelling = true)]
private static extern int DnsQuery([MarshalAs(UnmanagedType.VBByRefStr)]ref string pszName, QueryTypes wType, QueryOptions options, int aipServers, ref IntPtr ppQueryResults, int pReserved);

string domain = "HomeTechnologySolutions.com";
int num1 = DnsQuery(ref domain, QueryTypes.DNS_TYPE_MX, QueryOptions.DNS_QUERY_BYPASS_CACHE, 0, ref ptr1, 0);
if (num1 != 0)
{
    throw new Win32Exception(num1)
}

返回的错误代码表示“未找到给定 DNS 查询的记录”

令人担忧的是,这是我发现的第一个未通过此测试的域,但我被告知它“经常”发生。(没有人能经常为我定义,但我正在努力)

无论如何,当我通过命令提示符执行 nslookup 时,我会返回:

> set type=mx
> hometechnologysolutions.com
Server:  dhcp.removedtoprotectedtheguilty.com
Address:  10.0.0.9

hometechnologysolutions.com
        primary name server = ns1.streetsimple.com
        responsible mail addr = hostmaster.streetsimple.com
        serial  = 11
        refresh = 900 (15 mins)
        retry   = 600 (10 mins)
        expire  = 86400 (1 day)
        default TTL = 3600 (1 hour)
4

1 回答 1

4

从这里使用 'dig' 时,我也没有收到MX针对该特定域名返回的任何记录。

您引用的“nslookup”结果来自域的SOA记录,不包括任何MX记录。记录会在 DNS 响应的SOA“授权”部分返回,即使您提出的特定问题没有记录也是如此。

在没有MX记录的情况下,邮件传输代理 (MTA) 会将A主机的MX记录视为优先级为 0 的记录,并尝试与该地址建立 SMTP 连接。

请参阅RFC 5321的第 5.1 节。请注意,尽管这是最近的 RFC,但此行为也存在于以前版本的 SMTP 规范中。

于 2009-01-07T14:24:38.383 回答