我的网站允许使用 Google 帐户登录,您还可以通过 Gmail 或 Google Apps 邀请您的联系人。
我正在尝试确定受邀用户是否有 Google 帐户。到目前为止,我检查域名是否为 gmail,但对于 google apps 帐户,我无法执行此类验证,因为域名可以是任何内容。
通过dig命令查找MX(邮件交换器)并查看MX是否是google服务器可靠吗?
我可以像这样在 Java 中执行此验证
Record[] records = new Lookup("example.com", Type.MX).run();
for (int i = 0; i < records.length; i++) {
MXRecord mx = (MXRecord) records[i];
System.out.println("Host " + mx.getTarget() + " has preference "
+ mx.getPriority());
if (mx.getTarget().toString().toLowerCase().endsWith("google.com.")
|| mx.getTarget().toString().toLowerCase().endsWith("googlemail.com.")) {
System.out.println("is google!!!");
}
}
这个方法(查询域名的MX)可靠吗?这个 MX 会改变吗?
谢谢
编辑
到目前为止我发现google有以下按优先级排序的MX
- 0 aspmx.l.google.com。
- 10 alt1.aspmx.l.google.com。
- 20 alt2.aspmx.l.google.com。
- 30 alt3.aspmx.l.google.com。
- 40 alt4.aspmx.l.google.com。
- 50 aspmx2.googlemail.com。
- 60 aspmx3.googlemail.com。
- 70 aspmx4.googlemail.com。
- 80 aspmx5.googlemail.com。
因此,从我的角度来看,可以肯定地说,如果 MX 以 google.com. 或 googlemail.com. 结尾,那么它就是一个 Google Apps 帐户。这可靠吗?
最佳答案
它可能改变,但可能性很小,因为 Google 不会从中获得任何好处。
我不是 Google 员工,因此无法给出有保证的答案,但我对情况的理解如下:
Google 不会要求现有客户更改其 MX 记录,因为这会给客户带来额外的麻烦,对 Google 没有任何好处,而且只会降低公司选择它们的可能性。
Google 总是可以开始要求新客户使用指向非 Google 顶级域的 MX 记录,但他们可能不会。 Google 似乎热衷于从 google.com 子域提供尽可能多的服务。 (事实上,正确屏蔽某些类型的 Google 广告和 API 是一件很痛苦的事情,因为它们是由用于 Google 搜索等内容的同一个
www.google.com
子域提供的。)最坏的情况是,您会得到漏报。即使不是“全部”,“一些”仍然比“无”好。
关于java - 在 Google Apps 帐户上查找 MX 的可靠性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12010310/