題 為什麼我需要SMTP服務器?


為什麼我需要中間SMTP服務器來發送郵件?為什麼我的客戶端(Outlook,Thunderbird)不能直接將郵件發送到收件人的SMTP域?

例如,如果我必鬚髮送電子郵件 address@example.com 使用我的Gmail帳戶,我將其發送給 smtp.gmail.com 服務器;然後這個服務器將我的消息發送到MX服務器 example.com


91
2017-11-27 07:12


起源


可能重複 為什麼郵件客戶端不直接使用收件人的SMTP服務器 - WoDoSc


答案:


從技術上講,可以通過計算機將電子郵件直接發送到收件人的SMTP服務器。

從歷史的角度來看,如果遠程SMTP服務器關閉,您希望系統自動處理它並繼續重試 - 因此您有一個SMTP服務器。同樣,在過去,並非所有郵件服務器都連接了所有時間 - 長途鏈接都很昂貴,因此郵件將在建立鏈接時排隊並發送。

繼續前往互聯網便宜的地方,如果服務器不可用,則有機制重試發送電子郵件,並且將此功能寫入MUA(郵件用戶代理/最終用戶郵件程序)並不理想。這些功能適合MTA(郵件服務器/ SMTP服務器)。

但它變得更糟 - 垃圾郵件發送者。大多數電子郵件(超過80%的方式)都是垃圾郵件。因此,郵件提供商盡其所能減少此問題 - 並且大量技術會對電子郵件的傳遞方式做出假設 - 以下是重要的考慮因素:

  1. 灰名單: 如果發件人和收件人之前沒有進行過通信,並且希望他們第二次嘗試,一些提供商會自動刪除郵件連接 - 因為垃圾郵件發送者通常不這樣做,而SMTP服務器總是應該這樣做。這減少了大約80%的垃圾郵件量。儘管如此,這很糟糕。

  2. 聲譽: 通過信譽良好的已知SMTP服務器發送電子郵件的人比夜間服務器更有可能是合法的。為了獲得聲譽,提供商做了很多事情:

    1. 阻止動態/客戶端地址 (不是100%,但已經繪製出大量的互聯網)。

    2. 看反向DNS匹配轉發DNS: 不是很難做,但顯示了一定程度的問責制和最佳實踐知識 - 以及許多客戶地址塊沒有的東西。

    3. 聲譽: 與其他SMTP服務器通信時,許多提供商會跟踪發送的垃圾郵件數量和電子郵件數量,並通過限制連接和密切關注這些參數來減少垃圾郵件數量。 (有很多方法可以完成,並非所有方法都很明顯,但需要一個已知的發件人)。

    4. SPF和DKIM: 這些機制將DNS資源與域綁定在一起 鍛造郵件的名稱更難,而且很難(但不是 如果是郵件程序(MUA),則必然無法部署 負責外發郵件。 (添加以使此答案更完整 因為它已被接受。它應該歸功於下面的海報 因為它讓我不知所措,但是,它是非常有效的)

可能還有其他一些小問題,但這些問題可能是主要問題。


113
2017-11-27 07:32



別忘了這樣 不完全是次要的 SPF(主機允許為域發送郵件的白名單)和DKIM(在域級別對數據進行數字簽名) - 尤其是後者只能通過專用中繼來實現。 - grawity
@grawity絕對值得一提,但為什麼沒有專門的接力,DKIM“可能”? DKIM選擇器不受發送應用程序或IP地址的約束。如果您的郵件客戶端可以使用已發布的密鑰對郵件進行簽名,則該郵件客戶端與其他簽名者一樣有效。 - Mathias R. Jessen
@ManuH:根據正確答案中的指標,正常郵件會洩露郵件量的1/5。根據指標 我的 服務器,普通郵件會損害郵件量的1/20。這是一個非常好的權衡。 - dotancohen
@manuh:灰名單通過在發送電子郵件之前關閉連接來工作 - 它只會在收到發件人和收件人之前進行偵聽 - 這是在標題中。此外,一些灰名單系統將是不可避免的。接受來自smtp服務器的所有電子郵件,該服務器具有重試傳遞的歷史記錄。可悲的是,它非常有效。 - davidgo
可以補充說,在“好日子”中,郵件經常從一個SMTP服務器發送到另一個,然後是另一個,然後是另一個,然後到達目的地。這通常很好,但是例如在rtm-worm攻擊期間,其中一台計算機停機是必不可少的郵件轉發之一,所以帶有警告,解決方案和修復蠕蟲的電子郵件可能需要48小時才能到達他們的收件人。 - Baard Kopperud


為什麼我需要中間SMTP服務器來發送郵件?為什麼我不能   客戶端(Outlook,Thunderbird)直接發送消息給   收件人的SMTP域名?

在1991年 - 甚至在20世紀90年代初的大部分時間甚至更早 - 你可以做你所描述的。但是2015年的現實是,雖然技術上可以從任何安裝了郵件服務的機器向任何人發送電子郵件,但垃圾郵件世界已經使該方法無效。

當您使用“真正的”SMTP服務時,事物被設置為像PTR記錄,SPF記錄甚至DomainKeys,它們都是為了一個目的和一個目的而建立的:保證發送消息的SMTP是合法的。如果不是?將郵件過濾到垃圾郵件文件夾或刪除的“深淵”。以下是每個項目的細分:

  • PTR(指針記錄/反向DNS記錄): 服務器級別驗證。如 在這裡解釋,PTR記錄用於將網絡接口(IP)映射到主機名。意思是你有地址 123.456.789.0 在您的SMTP服務器上發送電子郵件 smtp.example.com 那麼適當的PTR記錄就是 smtp.example.com。看起來太簡單了,但它起作用,因為唯一可以真正設置PTR記錄的是IP地址的所有者,並且它只能在其硬件上設置。因此,它充當了誰擁有/運行/管理該IP地址的驗證點。

  • SPF(發件人政策框架): 主機名DNS入門級驗證。 SPF記錄 - 如此處所述 - 基本上是域名持有者設置的DNS記錄,它提供允許發送該域名電子郵件的服務器的IP地址和主機名列表。這又是另一個驗證步驟,確保只有SMTP服務器的真實域名所有者才能發送郵件。那麼讓我們說一個IP地址為的服務器 123.456.789.9 正在發送電子郵件 example.com。我們已經知道了 smtp.example.com 使用 123.456.789.0,但SPF記錄條目 example.com 可以說,“嘿! 123.456.789.9 是一個很好的服務器!他是合法的!尊重他的電子郵件!“

  • DKIM(DomainKeys識別郵件): 電子郵件級別驗證。如 在這裡解釋 並且 維基百科,“DKIM是一個電子郵件驗證系統,旨在檢測電子郵件欺騙,提供一種機制,允許接收郵件交換器檢查來自域的傳入郵件是否由該域管理員授權,以及電子郵件(包括附件)在傳輸過程中是否未被修改“通過使用加密哈希,DKIM驗證郵件本身在傳輸過程中未被過濾或篡改。這也是“你是合法的還是垃圾郵件?”鏈中的另一個驗證點。

因此,最終,面向公眾的SMTP服務器將至少有兩個這樣的項目(PTR和SPF)設置為驗證SMTP服務器和相關的電子郵件是否合法。不是每個人都使用DKIM,但它是另一層驗證,現在越來越受歡迎,因為垃圾郵件發送者在發送垃圾郵件方面變得更加頑強。


32
2017-11-27 19:36





大多數住宅ISP阻止TCP端口25(SMTP),以防止您參與垃圾郵件網絡。如果您的PC受到感染,您的PC可能會在其他人的要求下開始噴出垃圾郵件。


15
2017-11-27 07:23



你寫“大多數住宅ISP阻止TCP端口25(SMTP)”< - 你能詳細說明這意味著什麼。你是說他們不允許你在端口25上建立到SMTP服務器的傳出連接?或者你的意思是他們不會讓你在端口25上接收連接? - barlop
@barlop前者 - 他們阻止從住宅鏈接到他們自己的郵件服務器以外的機器的傳出連接(或者實際上到任何地方,因為他們可能使用587或465用於他們自己的服務器)。但是,大多數互聯網服務提供商都這樣做,這有點誇張。 - hobbs
@hobbs - 我的經歷(以及我工作的一部分)是不同的。雖然許多ISP將阻止流量離開他們的網絡,目標是端口25(強制端口25流量通過他們的郵件服務器),但端口587或465通常也不是這樣 - 事實上這是有道理的。端口587和465通常需要身份驗證,阻止並且特別是MUA到MTA而不是MTA-MTA - 阻止這些端口會產生巨大的反彈,因為許多公司需要它,以便允許漫遊,問責和不破壞SPF。 - davidgo
@hobbs,我從來沒有寫過大多數互聯網服務提供商這樣做;我寫的是最多的 住宅ISP 做這個。例如,AT&T,Comcast,TWC,Verizon等為其住宅客戶執行此操作,但他們不會為其商業客戶執行此操作。 - Ron Maupin


其他答案都很優秀,垃圾郵件確實與它有很大關係。

但實際上有一個更簡單,更通用的答案:功能。通過SMTP發送電子郵件實際上是一項非常複雜的任務。即使沒有垃圾郵件,您也不希望在每個電子郵件客戶端中實現SMTP協議的整個功能集;你最好使用專用軟件(sendmail,postfix等是* nix世界中最重要的軟件,Windows世界中的Exchange)。

例如,即使在最基本的情況下,“真正的”SMTP服務器也必須至少能夠解析MX記錄。然後它必須協商功能(主要是TLS,但也有其他功能)。它必須管理隊列以進行重試,生成未送達報告等。

而這只是基本的,必備的功能,沒有它,服務器甚至都無法工作。它甚至不包括地址重寫,mailertables等內容。更不用說sendmail等人支持的十幾個其他協議,例如UUCP。

Outlook,Thunderbird等中的SMTP實現非常小 - 最好大致相當於在sendmail上使用智能主機,如果是這樣的話。

相關,但是一個單獨的問題:電子郵件是一個對安全性非常敏感的主題,您可能希望有一個或幾個集中管理的服務器來處理它,而不是每個桌面上可能有數百或數千個單獨的服務器。


6
2017-11-30 00:04



這是個好的觀點。它不僅僅是關於排隊的實際功能等等: 可用性 服務器對其中一些功能有所不同。如果出現問題並關閉筆記本電腦,則在下次打開之前無法重試 - 郵件服務器很可能全天候可用,因此管理郵件隊列的位置要好得多。通過SMTP將郵件提交到服務器後,您的郵件客戶端無需保持聯機狀態以確保傳遞。 - David Spillett


為什麼我需要中間SMTP服務器來發送郵件?為什麼我的客戶端(Outlook,Thunderbird)不能直接將郵件發送到收件人的SMTP域?

您可以創建一個執行此操作的電子郵件程序,我毫不懷疑其他人之前已經完成(或嘗試過)它。

你基本上是在編寫一個同時是MUA(郵件用戶代理)和MTA(郵件傳輸代理)的工具。

傳統上將其分成不同工具的原因是MTA駐留在“服務器端”,即通過開放式互聯網發送郵件的MTA編寫和配置要復雜得多,並且它可以從駐留在可靠的“永遠在線”服務器。

MTA必須:

  • 查找並連接到它不信任或可能行為不當的服務器,並以合理的方式處理錯誤情況,不會丟失郵件。

  • 處理已關閉的服務器,並路由到備用服務器或對郵件進行排隊以便以後重新嘗試。這在“始終連接”到互聯網的服務器進程上運行最佳。它還意味著郵件傳輸代理需要自己的存儲區域來排隊。

  • 處理一系列不同的服務器功能,根據接收服務器的功能調整行為。

  • 向用戶報告有關錯誤情況或郵件無法送達的情況,以便郵件不會丟失。

  • 擁有出色的安全實踐並且非常注重安全。

  • 理想情況下,駐留在可靠,始終連接的服務器上,該服務器具有穩定的IP地址和反向DNS條目,即適用於面向公眾的服務器的互聯網連接。這有助於其他系統無法檢測作為垃

鑑於這些要求,將SMTP服務器安裝在面向公共的永遠在線服務器上是有意義的,並嘗試使用適合執行該特定工作的工具。


4
2017-12-01 01:09





另一件需要考慮的事情是 收到回复郵件。所有外發電子郵件至少都有一個FROM地址,可以發送響應(未知用戶,假期回復等)。為了解析返回地址,必須存在指向返回收件箱位置的MX記錄。除非您從具有始終打開的靜態IP地址的計算機發送電子郵件,否則您將需要一台服務器來處理這些入站郵件。這通常(但不總是)由同一服務處理。

GMail,Outlook 365和Yahoo Mail是發送電子郵件的個人使用的電子郵件服務的示例。對於商業電子郵件發送,有一些服務,如MailChimp,Marketo和Eloqua,它們非常擅長為公司發送大量電子郵件並處理跳出,限制和可傳遞性等內容。

看到: https://en.m.wikipedia.org/wiki/Bounce_address


1
2017-11-27 19:01



我不明白為什麼我需要一個靜態IP才能得到我的答复......答复應該發送到我的MX服務器(例如Gmail)而不是我的電腦。我對嗎? - Tobia
是的,你是對的。我想我的觀點是,某個服務器上通常存在一個收件箱,以便發送外發電子郵件。從邏輯上講,該服務器也可以處理外發電子郵件。否則你會丟失諸如“發送”電子郵件文件夾之類的東西。 - dana
是的,這是合理的。但是我可以通過Gmail發送一條消息,其中包含一個未知的“來自”或“回复”地址,並且未通知其smtp服務器... - Tobia
如果您使用GMail,則必須使用smtp身份驗證。因此,FROM地址設置為您的@ gmail.com地址。否則,您將能夠使用他們的服務進行欺騙。 - dana
如今,許多用戶對彈跳不太在意,但是不接受彈跳的設置通常被認為是可能的垃圾郵件來源。 - rackandboneman