☛ 電子郵件工作原理

一個完整的郵件系統除了底層操作系統,還包括 MTA、MDA、MUA 和 MRA 功能。

⑴ MUA ( Mail User Agent;郵件用戶代理 )

郵件用戶代理爲客戶端軟件,它可以提供用戶讀取、編輯、回覆及及時處理郵件的功能,根據使用者的需要,一個操作系統中可以同時存在多個 MUA 程序。一般常見的 MUA 程序包括 Linux 平臺上的 mailx、elm 和 mh 等,以及 Windows 操作系統的 Outlook Express 或 Foxmail。

⑵ MTA ( Mail Transfer Agent;郵件傳輸代理 )

郵件傳輸代理爲服務器運行軟件,即郵件服務器。用戶使用 MUA 發送和接受郵件,這一系列操作看上去是透明的,而實際上是由 MTA 完成的。與 MUA 不同,每個系統只能有一個 MTA 處於工作狀態,負責郵件的發送。類 UNIX 平臺中使用最爲廣泛的 MTA 程序有 Sendmai、Postfix 等。

⑶ MDA ( Mail Delivery Agent;郵件分發代理 )

郵件分發代理爲服務器運行軟件,用來把 MTA 所接收的郵件傳送至指定的郵箱。

⑷ MRA ( Mail Receive Agent;郵件接收代理 )

郵件接收代理負責實現 POP3 與 IMAP 協議,與 MUA 進行交互;相當於你的郵件賬號支持離線郵件收取,而不是打開計算機才能收取郵件。常用的 MRA 有 Dovecot。

下圖所示爲電子郵件的工作原理:

☛ 郵件系統

㈠ 郵件服務器

郵件服務器用於運行相應的網路協議,也是負責發送和接收用戶電子郵件的服務器。

⑴ 郵件交換服務器:該服務器運行 SMTP 協議 ( Simple Mail Transfer Protocol;簡單郵件傳輸協議 ),完成用戶郵件的轉發工作。

⑵ 郵件接收服務器:該服務器運行 POP 協議 ( Post Office Protocol;郵局協議 ) 和 IMAP 協議 ( Internet Message Access Protocol;交互郵件訪問協議 ),接收電子郵件,並進行存儲。

㈡ 郵箱

郵箱 ( Mail Box ) 是在指定郵件服務器上,用戶註冊申請的,如 admin@phei.com.cn,那麼 admin@phei.com.cn 域的郵件服務器就會爲該用戶建立硬盤空間,存儲該用戶的信件。

㈢ 郵件交換記錄

郵件交換記錄 ( MX ) 用於查詢郵件服務器的 DNS 記錄。客戶端在發送 E-Mail 時,只填寫一個目的地的郵件地址,如 admin@phei.com.cn。然而不填寫 admin 用戶的 MTA 郵件服務器地址,郵件是無法發送成功的。這時就必須通過 DNS 服務器存儲的 admin@phei.com.cn 域的 MX 記錄,查詢該域的郵件服務器地址。

㈣ 搭建郵件服務器所需套件

在 Rocky Linux 操作系統中搭建郵件服務需要用到 Sendmail + Dovecot 或 Postfix + Dovecot,其中 Sendmail、Postfix 負責郵件的發送,Dovecot 負責郵件管理。

Postfix 是 Wietse Venema 在 IBM 的 GPL 協議之下開發的 MTA 軟件。Postfix 是 Wietse Venema 想要爲使用最廣泛的 Sendmail 提供替代品的一個嘗試。在 Internet 世界中,大部分的電子郵件都是通過 Sendmail 投遞的,大約有 100 萬用戶使用 Sendmail,每天投遞上億封郵件。Postfix 試圖更快、更容易管理、更安全,同時還與 Sendmail 保持足夠的兼容性。

POP 和 IMAP 是 MUA 從電子郵件服務器中讀取電子郵件時使用的協議。其中 POP3 協議從電子郵件服務器中下載電子郵件並將其存儲起來。IMAP 協議則將電子郵件留在服務器端直接對電子郵件進行管理、操作。Dovecot 是一個開源的 IMAP 和 POP3 電子郵件服務器,由 Timo Sirainen 開發,將安全性放在第一位。另外,Dovecot 支持多種認證方式,所以在功能方面也比較符合一般的應用。

☛ 安裝郵件系統相關套件

㈠ 查詢 Postfix 服務器的 postfix 與 Dovecot 服務器的 dovecot 套件包是否安裝

使用 rpm -qa|grep postfix 命令與 rpm -qa|grep dovecot,查詢 Postfix 服務套件及 Dovecot 套件的安裝情況,如下所示:

如果查詢結果顯示未安裝 postfix、dovecot 套件,就使用 yum -y install postfix dovecot 命令進行安裝,如下所示:

[root@localhost]#yum -y install postfix dovecot

Postfix 是 Rocky Linux 默認安裝的郵件服務器,其主配置文件是 /etc/postfix/main.cf。在 Postfix 的主配置文件中,參數的基本配置格式是 ” 參數名=參數值 “。main.cf 文件中以 “#” 開頭的行表示註釋,起到說明的作用,可以忽略。如果要引用配置文件的參數可以用 “$+參數名” 的形式。在主配置文件中,有 8 個應該重點掌握的參數,這 8 個參數及其功能說明如下:

