SMTP 服務器設置、使用和最佳實踐
已發表: 2022-04-08曾經想知道電子郵件實際上是如何工作的,當您發送一封電子郵件並在幾秒鐘內它們進入收件人的收件箱時,這種情況背後的技術是簡單郵件傳輸協議 (SMTP)。 使用 IMAP/POP3 服務器接收電子郵件後如何將電子郵件存儲在服務器上是另一個時代的故事,現在,我們將介紹 SMTP,在本文結束時,我們希望您對 STMP 協議、SMTP 服務器有一個完整的了解, 常用選項以及如何確保您的電子郵件完成後進入垃圾郵件。
什麼是 SMTP?
簡單郵件傳輸協議 (SMTP) 是用於發送電子郵件的協議,它定義了一個通用標準,以便任何 SMTP 服務器可以與 Internet 上的任何其他 SMTP 服務器或 POP3/IMAP 服務器進行通信,並且它們可以相互理解。 您可以說它確保參與電子郵件傳輸的不同實體使用共同語言。
什麼是 SMTP 服務器?
SMTP 協議需要由應用程序提供,該應用程序響應那些希望發送電子郵件或中繼電子郵件的 SMTP 請求的應用程序稱為 SMTP 服務/SMTP 中繼。 您可以將其分為兩種類型,如下所示,除了細微的區別外,兩者基本相同 -
- SMTP 服務器:與 SMTP 中繼相同,但主要在接收域與服務器域相同時使用。 這些通常與 gmail.com、yahoo.com 等免費電子郵件服務一起使用。
- SMTP 中繼服務器:這也是一個服務器,但當源電子郵件和目標電子郵件域與 SMTP 服務器域不同時使用此術語。 一個例子可以是提供這些的 SendGrid 或 SendInBlue。這些服務器主要是郵件的路由器。
Fake SMTP Servers : – 這些服務器主要用於開發人員的測試,它們基本上是包羅萬象的服務器,允許用戶在不實際發送任何電子郵件的情況下查看電子郵件在收件人端的外觀。 您可以安裝 MailHog 或 MailCatcher 等本地應用程序,也可以使用 Mailtrap 或我們的本地工具等提供的雲。
SMTP 如何工作?
以下是發送電子郵件過程如何使用 SMTP 的通用指南。
- 想要從 [email protected] 到 [email protected] 發送電子郵件的用戶使用他的電子郵件客戶端草擬帶有主題和正文的電子郵件,然後按發送。
- 一旦用戶按下發送,電子郵件客戶端將連接到配置的 SMTP 服務器,現在讓我們假設它是 smtp.source.com 。 客戶端和 SMTP 服務器進行握手,如果需要授權,則客戶端將提供相同的憑據。
- 握手後,電子郵件客戶端發送收件人地址,在我們的例子中是 [email protected],主題和正文。
- 如果它是我們的用戶發送給同一域中的某人,那麼我們的服務器將簡單地將其在內部轉發到本地接收服務器。
- 接下來,使用 MX 記錄的 DNS 請求的 SMTP 服務器找出其 SMTP 服務器正在運行的收件人 IP 或域地址。
- 接下來,它連接到接收者的 SMTP 地址並嘗試發送電子郵件。
- 收件人電子郵件服務器驗證它是否可以處理轉發給它的電子郵件。 如果一切順利,它會將其轉發到傳入的 IMAP 或 POP3 服務器。
通用 SMTP 端口和地址
在大多數情況下,SMTP 地址將是您嘗試連接到的域前面的郵件或 smtp 前綴。 這些也是由 DNS 中的郵件交換 (MX) 記錄指定的,這些記錄將客戶端引導到郵件服務器,該郵件服務器應該處理如何路由電子郵件消息。
要查找 SMTP 服務器的地址,您可以使用 dig 命令
1 2 3 |
root @ mailtest : ~ # dig +short freesmtpservers.com MX 20 smtp . freesmtpservers . com . 10 smtp . freesmtpservers . com . |
然後,如果需要,您可以使用 dig 命令查找 IP 地址
1 2 |
root @ mailtest : ~ # dig +short smtp.freesmtpservers.com 104.237.130.88 |
連接的端口並不是那麼簡單,服務器和中繼通常有一組不同的端口可以連接,每個端口都是超時來滿足特定要求的。
SMTP 端口
端口號 | 描述 | 信息 |
---|---|---|
25 | 標準 SMTP 端口 | 它應該主要用於電子郵件中繼 |
465 | 已棄用的 SMTP 端口 | 用於安全 SMTP,使用 SSL 進行加密。 避免使用。 |
587 | 現代安全 SMTP 端口 | 大多數現代電子郵件客戶端都會使用它,它使用 TLS 加密。 |
2525 | 備用非標準 SMTP 端口 | 這被用作 587 的替代品,以防其被阻止。 |
在大多數情況下,您將根據需要使用端口 587。
常用 SMTP 服務器名稱
SMTP 服務器的常用地址以 smtp 開頭。 或郵件。 使用域名,有些可能還有 IP 地址。 我們在下面列出了一些常見的及其詳細信息 -
服務名稱 | SMTP 服務器 | 港口 |
---|---|---|
谷歌郵件 | smtp.gmail.com | 587 |
Outlook.com | smtp.live.com | 587 |
Office365.com | smtp.office365.com | 587 |
雅虎郵箱 | smtp.mail.yahoo.com | 465 |
雅虎郵箱加 | plus.smtp.mail.yahoo.com | 465 |
雅虎英國 | smtp.mail.yahoo.co.uk | 465 |
雅虎德國 | smtp.mail.yahoo.com | 465 |
雅虎澳大利亞/新西蘭 | smtp.mail.yahoo.com.au | 465 |
氧氣 | smtp.o2.ie | 25 |
O2.uk | smtp.o2.co.uk | 25 |
美國在線 | smtp.aol.com | 587 |
美國電話電報公司 | smtp.att.yahoo.com | 465 |
[email protected] | smtp.ntlworld.com | 465 |
英國電信連接 | pop3.btconnect.com | 25 |
英國電信開放世界 | mail.btopenworld.com | 25 |
英國電信互聯網 | mail.btinternet.com | 25 |
橙子 | smtp.orange.net | 25 |
Orange.uk | smtp.orange.co.uk | 25 |
瓦納杜英國 | smtp.wanadoo.co.uk | 25 |
熱郵件 | smtp.live.com | 465 |
O2 在線德國 | mail.o2online.de | 25 |
T-在線德國 | securesmtp.t-online.de | 587 |
1&1 (1and1) | smtp.1and1.com | 587 |
1&1 德國 | smtp.1und1.de | 587 |
康卡斯特 | smtp.comcast.net | 587 |
威瑞森 | 傳出的.verizon.net | 465 |
Verizon(雅虎託管) | 傳出.yahoo.verizon.net | 587 |
Zoho Mail | smtp.zoho.com | 465 |
郵件.com | smtp.mail.com | 587 |
GMX.com | smtp.gmx.com | 465 |
[電子郵件保護] 由 USA.NET | smtp.postoffice.net | 465 |
批量 SMTP 服務器提供程序設置
如果您想發送多封電子郵件會發生什麼,比如 10000 K 封電子郵件,那麼您將需要像 Bulk SMTP 中繼這樣的東西,它們還將為您提供 API 和其他功能,如交付跟踪、打開率等。還可以幫助您發送像 SMTP 一樣快的電子郵件作為協議有點慢。
如果數量不是很大,那麼您可以使用我們的免費 SMTP 服務器提供商列表來做出選擇。
如果您想向您的大型用戶群發送電子郵件,或者可能用於電子郵件營銷,我們在下面列出了各種提供商的價格。
小販 | 免費/月 | 每日限額 | 付費計劃 | 評論 |
---|---|---|---|---|
發送藍色 | 9000 | 300 | 10000 美元 25 美元到 100 萬美元 499 美元 | 最好的免費 |
TurboSMTP | 6000 | 200 | 50k 為 14.95,200 萬為 979.95。 | 12個月6000/月 |
阿里巴巴直郵 | 6000 | 200 | 每 1000 封電子郵件 .00029 | |
佩皮郵報 | 3000 | 100 | 15 萬美元 25 美元,200 萬美元 445 美元 | |
發送網格 | 3000 | 100 | 5 萬封電子郵件 14.95 美元,15 萬封電子郵件 749 美元 | |
晶石郵報 | 3000 | 100 | 50K 20 美元到 100 萬美元 525 美元 | |
彈性電子郵件 | 3000 | 100 | 像 Amazon SES 一樣的成本核算 | 低成本付費選項 |
亞馬遜 SES | 62000 | .0001 表示 1000 封電子郵件 | 從 AWS EC2 服務器發送的最便宜、免費的產品之一 | |
郵件 | 15000 | 500 | Gsuite 是高級選項 | 域名將是 gmail.com ,可能導致帳戶暫停。 |
在 WordPress 中使用 SMTP 服務器
WordPress 為 Internet 上幾乎 40% 的網站提供支持,默認情況下,它使用 PHP Mail 發送事務性電子郵件,如果未配置,則使用 sendmail ,這在涉及交付的情況下可能會遇到問題,因此我們建議使用可以使用 SMTP 設置或使用 SMTP API 的 WordPress 插件。
默認情況下,WordPress 使用 PHP 郵件發送電子郵件,如果配置正確就足夠了,但在大多數情況下,使用第三方服務更容易,因為大多數共享主機不允許直接訪問控制台來檢查正在發生的事情以及您的主機 IP 可能由於垃圾郵件而被列入黑名單,因為服務器上可能還有其他用戶(在通用共享主機的情況下)可能不正常並導致您的 IP 被列入黑名單。 被列入黑名單是指您的服務器的 IP 被放入已知垃圾郵件發送者的全球列表中,這使您的郵件更難通過,您可以在此處查看您的狀態。
對於 WordPress,我們推薦 Wp Mail SMTP 插件,它易於配置、設置並支持包括 Gmail 在內的許多不同供應商,還有一個選項來記錄所有已發送的電子郵件。 對於大多數用戶來說,免費計劃應該足夠了。
您可以輕鬆地從 WordPress 內部安裝它,甚至可以從 WordPress 的網站下載它。 它有一個高級計劃,但對於大多數用戶來說,免費應該已經足夠了。
在 Linux 上設置自託管 SMTP 服務器
快速 MTA 比較,我們將選擇 Postfix,因為我們將使用 linux –
如果你是... | 郵箱 | 進出口 | 發送郵件 | 後綴 | 筆記 |
---|---|---|---|---|---|
經驗不足 | 0 | 3 | 1 | 3 | Exim 和 Postfix 有很好的文檔和清晰的例子 |
擔心安全 | 3 | 2 | 0 | 3 | Postfix 既安全又現代; qmail 是安全的,但非常陳舊且脾氣暴躁; Exim 符合不同的標準(見上文。) |
依靠 Sendmail 過濾器 | 0 | 1 | 3 | 2 | Postfix 可以運行 milters; 可以使用等效的 Exim 路由器/過濾器腳本 |
想要最少的麻煩 | 0 | 3 | 0 | 3 | Sendmail 有一些簡單的前端,但你越深入,它就越糟糕。 Postfix 和 Exim 更容易預測。 |
資源受限 | 3 | 2 | 1 | 2 | 有關其他評論,請參閱下面的嵌入式應用程序 |
在 Windows 上 | 0 | 2 | 3 | 0 | Sendmail 有一個本地 Windows 端口; Exim 在 Cygwin 發行版中 |
需要商業支持 | 1 | 3 | 3 | 3 | 所有 MTA 都有勝任的公司; qmail 本來就不太支持這麼舊 |
Postfix 是一個郵件傳輸代理 (MTA),可以充當 SMTP 服務器或客戶端來發送或接收電子郵件。 它易於設置和配置,我們自己使用它來滿足我們的大部分需求,也可以將其設置為通過第三方電子郵件服務轉發電子郵件的中介。 我們將僅介紹基本設置並發送您的第一封電子郵件。
最簡單的設置包括安裝 postfix,您應該一切順利。
這樣的基本設置在技術上可以正常工作,但您的電子郵件可能會進入垃圾郵件,為了迎合這種情況並確保更好的電子郵件送達率,我們有另一個指南,我們在其中添加了其他要求,例如 DKIM 或 SPF,這些要求是確保您的電子郵件正常運行所必需的通過。 但是,除非有充分的理由,否則我們不建議您運行您自己的電子郵件服務器。
此過程假定您有一個新安裝的 Ubuntu 20.04,並且您可以使用命令行 Linux,如果不是,我們建議您使用現有的 SMTP 提供程序之一。 我們將在 Ubuntu 20.04 服務器上設置 postfix,並使用它向我們自己的虛擬服務發送一封電子郵件,以測試它是否有效。
首先,我們將為 apt 包管理器發出更新緩存命令
sudo apt update
接下來,我們將使用以下命令安裝 postfix –
sudo apt install postfix
安裝會打開一堆提示,請進行以下選擇 -
- 一般類型的郵件配置? :為此,我們將選擇一個 Internet 站點,因為這符合我們的基礎設施需求。
- 系統郵件名稱:如果用戶未指定發件人域,這是用於發送電子郵件的基本域。 因此,如果您從 user1 發送電子郵件並且未指定域,則這將被添加到電子郵件的後綴中。 因此,如果給出 example.com,它將從 [email protected] 發送電子郵件。
那應該照顧基本配置。 如需完整設置,請遵循我們的郵件服務器設置指南。 現在端口 25 應該可用,您可以使用任何命令檢查它的開放情況 -
1 2 3 4 5 |
sudo lsof - i - P - n | grep LISTEN sudo netstat - tulpn | grep LISTEN sudo ss - tulpn | grep LISTEN sudo lsof - i : 22 ## see a specific port such as 22 ## sudo nmap - sTU - O IP - address - Here |
我們正在尋找這樣的東西

