Linux就該這麼學 | 第15章 部署電子郵件系統

第15章:使用 Postfix 與 Dovecot 部署郵件系統

本章學習內容:電子郵件系統的起源;有哪些常見的電子郵件協議?如何部署一個郵件系統?如何設置郵件系統的用戶別名?郵件系統的控制與管理。

一、關於電子郵件系統

1、電子郵件的誕生

本書第 10 章和第 11 章介紹的 Web 服務和 FTP 文件傳輸服務也能實現數據交換,但是這些服務的數據傳輸方式就像“打電話”那樣,需要雙方同時在線才能完成傳輸工作。

因此有必要設計一種類似於“信件”的傳輸服務,併爲信件準備一個“信箱”,這樣即便對方臨時離線也能完成數據的接收,等上線後再進行處理即可。

Ray Tomlinson 博士用了近一年的時間完成了電子郵件(Email)的設計,並在 1971 年秋天使用 SNDMSG 軟件向自己的另一臺計算機發送出了人類歷史上第一封電子郵件—電子郵件系統在互聯網中由此誕生!

2、關於電子郵件的地址名稱

既然要在互聯網中給他人發送電子郵件,那麼對方用戶用於接收電子郵件的名稱必須是唯一的。因此,Ray Tomlinson 博士決定選擇使用“姓名@計算機主機名稱”的格式來規範 電子信箱的 名稱。

3、有哪些常見的郵件協議?

4、什麼是 MUA、MDA、MTA?

在電子郵件系統中,爲用戶收發郵件的服務器名爲郵件用戶代理(Mail User Agent,MUA)。

另外,既然電子郵件系統能夠讓用戶在離線的情況下依然可以完成數據的接收,肯定得有一個用於保存用戶郵件的“信箱”服務器,這個服務器的名字爲郵件投遞代理(Mail Delivery Agent,MDA),其工作職責是把來自於郵件傳輸代理(Mail Transfer Agent,MTA)的郵件保存到本地的收件箱中。其中,這個 MTA 的工作職責是轉發處理不同電子郵件服務供應商之間的郵件,把來自於 MUA 的郵件轉發到合適的 MTA 服務器。

示例,我們從新浪信箱向谷歌信箱發送一封電子郵件,這封電子郵件的傳輸過程如下圖示:

總的來說,一般的網絡服務程序在傳輸信息時就像撥打電話,需要雙方同時保持在線,而在電子郵件系統中,當用戶發送郵件後不必等待投遞工作完成即可下線。如果對方郵件服務器(MTA)宕機或對方臨時離線,則發件服務器(MTA)就會把要發送的內容自動的暫時保存到本地,等檢測到對方郵件服務器恢復後會立即再次投遞,期間一般無需運維人員維護處理,隨後收信人(MUA)就能在自己的信箱中找到這封郵件了。

5、在企業生產環境中部署郵件系統,需要注意哪些問題?

二、部署基礎的電子郵件系統

一個最基礎的電子郵件系統肯定要能提供發件服務和收件服務,爲此需要使用基於SMTP 協議的 Postfix 服務程序提供發件服務功能,並使用基於 POP3 協議的 Dovecot 服務程序提供收件服務功能。

這樣一來,用戶就可以使用 Outlook Express 或 Foxmail 等客戶端服務程序正常收發郵件了。電子郵件系統的工作流程如下圖示:

1、關於 Postfix 服務程序

在 RHEL 5、RHEL 6 以及諸多早期的 Linux 系統中,默認使用的發件服務是由 Sendmail 服務程序提供的,而在 RHEL 7 系統中已經替換爲 Postfix 服務程序。

2、配置郵件服務器的主機名稱

要保證郵件服務器主機名稱與發信域名是一樣的。

vim  /etc/hostname
vim  /etc/hosts
系統的主機名稱修改完成後,重啓系統:
reboot
查看當前系統的主機名稱:
hostname

3、清空 iptables 防火牆默認策略

清空 iptables 防火牆默認策略,並保存防火牆狀態,以避免免因防火牆中默認存在的策略阻止了客戶端 DNS 解析域名以及郵件的收發。

iptables  -F
service  iptables  save

4、爲電子郵件系統提供DNS域名解析服務

一般而言,我們的郵件地址類似於“[email protected]”這樣,也就是按照“用戶名@
主機地址(域名)”格式來規範的。因此,要想更好地檢驗電子郵件系統的配置效果,需要先部署 BIND 服務程序,爲電子郵件服務器和客戶端提供 DNS 域名解析服務。

安裝BIND服務程序:
yum  install  bind-chroot
配置 named 服務的主配置文件:
vim  /etc/named.conf
配置 named 服務的區域配置文件:
vim  /etc/named.rfc1912.zones
配置 named 服務的數據配置文件:
vim  /var/named/geekxia.cn.zone
重啓 BIND 程序:
systemctl  restart  named
systemctl  enable  named

