在創(chuàng)建網(wǎng)站應(yīng)用時,在用戶進行某些操作時需要發(fā)郵件給用戶是一種必不可少的操作。云服務(wù)雖然是一個不錯的選擇。但如果體量太小,或是受到某些條件限制時,自建服務(wù)也許是一個更好的選擇。下面嘗試在 CentOS 7 中搭建發(fā)送郵件的功能。
安裝 Postfix
postfix是Wietse Venema在IBM的GPL協(xié)議之下開發(fā)的MTA(郵件傳輸代理)軟件。postfix是Wietse Venema想要為使用最廣泛的sendmail提供替代品的一個嘗試。在Internet世界中,大部分的電子郵件都是通過sendmail來投遞的,大約有100萬用戶使用sendmail,每天投遞上億封郵件。這真是一個讓人吃驚的數(shù)字。Postfix試圖更快、更容易管理、更安全,同時還與sendmail保持足夠的兼容性。
(為什么用postfix:
1. postfix是免費的:
postfix想要作用的范圍是廣大的Internet用戶,試圖影響大多數(shù)的Internet上的電子郵件系統(tǒng),因此它是免費的。
2. 更快:
postfix在性能上大約比sendmail快三倍。一部運行postfix的臺式PC每天可以收發(fā)上百萬封郵件。
3. 兼容性好:
postfix是sendmail兼容的,從而使sendmail用戶可以很方便地遷移到postfix。Postfix支持/var[/spool]/mail、/etc/aliases、 NIS、和 ~/.forward 文件。
4. 更健壯:
postfix被設(shè)計成在重負(fù)荷之下仍然可以正常工作。當(dāng)系統(tǒng)運行超出了可用的內(nèi)存或磁盤空間時,postfix會自動減少運行進程的數(shù)目。當(dāng)處理的郵件數(shù)目增長時,postfix運行的進程不會跟著增加。
5. 更靈活:
postfix是由超過一打的小程序組成的,每個程序完成特定的功能。你可以通過配置文件設(shè)置每個程序的運行參數(shù)。
6. 安全性
postfix具有多層防御結(jié)構(gòu),可以有效地抵御惡意入侵者。如大多數(shù)的postfix程序可以運行在較低的權(quán)限之下,不可以通過網(wǎng)絡(luò)訪問安全性相關(guān)的本地投遞程序等等。 )
Postfix 現(xiàn)在幾乎已經(jīng)是 MTA (Mail Transfer Agent) 的標(biāo)配了。但在它之前 Sendmail 是標(biāo)配。所以在一些老舊的系統(tǒng)版本中,安裝 Postfix 時需要先刪除 Sendmail。如果系統(tǒng)已經(jīng)安裝了 Postfix,可以略過此步。
使用下面的命令查看系統(tǒng)使用的 MTA 情況:
alternatives --display mta
刪除 Sendmail
sudo yum remove sendmail
安裝 Postfix
sudo yum install postfix
設(shè)置 Postfix 為 MTA
sudo alternatives --set mta /usr/sbin/sendmail.postfix
配置 Postfix
編輯 /etc/postfix/main.cf 文件中如下配置:
myhostname = mail.dyniao.com # 主機名稱
mydomain = dyniao.com # 郵件服務(wù)器的主域名
myorigin = $mydomain # 發(fā)送郵件中顯示的域名
inet_protocols = ipv4 # 支持的網(wǎng)絡(luò)協(xié)議
以上配置只是我在測試時能運行的最小配置,請勿使用于正式場合或生產(chǎn)環(huán)境。
啟動 Postfix:
sudo service postfix start
讓 Postfix 支持開機啟動:
sudo systemctl enable postfix.service
域名配置
完成上面的步驟,已經(jīng)可以往任意郵箱發(fā)送郵件了。但通常情況下只能在對方的垃圾箱中找到。要避免這種情況,還需要對主機進行域名解析的配置,使對方接收郵件的服務(wù)器信任收到的郵件。步驟如下:
添加一個 A 記錄,設(shè)置郵箱用的域名,如: mail.zzxworld.com,指向主機 ip。
添加一個 MX 記錄,指向第一步中添加的郵箱域名。
添加一個 TXT 記錄,記錄值為:
v=spf1 a mx ~all
上面的記錄值表示使用 SPF (Sender Policy Framework) 來防止別人偽造郵件。
等域名解析生效后,就可以正常的從主機發(fā)送郵件了。