master 2575 root 13u IPv4 30244 0t0 TCP *:25 (LISTEN)
master 2575 root 14u IPv6 30245 0t0 TCP *:25 (LISTEN)
如果您甚至需要重新配置設置,只需運行命令 -
1 |
sudo dpkg - reconfigure postfix |
我們都設置好我們的 SMTP 服務器應該啟動並運行。 接下來,我們可以向 Internet 上的某些用戶發送電子郵件,或者捕獲所有電子郵件以進行測試。
使用 SMTP 服務器
通常,電子郵件客戶端是我們大多數人與 SMTP 服務器交互的最常見方式,但您也可以使用 telnet 直接與其交互。 我們將從這種方法開始,因為它很酷。
在 linux 中使用 telnet 發送郵件
通過輸入以下命令連接到本地 SMTP 服務器 -
1 |
telnet localhost 25 |
你會看到這樣的東西——
1 2 3 4 |
root @ mailtest : ~ # telnet localhost 25 Trying : : 1... Connected to localhost . Escape character is '^]' . |
如果您無法連接,請確保 postfix 正在運行並檢查端口 25 是否打開。
現在讓我們發送一封電子郵件說 [email protected](捕獲所有電子郵件)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
root @ mailtest : ~ # telnet localhost 25 Trying : : 1... Connected to localhost . Escape character is '^]' . 220 mailtest ESMTP Postfix ( Ubuntu ) ehlo localhost 250 - li292 - 146.members.linode.com 250 - PIPELINING 250 - SIZE 10240000 250 - VRFY 250 - ETRN 250 - STARTTLS 250 - ENHANCEDSTATUSCODES 250 - 8BITMIME 250 - DSN 250 - SMTPUTF8 250 CHUNKING mail from : bob @ example . com 250 2.1.0 Ok rcpt to : smtptest @ freesmtpservers . com 250 2.1.5 Ok data 354 End data with . Subject : Testing Email service This is a test email . . 250 2.0.0 Ok : queued as A6ADC402D4 quit 221 2.0.0 Bye Connection closed by foreign host . |
去檢查[email protected]的收件箱中是否收到了電子郵件,或者如果您使用了其他收件人,可以在其收件箱中檢查它。
從 linux 命令行發送電子郵件
在 linux 上,我們可以使用 sendmail 命令快速發送電子郵件。
1 |
echo "Subject: hello" | sendmail - v smtptest @ freesmtpservers . com |
我希望你喜歡我的文章,如果你覺得我遺漏了一些觀點或在某個地方有錯誤,請告訴我,我會在這裡更新。