1. 程式人生 > 實用技巧 >使用Postfix與Dovecot部署郵件系統

使用Postfix與Dovecot部署郵件系統

電子郵件系統

電子郵件系統基於郵件協議來完成電子郵件的傳輸,常見的郵件協議有下面這些。

簡單郵件傳輸協議(Simple Mail Transfer Protocol,SMTP):用於傳送和中轉發出的電子郵件,佔用伺服器的25/TCP埠。

郵局協議版本3(Post Office Protocol 3):用於將電子郵件儲存到本地主機,佔用伺服器的110/TCP埠。

Internet訊息訪問協議版本4(Internet Message Access Protocol 4):用於在本地主機上訪問郵件,佔用伺服器的143/TCP埠。

在電子郵件系統中,為使用者收發郵件的伺服器名為郵件使用者代理(Mail User Agent,MUA)。另外,既然電子郵件系統能夠讓使用者在離線的情況下依然可以完成資料的接收,肯定得有一個用於儲存使用者郵件的“信箱”伺服器,這個伺服器的名字為郵件投遞代理(Mail Delivery Agent,MDA),其工作職責是把來自於郵件傳輸代理(Mail Transfer Agent,MTA)的郵件儲存到本地的收件箱中。其中,這個MTA的工作職責是轉發處理不同電子郵件服務供應商之間的郵件,把來自於MUA的郵件轉發到合適的MTA伺服器。例如,我們從新浪信箱向谷歌信箱傳送一封電子郵件,這封電子郵件的傳輸過程如圖所示。

在生產環境中部署企業級的電子郵件系統時,有4個注意事項請留意。

1.新增反垃圾與反病毒模組:它能夠很有效地阻止垃圾郵件或病毒郵件對企業信箱的干擾。
2.對郵件加密:可有效保護郵件內容不被黑客盜取和篡改。
3.新增郵件監控稽核模組:可有效地監控企業全體員工的郵件中是否有敏感詞、是否有透露企業資料等違規行為。
4.保障穩定性:電子郵件系統的穩定性至關重要,運維人員應做到保證電子郵件系統的穩定執行,並及時做好防範分散式拒絕服務(Distributed Denial of Service,DDoS)攻擊的準備。

部署基礎的電子郵件系統

一個最基礎的電子郵件系統肯定要能提供發件服務和收件服務,為此需要使用基於SMTP協議的Postfix服務程式提供發件服務功能,並使用基於POP3協議的Dovecot服務程式提供收件服務功能。這樣一來,使用者就可以使用Outlook Express或Foxmail等客戶端服務程式正常收發郵件了。電子郵件系統的工作流程如圖所示。

例1:在配置電子郵件服務前

伺服器需要做的:
1.配置伺服器主機名稱,需要保證伺服器主機名稱與發信域名保持一致;
2.清空iptables防火牆預設策略,並儲存策略狀態,避免因防火牆中預設存在的策略阻止了客戶端DNS解析域名及收發郵件;
3.為電子郵件系統提供域名解析,配置好後重啟bind服務,更改網絡卡DNS地址為伺服器本機,重啟網絡卡服務。

vim /etc/hostname                 #配置伺服器主機名稱
mail.linuxprobe.com    
hostname                          #檢視當前伺服器主機名稱,看是否修改成功
iptables -F                       #清空iptables防火牆預設策略
service iptables save             #儲存iptables防火牆當前策略狀態
yum install -y bind-chroot        #安裝bind服務,配置DNS域名解析
vim /etc/named.conf               #編輯bind服務主配置檔案
...
listen-on port 53 { any; };       #允許伺服器上所有IP地址均可提供DNS域名解析服務
...
allow-query { any; };             #允許所有人對本伺服器傳送DNS查詢請求
...
vim /etc/named.rfc1912.zones      #編輯bind服務的區域配置檔案
zone "linuxprobe.com" IN {
type master;
file "linuxprobe.com.zone";
allow-update {none;};
};
cd /var/named                                #進入儲存資料配置檔案以及相關模板檔案的目錄
cp -a named.localhost linuxprobe.com.zone    #複製正向解析模板,複製檔案保留原有許可權屬性
vim linuxprobe.com.zone                      #編輯資料配置檔案
$TTL 1D                
@       IN SOA linuxprobe.com. root.linuxprobe.com. (
 ;  serial
                                                     1D ;  refresh
                                                     1H ;  retry
                                                     1W ;  expire
                                                     3H);  minimum
        NS       ns.linuxprobe.com.    
