2014-02-07 68 views
0

我正在爲我的最終學校項目進行一些研究。我的想法是開發一個android電子郵件客戶端。找到SMTP服務器及其端口?

我正在測試一些想法,並且出現了問題。要聯繫SMTP服務器,發送電子郵件,我需要知道的是(SMTP服務器)的名稱和端口。例如,如果用戶有一個mail.ru帳戶,那麼我需要知道SMTP服務器名稱和端口以進行聯繫。

有沒有什麼辦法以編程的方式找到這個名字和端口?

+0

看看這個相關的問題:http://stackoverflow.com/questions/14042742/how-can-i-look-up-a-dns-mx-record-for-a-given-server-in -java – tiguchi

+0

服務器名稱和端口與用於配置您的outlook,android電子郵件客戶端的服務器名稱和端口相同。在網站上檢查使用/不使用加密的端口。順便說一句,如果你想發送郵件到這些服務器,你必須檢查以支持tls。 –

+1

您可以在發現一個在線或自己創建一個之後,以編程方式查詢包含此信息的龐大數據庫。 (這是大多數郵件客戶端實際上做的,除非他們只是建議'smtp。[whateverwasafterthe @]')。 – zapl

回答

2

通常情況下,您只需配置一臺配置爲轉發郵件的特定SMTP服務器即可。

如果你想自己做交付,你必須問DNS的郵件主機(嘗試在Linux系統上的dig mail.ru MX)。但是,請注意,如果您使用的是動態IP地址,則接收方可能會阻止您避免發送垃圾郵件。

用於郵件投遞的端口(即查找MX記錄的主機)始終爲25.如果使用提供商傳出郵件服務器,端口也可能爲587 - 請諮詢您的提供商。

0

有什麼方法可以通過編程方式找到該名稱和端口?

您可以在DNS中找到郵件主機的名稱(或名稱)。查詢MX記錄。一旦你得到一個郵件主機,你使用端口25每個RFC 5321,Simple Mail Transfer Protocol。你不需要用戶名和密碼,因爲它是對方的郵件服務器。


如果你想使你的郵件服務器將郵件發送到其他系統連接到您組織的郵件服務器,然後嘗試端口465或端口587使用465首先是因爲這是SMTPS,然後嘗試口587爲MSA。您需要SMTPS,因爲您不希望將純文本中的認證證書放在線路上。


這裏是你如何查詢一個MX紀錄dig(1)

$ dig gmail.com MX 

; <<>> DiG 9.8.5-P1 <<>> gmail.com MX 
;; global options: +cmd 
;; Got answer: 
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42931 
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0 

;; QUESTION SECTION: 
;gmail.com.   IN MX 

;; ANSWER SECTION: 
gmail.com.  3599 IN MX 20 alt2.gmail-smtp-in.l.google.com. 
gmail.com.  3599 IN MX 30 alt3.gmail-smtp-in.l.google.com. 
gmail.com.  3599 IN MX 10 alt1.gmail-smtp-in.l.google.com. 
gmail.com.  3599 IN MX 5 gmail-smtp-in.l.google.com. 
gmail.com.  3599 IN MX 40 alt4.gmail-smtp-in.l.google.com. 

;; Query time: 23 msec 
;; SERVER: 172.16.1.10#53(172.16.1.10) 
;; WHEN: Fri Feb 07 22:19:33 EST 2014 
;; MSG SIZE rcvd: 150 

你應該包括每RFC 3207,SMTP Service Extension for Secure SMTP over Transport Layer SecuritySTARTTLS命令支持。服務器將通告它,但客戶端必須使用它。也就是說,它是客戶的選擇。

STARTTLS命令將保持竊聽者,如電信,國家安全局和GHCQ。對手將不得不進行主動攻擊,這些攻擊更容易在野外發現。例如,我相信EFF會運行一些X509證書監控工具,這些工具可以捕獲與主動MitM攻擊相關的一些有趣的業務。