【发布时间】:2021-09-06 04:44:57
【问题描述】:
提供者是指负责邮件的提供者,例如对于gmail,提供者将是gmail(或/by google),对于microsoft.com,它将是outlook(by microsoft)。
基本上,我想找出一个电子邮件域,例如在我们的例子中,abc@xyz.com、hxy@tuv.com 来自特定的提供商(outlook 或 gmail),因为 xyz 或 tuv 并不清楚它属于哪个提供商。
我已经成功了,我的想法是利用MX记录,所以我在nodejs中做了这样的事情:
const dnsMod = require('dns');
dnsMod.resolveMx(
'mydomain.com', (err, value)=>{
console.log('The error is : ', err);
console.log('The value is : ', value);
}
)
它会返回这样的记录:
[
{ exchange: 'alt3.gmail-smtp-in.l.google.com', priority: 30 },
{ exchange: 'alt1.gmail-smtp-in.l.google.com', priority: 10 },
{ exchange: 'gmail-smtp-in.l.google.com', priority: 5 },
{ exchange: 'alt2.gmail-smtp-in.l.google.com', priority: 20 },
{ exchange: 'alt4.gmail-smtp-in.l.google.com', priority: 40 }
]
所以,看到这一点,我们可以得出结论,在这种情况下,提供者实际上是 gmail。
但是,我的观点是,是否可以安全地断定提供者是 gmail,只是它包含google、gmail 等字样。换句话说,谷歌的邮件服务器最后是否总是有一个 google.com, (或者同样,微软的邮件提供商到底有outlook.com 或microsoft.com)?如果不是,有什么更好的方法来确认这一点?
编辑:根据评论的建议,我需要这些信息,因为根据这些信息,我只需要显示 google 或 Outlook 按钮之一。
【问题讨论】:
-
"是否可以安全地断定提供者是 gmail 只是它包含诸如 google、gmail 之类的词" 不是如果它包含单词 (任何地方) 而是如果它是一个主机名 ending
.google.com;然而,所有这些仍将是启发式的。人们可以使用“虚荣”名称,因此您会看到mx1.example.com,而实际上在后端它是另一个知名的电子邮件提供商。您可以通过解释为什么需要该信息来增强您的问题,因为这样可能会有其他解决方案。 -
@PatrickMevzek ,通过“如果它包含单词(任何地方)则不是,但如果它是以 .google.com 结尾的主机名”,您的意思是如果邮件服务器的名称以 @ 结尾,我们可以确认它是 gmail 987654342@?
-
@PatrickMevzek ,你的意思是这样的:“然而,所有这些仍然是启发式的。人们可以使用“虚荣”的名字,所以你会在现实中看到 mx1.example.com后端是另一个著名的电子邮件提供商。”,谷歌可以使用类似的东西:“xyz.com”作为他们的一个邮件服务器(即使它可能不会发生)?
-
@PatrickMevzek ,请参阅上述两个 cmets,我还编辑了问题以包含您的建议
-
您可以找到许多启发式方法。例如,对于 O365,请参阅 docs.microsoft.com/en-us/microsoft-365/enterprise/… aka 如果有带有
include:spf.protection.outlook.com的 SPF (TXT) 记录,您可以推断至少发送部分由 O365 以某种方式处理,因此“可能”是电子邮件的传入部分。或通过SRV记录和特定 HTTP 端点“自动发现”,请参阅 docs.microsoft.com/en-us/Exchange/architecture/client-access/…