ns      IN A     192.168.10.10    
@       IN MX 10 mail.linuxprobe.com.    
mail    IN A     192.168.10.10
systemctl restart named    #重啟bind服務
systemctl enable named     #把bind服務加入開機啟動項
vim /etc/sysconfig/network-scripts/ifcfg-eno16777728    #修改網絡卡引數
...
DNS=192.168.10.10
...
systemctl restart network                               #重啟網絡卡服務


配置Postfix服務程式

Postfix服務程式主配置檔案中的重要引數

安裝Postfix:yum install -y postfix。RHEL7預設已經安裝。需要禁用iptables防火牆(systemctl disable iptables),否則外部使用者無法訪問電子郵件系統。

Postfix與vsftpd服務程式一樣,都可以呼叫本地系統的賬戶和密碼。

Postfix服務程式的主配置檔案:/etc/ postfix/main.cf。內容679行(大部分都是註釋)。

例2:在例1基礎上,配置Postfix服務程式。

yum install -y postfix    #安裝postfix服務程式
systemctl disable iptables                 #禁用iptables防火牆
vim /etc/postfix/main.cf                   #編輯Postfix服務的主配置檔案
...
myhostname = mail.linuxprobe.com           #定義一個名為myhostname的變數,用來儲存伺服器的主機名稱
...
mydomain = linuxprobe.com                  #定義一個名為mydomain的變數,用來儲存郵件域的名稱
...
myorigin = $mydomain                       #呼叫前面的mydomain變數,用來定義發出郵件的域(呼叫變數的好處是避免重複寫入資訊,以及便於日後統一修改)。
...
inet_interfaces = all                      #定義網絡卡監聽地址。可以指定要使用伺服器的哪些IP地址對外提供電子郵件服務;也可以乾脆寫成all,代表所有IP地址都能提供電子郵件服務
...
mydestination = $myhostname , $mydomain    #定義可接收郵件的主機名或域名列表
useradd liwh                               #新建使用者liwh(做郵件收發測試用)
echo "linuxprobe" | passwd --stdin liwh    #為使用者liwh設定密碼
systemctl restart postfix                  #重啟postfix服務
systemctl enable postfix                   #把postfix服務加入開機啟動項

配置Dovecot服務程式

Dovecot是一款能夠為Linux系統提供IMAP和POP3電子郵件服務的開源服務程式,安全性極高,配置簡單,執行速度快,而且佔用的伺服器硬體資源也較少。

dovecot服務的主配置檔案:/etc/dovecot/dovecot.conf 。

dovecot服務的子配置檔案:/etc/dovecot/conf.d/10-mail.conf。

Dovecot服務程式為了保證電子郵件系統的安全而預設強制使用者使用加密方式進行登入。

例3:在例2基礎上,配置上Dovercot服務程式。

yum install -y dovecot                            #安裝dovecot服務程式
vim /etc/dovecot/dovecot.conf                     #編輯dovecot服務的主配置檔案
...
protocols = imap pop3 lmtp                        #使得Dovecot服務程式支援的電子郵件協議修改為imap、pop3和lmtp
disable_plaintext_auth = no                       #允許使用者使用明文進行密碼驗證
...
login_trusted_networks = 192.168.10.0/24          #設定允許登入的網段地址
...
vim /etc/dovecot/conf.d/10-mail.conf              #編輯dovecot服務的子配置檔案
...
mail_location = mbox:~/mail:INBOX=/var/mail/%u    #指定要將收到的郵件存放到伺服器本地的位置
...
su - muzi                                         #切換到muzi使用者
mkdir -p mail/.imap/INBOX                         #建立用於儲存郵件的目錄,~/mail:INBOX = home/liwh/mail/.imap/INBOX
exit                                              #退出muzi使用者
systemctl restart dovecot                         #重啟dovecot服務
systemctl enable dovecot                          #把dovecot服務加入開機啟動項



設定使用者別名郵箱

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

編輯aliases郵件別名服務的配置檔案:/etc/aliases。裡面定義了大量的使用者別名,這些使用者別名大多數是Linux系統本地的系統賬戶,而在冒號(:)間隔符後面的root賬戶則是實際用來接收這些賬戶郵件的人。使用者別名可以是Linux系統內的本地使用者,也可以是完全虛構的使用者名稱字。

newaliases命令:讓使用者別名配置檔案的設定立即生效。

例:使用使用者別名技術,使得傳送給[email protected]的郵件,最後被[email protected]接收。

im /etc/aliases    #編輯aliases郵件別名服務的配置檔案
...
muzi: root            #追加別名
...
newaliases          #讓使用者別名配置檔案的設定立即生效



2020-11-24 19:45:44