2015-06-21 35 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

我相信你的觀點,我同意這一點,這個:「你的用戶名就是你的電子郵件地址」這個範例去除了任何語義含義的給定電子郵件地址的字節(或者,如果你感到慷慨的話,可能是字符),並將它們轉換成一個不透明的字符串,只需要匹配。 –

相關問題