BIND程序的配置文件修改完成後,重啓 BIND服務程序,這樣電子郵件系統所對應的服務器主機名即爲 mail.geekxia.cn,而郵件域爲@geekxia.cn。

現在我們使用 nmtui 命令,把服務器的 DNS 地址修改成本地 IP 地址,如下圖:

5、安裝並配置 Postfix 服務程序(發件)

Postfix 是一款由 IBM 資助研發的免費開源電子郵件服務程序,能自動增加、減少進程的數量來保證電子郵件系統的高性能與穩定性。另外,Postfix 服務程序由許多小模塊組成,每個小模塊都可以完成特定的功能,因此可在生產工作環境中根據需求靈活搭配它們。

1)安裝 Postfix 服務程序,並禁用防火牆

yum  install  postfix
systemctl  disable  iptables

2)配置 Postfix 服務程序(/etc/postfix/main.cf)

vim  /etc/postfix/main.cf

3)爲電子郵件系統創建登錄賬戶。postfix 與 vsftpd 服務程序一樣,都可以調用本地系統的賬戶和密碼,因此在本地系統創建常規賬戶即可。然後重啓 postfix 服務,並將其添加到開機啓動項中去。

useradd  boss
echo  "geekxia" | passwd  --stdin  boss
systemctl  restart  postfix
systemctl  enable  postfix

6、安裝並配置 Dovecot 服務程序(收件)

Dovecot 是一款能夠爲 Linux 系統提供 IMAP 和 POP3 電子郵件服務的開源服務程序,安全性極高,配置簡單,執行速度快,而且佔用的服務器硬件資源也較少,因此是一款值得推薦的收件服務程序。

1)安裝 Dovecot 服務程序,安裝之前先配置好 Yum 軟件倉庫。

yum  install  dovecot

2)配置部署 Dovecot 服務程序(/etc/dovecot/dovecot.conf)

vim  /etc/dovecot/dovecot.conf

3)配置 Dovecot 服務程序的郵件格式和收件的存儲路徑。

vim  /etc/dovecot/conf.d/10-mail.conf

然後切換到配置 Postfix 服務程序時所創建的 boss 賬戶,並在其家目錄中建立用於保存郵件的目錄。

su  -  boss
mkdir  -p  mail/.imap/INBOX
exit

4)重啓 dovecot 服務並將其添加到開機啓動項中。

systemctl  restart  dovecot
systemctl  enable  dovecot

7、測試上述已部署完成的電子郵件系統

在Windows操作系統中,可以使用其自帶的Outlook軟件來進行測試,也可以使用其它電子郵件客戶端來測試,比如Foxmail等。

測試前準備,把上述我們部署的電子郵件系統及DNS服務器機器的IP地址設置爲 192.168.10.10,把測試機器的IP地址設置爲192.168.10.30。

1)在測試機器(Windows系統)上啓動 Outlook 程序。

2)在Outlook中配置電子郵件系統的賬戶名、發件域、登錄密碼等信息。

點擊“下一步”,通過非加密方式連接登錄我們部署的電子郵件系統。

3)在Outlook中成功登錄電子郵件系統後,即可開始編寫郵件,併發送郵件了。

4)Outlook發郵件成功後,咱們再回到Linux系統上的電子郵件系統,使用 mail 命令查看新收到的郵件。要想查看郵件的完整內容,只需輸入收件人姓名前面的編號即可。

三、設置郵件系統的用戶別名

1、什麼是信箱的用戶別名?它有什麼用?

用戶別名功能是一項簡單實用的郵件賬戶僞裝技術,可以用來設置多個虛擬信箱的賬戶以接受發送的郵件,從而保證自身的郵件地址不被泄露,還可以用來接收自己的多個信箱中的郵件。

2、電子郵件系統的用戶別名有什麼特點?

在 /etc/aliases 郵件別名服務的配置文件中可以看到,裏面定義了大量的用戶別名,這些用戶別名大多數是 Linux 系統本地的系統賬戶,而在冒號(:)間隔符後面的root 賬戶則是用來接收這些賬戶郵件的人。用戶別名可以是 Linux 系統內的本地用戶,也可以是完全虛構的用戶名字。

3、自定義郵件系統的用戶別名

事實上,/etc/aliases 郵件別名服務的配置文件是專門用來定義用戶別名與郵件接收人的映射。除了使用本地系統中系統賬戶的名稱外,我們還可以自行定義一些別名來接收郵件。下面示例,我們創建一個用戶別名 gogo:

vim  /etc/aliases
newaliases

保存並退出 /etc/aliases 郵件別名服務的配置文件後,需要再執行一下 newaliases 命令,其目的是讓新的用戶別名配置文件立即生效。

這樣以後,當我們向 [email protected] 發送郵件時,實際上仍然是發給了 [email protected] 賬戶,實際上收到郵件的用戶仍然是 root 用戶。我們使用 gogo 別名,可以更好保護 root 真名。

本章複習題


本章END 2019-01-13

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章