一、首先應該先了解用戶和郵件服務器以及郵箱的使用
現在通常使用Email都很容易,這是因為有第三方服務商搭建郵件服務器,用戶只需注冊然后使用郵箱的收發功能。
但是Internet的郵件系統是通過幾個復雜的部分連接而成的,對於用戶而言,我們熟悉的Outlook,Foxmail等都是用來收信和發信的,稱之為MUA:Mail User Agent,郵件用戶代理。MUA並非直接將郵件發送至收件人手中,而是通過MTA:Mail Transfer Agent,郵件傳輸代理代為傳遞,Sendmail和Postfix就是扮演MTA的角色。一封郵件從MUA發出后,可能通過一個或多個MTA傳遞,最終到達MDA:Mail Delivery Agent,郵件投遞代理,郵件到達MDA后,就存放在某個文件或特殊的數據庫里,我們將這個長期保存郵件的地方稱之為郵箱。一旦郵件到達郵箱,就原地不動了,等用戶再通過MUA將其取走,就是用Outlook,Foxmail等軟件收信的過程。
所以一封郵件的流程是:
發件人:MUA --發送--> MTA -> 若干個MTA... -> MTA -> MDA <--收取-- MUA:收件人
MUA到MTA,以及MTA到MTA之間使用的協議就是SMTP協議;
而收郵件時,MUA到MDA之間使用的協議最常用的是POP3或IMAP。
需要注意的是,專業郵件服務商都有大量的機器來為用戶服務,所以通常MTA(MUA到MTA或者MTA到MTA之間)和MDA(MUA到MDA之間)並不是同一台服務器,因此,在Outlook等軟件中,我們需要分別填寫SMTP發送服務器的地址和POP3接收服務器的地址。
感興趣的可以自己嘗試使用命令交互:smtp客戶和服務器的命令交互(發)、pop3客戶和服務器的命令交互(收)。注意使用的7位的ascii編碼
smtp
S:220 hamburger.edu
C:HELO crepes.fr
S:250 Hello crepes.fr, please to meet you
C:MAIL FROM:<alice@crepes.fr>
S:250 alice@crepes.fr ... Sender ok
C:RCPT TO:<bob@hamburger.edu>
S:250 bob@hamburger.edu ... Recipient ok
C:DATA
S:354 Enter mail, end with "." on a line by itself
C:Do you like ketchup?
S:How about pickles?
C:.
S:250 Message accepted for delivery
C:QUIT
S:221 hamburger.edu closing connection
pop3
S:+OK POP3 server ready
C:user bob
S:+OK
C:pass hungry
S:+OK user successfully logged on
C:list
S:1 498
S:2 912
S:.
C:retr 1
S:<message 1 contents>
S:.
C:dele 1
C:retr 2
S:<message 1 contents>
S:.
C:dele2
C:quit
S:+OK POP3 server signing off
二、為什么需要搭建自己的郵件服務器?
對於用戶自己的網站來說,發送各種例如注冊通知的郵件是很基本的一個需求,之前我一直用的是騰訊的企業郵箱,感覺挺方便的,直接可以綁定QQ郵箱接收郵件,網站配置一下SMTP也就可以發出郵件。但是在前幾天由於有重要信息需要立即通知用戶,所以選擇了群發郵件的方式。在當我以為一切都是辣么完美的時候,陸續有用戶過來問我什么情況,我都會跟他們說請查收郵件,但是有好幾個人說並沒有任何郵件,於是我試着再發一次,結果返回了錯誤提示。在網上找了下原因,后來看到這個:各大免費郵箱郵件群發賬戶SMTP服務器配置及SMTP發送量限制情況,才知道是因為發信數量限制了。
所以我只好另尋出路了,然后我在知乎上面找到了很多個提供郵件發送的服務商,大概有這些:SendGrid、MailChimp、Amazon SES、SendCloud、Mailgun等等,在看了不少人的建議之后,我選擇了Mailgun。Mailgun注冊和配置都挺簡單,很快我就成功的發出了第一封郵件,懷着這封欣喜,我又發送了幾封郵件,可是悲劇發生在第三封郵件,Mailgun后台有詳細的發送記錄,這個非常不錯,在后台我看到我的郵件被拒收了,原因大概是該服務器IP的發信頻率超過騰訊郵箱限制。所以這里就涉及到IP的問題,目前第三方的郵件發送服務普遍都是共享IP(后面還試過SendCloud、),而共享IP並不能確定是否已經達到接收方的數量限制,一旦達到了就無法再發送。這就是說還需要使用獨立IP才能保證郵件有較高的到達率,接着就看了各家的獨立IP價格,一般都是二十幾甚至四十幾美刀一個月,這對於我們這種小站長郵件需求不高的來說確實有點貴,買台VPS都不用這個價吧。
經過上面這些折騰,也算明白了如果要想順暢的發出郵件的話,除了花錢,就只有自己搭建一個郵件服務器了。
三、如何搭建?linux系統下郵件服務器的搭建(Postfix+Dovecot)
待更
