☛ 电子邮件工作原理

一个完整的邮件系统除了底层操作系统,还包括 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