第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
/etc/hostname
vim /etc/hosts
/etc/hosts
系统的主机名称修改完成后,重启系统:
reboot
查看当前系统的主机名称:
hostname
3、清空 iptables 防火墙默认策略
清空 iptables 防火墙默认策略,并保存防火墙状态,以避免免因防火墙中默认存在的策略阻止了客户端 DNS 解析域名以及邮件的收发。
iptables -F
service iptables save
4、为电子邮件系统提供DNS域名解析服务
一般而言,我们的邮件地址类似于“root@geekxia.cn”这样,也就是按照“用户名@
主机地址(域名)”格式来规范的。因此,要想更好地检验电子邮件系统的配置效果,需要先部署 BIND 服务程序,为电子邮件服务器和客户端提供 DNS 域名解析服务。
安装BIND服务程序:
yum install bind-chroot
配置 named 服务的主配置文件:
vim /etc/named.conf
/etc/named.conf
配置 named 服务的区域配置文件:
vim /etc/named.rfc1912.zones
/etc/named.rfc1912.zones
配置 named 服务的数据配置文件:
vim /var/named/geekxia.cn.zone
/var/named/geekxia.cn.zone
重启 BIND 程序:
systemctl restart named
systemctl enable named
BIND程序的配置文件修改完成后,重启 BIND服务程序,这样电子邮件系统所对应的服务器主机名即为 mail.geekxia.cn,而邮件域为@geekxia.cn。
现在我们使用 nmtui 命令,把服务器的 DNS 地址修改成本地 IP 地址,如下图:
配置DNS Servers5、安装并配置 Postfix 服务程序(发件)
Postfix 是一款由 IBM 资助研发的免费开源电子邮件服务程序,能自动增加、减少进程的数量来保证电子邮件系统的高性能与稳定性。另外,Postfix 服务程序由许多小模块组成,每个小模块都可以完成特定的功能,因此可在生产工作环境中根据需求灵活搭配它们。
1)安装 Postfix 服务程序,并禁用防火墙
yum install postfix
systemctl disable iptables
2)配置 Postfix 服务程序(/etc/postfix/main.cf)
/etc/postfix/main.cf 文件中的主要参数vim /etc/postfix/main.cf
配置 postfix 服务
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
配置 dovecot 服务
3)配置 Dovecot 服务程序的邮件格式和收件的存储路径。
vim /etc/dovecot/conf.d/10-mail.conf
image.png
然后切换到配置 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 程序。
Outlook启动2)在Outlook中配置电子邮件系统的账户名、发件域、登录密码等信息。
输入连接电子邮件系统的账号信息点击“下一步”,通过非加密方式连接登录我们部署的电子邮件系统。
3)在Outlook中成功登录电子邮件系统后,即可开始编写邮件,并发送邮件了。
在Outlook中发邮件4)Outlook发邮件成功后,咱们再回到Linux系统上的电子邮件系统,使用 mail 命令查看新收到的邮件。要想查看邮件的完整内容,只需输入收件人姓名前面的编号即可。
mail三、设置邮件系统的用户别名
1、什么是信箱的用户别名?它有什么用?
用户别名功能是一项简单实用的邮件账户伪装技术,可以用来设置多个虚拟信箱的账户以接受发送的邮件,从而保证自身的邮件地址不被泄露,还可以用来接收自己的多个信箱中的邮件。
2、电子邮件系统的用户别名有什么特点?
在 /etc/aliases 邮件别名服务的配置文件中可以看到,里面定义了大量的用户别名,这些用户别名大多数是 Linux 系统本地的系统账户,而在冒号(:)间隔符后面的root 账户则是用来接收这些账户邮件的人。用户别名可以是 Linux 系统内的本地用户,也可以是完全虚构的用户名字。
/etc/aliases3、自定义邮件系统的用户别名
事实上,/etc/aliases 邮件别名服务的配置文件是专门用来定义用户别名与邮件接收人的映射。除了使用本地系统中系统账户的名称外,我们还可以自行定义一些别名来接收邮件。下面示例,我们创建一个用户别名 gogo:
vim /etc/aliases
newaliases
/etc/aliases
保存并退出 /etc/aliases 邮件别名服务的配置文件后,需要再执行一下 newaliases 命令,其目的是让新的用户别名配置文件立即生效。
这样以后,当我们向 gogo@geekxia.cn 发送邮件时,实际上仍然是发给了 root@geekxia.cn 账户,实际上收到邮件的用户仍然是 root 用户。我们使用 gogo 别名,可以更好保护 root 真名。
本章复习题
复习题本章END 2019-01-13
网友评论