① myhostname:指定所在主機的主機名,要注意的是一定要用 FQDN 形式,如 mail.yiteng.com。默認爲本地機器名

② mydomain:指定你所在的域名,默認爲 myhostname 指定的域名

③ myorigin:指定發件人所在的域名,默認爲 $mydomain

④ inet_interfaces:指定 postfix 監聽的網路地址,默認爲所有地址

⑤ mydestination:指定本服務器可以接收的郵件域名,如用戶 mail1@phei.com.cn 通過該服務器接收郵件,那麼 mydestination 的值應該設置爲 phei.com.cn。該參數可以有多個值,多值之間用 “,” 號分開。

⑥ mynetworks:設定可轉發哪些主機的郵件

⑦ relay_domain:設置可轉發哪些網域的郵件

⑧ home_mailbox:指定郵件存儲的位置

Dovecot 服務是一個開源的 IMAP/POP3 電子郵件服務器,其主配置文件是 /etc/dovecot/dovecot.conf。在 dovecot.conf 的主配置文件中,參數的基本配置格式是 ” 參數名=參數值 “。dovecot.conf 文件中以 ” # ” 開頭的行表示註釋,起到說明的作用,可以忽略。如果要引用配置文件的參數可以用 ” $+參數名 ” 的形式。在主配置文件中,有兩個應該重點掌握的參數,如下所示:

// 使 Dovecot 支持的電子郵件協議爲 IMAP、POP3 和 LMTP
protocols = imap pop3 lmtp submission

// 設置允許登錄的網段地址,如果想允許所有人都能使用電子郵件系統,就不用修改本參數
login_trusted_networks =

㈡ 安裝認證用的 SASL 套件

原始的 SMTP 協定並沒有身份認證的機制,所以無法針對寄件者進行查覈,不過後來加上 SASL ( Simple Authentication and Security Layer ) 的認證機制,並配合 RFC 2554 號文件所增加的認證協定,讓 SMTP 伺服器也能使用賬號、密碼的認證方式,決定是否轉遞使用者的信件。

所以要使用 SMTP 認證前,必須先安裝 SASL 相關套件,目前幾乎所有的發行版都已經內建此套件,安裝方式如下:

[root@localhost ~ ]# rpm -qa|grep cyrus-sasl
cyrus-sasl-plain-2.1.26-l7.el7.x86_64
cyrus-sasl-lib-2.1.26-l7.el7.x86_64
cyrus-sasl-2.1.26-l7.el7.x86_64
cyrus-sasl-md5-2.1.26-l7.el7.x86_64
cyrus-sasl-scram-2.1.26-l7.el7.x86_64

若未看到上述套件清單,可使用 yum 指令進行安裝:

[root@localhost ~ ]# yum -y install cyrus-sasl

☛ 郵件系統套件相關設定

上述的郵件系統相關套件安裝完畢後,開始進行一些相關的基本設定,利用 gedit 修改 /etc/postfix/main.cf 檔案,在檔案的最下方增加二行設定,令 SASL 套件與 Postfix 套件的運作綁定。這樣一來,用戶在寄發電子郵件時,便可以進行賬號、密碼的認證,通過認證後,信件才得以轉發。

smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

Dovecot 伺服器的設定檔爲 /etc/dovecot/dovecot.conf,其預設值爲啓動 POP3 ( 埠號 110 ) 與 IMAP ( 埠號 143 ),除了這兩種收信協定外,亦包括了 POP3s ( 埠號 995 ) 與 IMAPs ( 埠號 993 ) 這兩個對應且加密的協定服務。若想關閉任何協定,可修改 dovecot.conf 設定檔中的 protocols 設定值,如下:

# options. The paths listed here are for configure --prefix=/usr
# --sysconfdir=/etc --localstatedir=/var

# Protocols we want to be serving.
#protocols = imap pop3 lmtp submission
protocols = imap pop3 lmtp submission

接着在 /etc/dovecot/conf.d/10-mail.conf 檔案中,修改 mail_location 的設定值,如下:

#mail_location =
mail_location = mbox:~/mail:INBOX=/var/mail/%u

當使用者使用 Outlook 等收信軟件收取郵件時,則需再修改 /etc/dovecot/conf.d/10-auth.conf 及 /etc/dovecot/conf.d/10-ssl.conf 這兩個設定檔的設定值。10-ssl.conf 的設定修改如下:

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
# disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps
# plain imap and pop3 are still allowed for local connections
#ssl = required
ssl = no

接着修改 10-auth.conf 設定檔的設定值,修改如下:

##
## Authentication processes
##

# Disable LOGIN command and all other plaintext authentications unless
# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP
# matches the local IP (ie. you're connecting from the same computer), the
# connection is considered secure and plaintext authentication is allowed.
# See also ssl=required setting.
#disable_plaintext_auth = yes
disable_plaintext_auth = no