2015-06-21 67 views
0

背景信息:需要帮助检查电子邮件是否属于同一个域名?

我需要制作一个系统,让用户通过用电子邮件地址/密码组合来标识自己来登录。所以我试图找到一种方法来检查登录是否与数据库中的某些内容相匹配,当两者可能是不同的输入地址时。

所以对于域名验证最初的步骤是:

  • 转换输入的文本,以NFC
  • 条评论用递归下降解析器
  • 分裂本地部分从域。
  • 通过这个运行域:

    nslookup -type=mx $DOMAIN | awk '{ if($2 =="mail" && $3 == "exchanger") { print substr($6, 0, length($6)-1) } else if($2 == "internet" || $2 == "has") { print $1 } }' | sort | uniq' 
    

    这两个me.comiCloud.com回报:

    mx1.mail.icloud.com 
    mx2.mail.icloud.com 
    mx3.mail.icloud.com 
    mx4.mail.icloud.com 
    mx5.mail.icloud.com 
    mx6.mail.icloud.com 
    

    而且gmail.comgooglemail.com都返回:

    alt1.gmail-smtp-in.l.google.com 
    alt2.gmail-smtp-in.l.google.com 
    alt3.gmail-smtp-in.l.google.com 
    alt4.gmail-smtp-in.l.google.com 
    gmail-smtp-in.l.google.com 
    

所以我想我会输入这个表格,以便所有的Gmail服务器都有ID 1,并且所有的iCloud服务器都有ID 2等,以任何顺序尝试注册他们。

这不如果所有服务器都位于一个varchar单元中,则可以工作,因为可以在稍后的日期添加或删除服务器。如果服务器都是自己的行,因为没有办法像操作单个逻辑单元一样操纵它们,所以它并不真正起作用。

如果我得到每个服务器名称的最长公共后缀将表明这些都使用一个邮件服务器?还是有可能实际上服务两个由子域分隔的服务器?

+0

如果域名都将MX记录指向通用垃圾邮件过滤服务(如Postini),那么会发生什么? – TessellatingHeckler

+0

MX服务器也不是静态的?并且不同的域可以共享相同的mx服务器(我们目前有400多个域都指向我们的邮件群集,并且不计算别名,例如(example.com/example.net/example.org)。所以我会警惕的试图将mx记录用于任何事情...... – Doon

回答

1

尽管我已经从您的问题中了解到了一些,并且我已经在底部看到了问号,但我会在底部回答一个不同的问题。

但首先,

虽然你不必为php喜欢的标签,你提到的用户登录,和MySQL数据库。所以我假设php而不是ssh

您不处理传入的电子邮件并通过smtp标题进行翻录。相反,[email protected]正在输入,而不是通过键入其他东西可爱。

-

所以现在的问题是,

人们如何与电子邮件地址登录?

就像每个理智的系统一样。他们输入它像[email protected],密码,你做你的散列并继续。

+0

+1 .OP似乎是在一个有缺陷的前提下运行,如果'@'后面的部分转换为小写,是相同的,它们是相同的域。 ,他们没有,没有例外,普通的MX服务器没有任何意义,不同的MX服务器*也*没有暗示左侧是否可以路由同一个邮箱。 –

+0

我相信你的观点,我同意这一点,这个:“你的用户名就是你的电子邮件地址”这个范例去除了任何语义含义的给定电子邮件地址的字节(或者,如果你感到慷慨的话,可能是字符),并将它们转换成一个不透明的字符串,只需要匹配。 –