需要帮助检查电子邮件是否属于同一域?
Need help checking if to emails are part of the same domain?
背景资料:
我需要制作一个系统,让用户通过使用电子邮件 address/password 组合来识别自己来登录。所以我试图找到一种方法来检查登录名是否与数据库中的某些内容匹配,当这两个地址可能是输入不同的相同地址时。
所以域验证的初始步骤是:
- 将输入的文本转换为 NFC
- 使用递归下降解析器去除注释
- 从域中拆分本地部分。
运行通过这个域:
nslookup -type=mx $DOMAIN | awk '{ if( =="mail" && == "exchanger") { print substr(, 0, length()-1) } else if( == "internet" || == "has") { print } }' | sort | uniq'
对于 me.com
和 iCloud.com
returns:
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.com
和googlemail.com
都return:
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
所以我想我会把它输入到 table 中,这样所有的 gmail 服务器都有 id 1,所有的 iCloud 服务器都有 id 2,等等。无论人们尝试注册它们的顺序如何。
如果所有服务器都在一个 varchar 单元中,这将不起作用,因为以后可能会添加或删除服务器。如果服务器都被分配到它们自己的行,它就不会真正起作用,因为没有办法像它们是一个逻辑单元一样操作它们。
如果我得到每个服务器名称的最长公共后缀是否表明这些都使用一个邮件服务器?或者是否有可能实际为两个由子域分隔的服务器提供服务?
虽然我确实从你的问题中学到了一些东西,而且我在底部看到了问号,但我会在底部回答一个不同的问题。
但首先,
虽然您没有 php
之类的标签,但您确实提到了用户正在登录和 mysql 数据库。所以我假设 php
而不是 ssh
.
您没有处理传入的电子邮件和通过 smtp 翻录 headers。更确切地说,grandma@gmail.com 正在输入那个,而不是通过输入其他东西来变得可爱。
--
所以问题是,
How do people login with an email address?
就像每个健全的系统一样。他们像 grandma@gmail.com 一样输入密码,然后你进行哈希处理并继续。
背景资料:
我需要制作一个系统,让用户通过使用电子邮件 address/password 组合来识别自己来登录。所以我试图找到一种方法来检查登录名是否与数据库中的某些内容匹配,当这两个地址可能是输入不同的相同地址时。
所以域验证的初始步骤是:
- 将输入的文本转换为 NFC
- 使用递归下降解析器去除注释
- 从域中拆分本地部分。
运行通过这个域:
nslookup -type=mx $DOMAIN | awk '{ if( =="mail" && == "exchanger") { print substr(, 0, length()-1) } else if( == "internet" || == "has") { print } }' | sort | uniq'
对于
me.com
和iCloud.com
returns: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.com
和googlemail.com
都return: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
所以我想我会把它输入到 table 中,这样所有的 gmail 服务器都有 id 1,所有的 iCloud 服务器都有 id 2,等等。无论人们尝试注册它们的顺序如何。
如果所有服务器都在一个 varchar 单元中,这将不起作用,因为以后可能会添加或删除服务器。如果服务器都被分配到它们自己的行,它就不会真正起作用,因为没有办法像它们是一个逻辑单元一样操作它们。
如果我得到每个服务器名称的最长公共后缀是否表明这些都使用一个邮件服务器?或者是否有可能实际为两个由子域分隔的服务器提供服务?
虽然我确实从你的问题中学到了一些东西,而且我在底部看到了问号,但我会在底部回答一个不同的问题。
但首先,
虽然您没有 php
之类的标签,但您确实提到了用户正在登录和 mysql 数据库。所以我假设 php
而不是 ssh
.
您没有处理传入的电子邮件和通过 smtp 翻录 headers。更确切地说,grandma@gmail.com 正在输入那个,而不是通过输入其他东西来变得可爱。
--
所以问题是,
How do people login with an email address?
就像每个健全的系统一样。他们像 grandma@gmail.com 一样输入密码,然后你进行哈希处理并继续。