RHEL8 Postfix与Dovecot邮件系统-Linux就这么学15
标签: RHEL8 Postfix与Dovecot邮件系统-Linux就这么学15 博客 51CTO博客
2023-05-21 18:24:02 203浏览
本章将介绍电子邮件(Email)系统的起源,了解 SMTP、POP3、IMAP4 等常见的电子邮件协议,以及 MUA、MTA、MDA 这 3 种服务角色的作用。并演示在 Linux 系统中使用 Postfix 和 Dovecot 服务程序配置电子邮件系统服务的方法,还将结合 bind 服务程序提供的 DNS 域名解析服务来验证客户端主机与服务器之间的邮件收发功能。
15.1 电子邮件系统
20 世纪 60 年代,美苏两国正处于冷战时期,美国军方认为应该在科学技术上保持其领先的地位,这样有助于在未来的战争中取得优势;美国国防部由此发起了一项名为 ARPANET 的科研项目,即大家现在所熟知的阿帕网计划。阿帕网是当今互联网的雏形,它也是世界上第一个运营的数据包交换网络。但是阿帕网很快在 1971 年遇到了严峻的问题—参与阿帕网科研项目的科学家分布在美国不同的地区,甚至还会因为时差的影响而不能及时分享各自的研究成果;因此科学家们迫切需要一种能在计算机之间传递数据的方法。
当时麻省理工学院的 Ray Tomlinson 博士也参与到了阿帕网计划的科研项目中,他觉得有必要设计一种类似于“信件”的传输服务,并为信件准备一个“信箱”,这样即便对方临时离线也能完成数据的接收,等上线后再进行处理即可。于是 Ray Tomlinson 博士用了近一年的时间完成了电子邮件(Email)的设计,并在 1971 年秋天使用 SNDMSG 软件向自己的另一台计算机发送出了人类历史上第一封电子邮件—电子邮件系统在互联网中由此诞生。
电子邮件系统基于邮件协议来完成传输,常见的邮件协议有以下几种。
➢ 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的TCP/25端口。
➢ 邮局协议版本3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的TCP/110端口。
➢ Internet消息访问协议版本4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的TCP/143端口。
用于收发邮件的服务器称为邮件用户代理(Mail User Agent,MUA);用于保存用户邮件的“信箱”服务器,称为邮件投递代理(Mail Delivery Agent,MDA),其工作过程是把来自于邮件传输代理(Mail Transfer Agent,MTA)的邮件保存到本地的收件箱中。 MTA 的工作过程是转发不同电子邮件服务供应商之间的邮件,把来自于 MUA 的邮件转发到目的 MTA 服务器。比如我们从新浪信箱向谷歌信箱发送电子邮件,这封电子邮件的传输过程如图。

我们在部署企业级的电子邮件系统时,有 4 个注意事项。
➢ 添加反垃圾与反毒模块:它能够很有效地阻止垃圾邮件或有害邮件对企业信箱的干扰。
➢ 对邮件加密:可有效保护邮件内容不被黑客盗取和篡改。
➢ 添加邮件监控审核模块:可有效地监控企业全体员工的邮件中是否有敏感词,是否有透露企业资料等违规行为。
➢ 保障稳定性:电子邮件系统的稳定性至关重要,运维人员应做到保证电子邮件系统的稳定运行,并及时做好防范分布式拒绝服务(Distributed Denial of Service,DDoS)侵害的准备。
15.2 部署基础的电子邮件系统
最基础的电子邮件系统要能提供发件服务和收件服务,为此需要使用基于 SMTP 的 Postfix 服务程序提供发件服务功能,并使用基于 POP3 协议的 Dovecot 服务程序提供收件服务功能。这样用户就可以使用 Outlook Express 或 Foxmail 等客户端服务程序正常收发邮件了。 电子邮件系统的工作流程如图。

早期的 Linux 默认使用的发件服务是由 Sendmail 服务程序提供的,而在 RHEL 8 系统中已经替换为 Postfix 服务程序。相较于 Sendmail 服务程序,Postfix 服务程序减少了很多不必要的配置步骤,而且在稳定性、并发性方面也有很大提升。 信箱地址类似于 root@ 这样,也就是按照“用户名@主机地址(域名)”格式来规范的,因此需要先部署 bind 服务程序,为电子邮件服务器和客户端提供 DNS 域名解析。
首先配置服务器主机名称,确保与发信域名一致;清空 iptables 防火墙默认策略,并保存策略状态,避免因防火墙中默认存在的策略阻止了客户端 DNS 解析域名及收发邮件,主用 firewalld 防火墙,把 DNS 协议加入到 firewalld 防火墙的允许列表中。


dnf install bind-chroot 安装 bind,为电子邮件系统提供域名解析,将主配置文件 /etc/named.conf 其中2项设置为:any。具体可以回看第 13 章!

向区域文件 /etc/named.rfc1912.zones 添加下面参数,可先将里面的参考内容清空。创建目录 /var/named/下的数据文件,在 cp 命令后面追加-a 参数,以便让新文件继承原文件的属性和权限信息。


设置好所有配置文件后需重启 bind 服务程序,让电子邮件系统所对应的服务器主机名 ,邮件域@RHEL8probe.com 能生效解析。还有服务器的 DNS 地址修改成本地 IP 地址,并让网卡参数立即生效。


最后对主机名执行 ping 命令,在 ping 通回应结果时,会获得主机名对应的 IP 地址,证明上述配置正确。

15.2.1 配置 Postfix 服务程序
Postfix 是一款由 IBM 资助研发的免费开源电子邮件服务程序,能够很好地兼容 Sendmail 服务程序用户迁移到 Postfix 服务上。Postfix 服务程序的邮件收发能力强于 Sendmail 服务,而且能自动增加、减少进程的数量来保证电子邮件系统的高性能与稳定性;Postfix 服务程序由许多小模块组成,每个小模块都可以完成特定的功能,因此可在生产工作环境中根据需求灵活搭配。
下面开始安装并配置 Postfix 服务程序; Postfix 服务程序主配置文件(/etc/postfix/main.cf),有 738 行的内容绝大多数的内容是注释信息。好在刘老师在翻遍了配置参数的介绍,再结合多年的运维经验后,最终帮我们总结出了 7 个最应该掌握的参数如图。


在 Postfix 服务程序的主配置文件中,总计需要修改 5 处,首先在第 95 行定义一个名为 myhostname 的变量,用来保存服务器的主机名称,然后在第 102 行定义一个名为 mydomain 的变量,用来保存邮件域的名称;先记住变量的名称,后面的参数需要调用它。

继续在第 118 行调用前面的 mydomain 变量,用来定义发出邮件的域。调用变量的好处是避免重复写入信息及便于日后统一修改;在第 135 行定义网卡监听地址,即服务器有多块网卡时哪个 IP 地址对外提供电子邮件服务;如写成 all,表示所有 IP 地址都能提供电子邮件服务。

最后一处修改在第 183 行定义可接收邮件的主机名或域名列表。这里可以直接调用前面定义好的 myhostname 和 mydomain 变量(如果不想调用变量,也可以直接调用变量中的值)

完成后重启 postfix 服务程序,并将其添加到开机启动项中;还需创建电子邮件系统的登录账户,Postfix 与 vsftpd 服务程序一样,都可以调用本地系统的账户和密码,因此在本地系统创建常规账户即可。

15.2.2 配置 Dovecot 服务程序
Dovecot 是一款能够为 Linux 系统提供 IMAP 和 POP3 电子邮件服务的开源服务程序,安全性极高,配置简单,执行速度快,而且占用的服务器硬件资源也较少,因此是一款值得推荐的收件服务程序。
安装并配置 Dovecot 服务程序;在 Dovecot 服务程序的主配置文件 /etc/dovecot/dovecot.conf 中进行修改,首先把第 24 行的 # 号去除,即启用电子邮件协议 imap、pop3 和 lmtp(本地邮件传输协议),然后在这一行下面添加一行参数,允许用户使用明文进行密码验证。因为 Dovecot 服务程序为了保证电子邮件系统的安全而默认强制用户使用加密方式进行登录,由于当前还没有加密系统,所以添加该参数来允许用户的明文登录。


继续在第 49 行,设置允许登录的网段地址,即指定哪些网段的用户才能使用电子邮件系统。如果想允许所有人都能使用则不用修改。

配置邮件格式与存储路径;在 Dovecot 服务程序单独的子配置文件 /etc/dovecot/conf.d/10-mail.conf 中定义一个路径,用于指定要将收到的邮件存放到服务器本地的哪个位置,这个路径默认已经定义,不想自定义的话只需要将第 25 行前面的 # 号删除即可。

然后切换到配置 Postfix 服务程序时创建的 fix 账户,并在家目录中建立用于保存邮件的目录。然后重启 Dovecot 服务并将其添加到开机启动项中。还要记得把上面提到的邮件协议在防火墙中的策略予以放行,这样客户端就能正常访问了。

15.3 客户使用电子邮件系统
如何得知电子邮件系统已经能够正常收发邮件了呢?可以使用 Windows 操作系统中自带的 Outlook 2010 软件来进行测试。请按照下图设置客户端 DNS 服务器和 IP 地址,以便能正常解析邮件域名。

由于当前没有设置可用的 SSL 加密服务,Outlook 软件默认会通过 SSL 加密协议尝试登录电子邮件服务,会进行搜索 fix@RHEL8probe.com 服务器”大约 30~60 秒后,系统会出现登录失败的报错信息,此时只需再次单击“下一步”按钮,即可让 Outlook 软件通过非加密的方式验证登录。
15.3.1 Linux 邮件客户端
如今更多的是使用浏览器或智能手机来收发电子邮件,为了使用更为丰富的编辑功能,还是要依赖专门的邮件客户端。在 Linux 系统下可选的邮件客户端有数十种,例如 Thunderbird、Evolution、Gear、Elementary Mail、KMail、Mailspring、Sylpheed、Claws Mail 等。
Thunderbird 是由 Mozilla 基金会(Firefox 浏览器的生产厂商)发布的一款图形化电子邮件客户端,支持跨平台,拥有各种插件和丰富的功能,而且兼具 Firefox 浏览器的各种优势,用户可以轻松上手。只要不是很早的Linux 系统,光盘镜像中均包含了 Thunderbird 客户端的安装包,配置好软件仓库后即可安装;下面用centos 7作为客户端安装。

这款图形化的客户端程序有两种打开方式。一种是通过在终端中输入 thunderbird 命令后按回车键;另外一种方式是在桌面左上角找到程序菜单,单击 Thunderbird 客户端的图标将其打开如图。

在初次进入 Thunderbird 客户端界面时,会要求用户填写邮件账户的名称、地址和密码, 账户 name 不一定要与系统中的账户名称相同,可以理解成是邮件发送人的昵称, 密码则是系统中账户的密码,然后单击 Continue 按钮。


由于当前没有设置 SSL 邮件加密,因此在下图手动配置模式中,需要将 SSL 选项更改为 None,并将 Authentication 设置为 Normal password。

出于安全方面的考虑,Thunderbird 客户端会提示警告信息。选中 understand the risks 复选框,然后单击 Done 按钮即可,

完成后便来到了 Thunderbird 客户端的使用界面。

接下来即可尝试编写并发送新邮件了;只需在软件界面点击 write,在弹出的页面中编写电子邮件,然后在邮件首行 To 处填写收件人的信箱地址,以subject 处填邮件的内容主题,最下面空白处为邮件内容。

当编写完邮件内容点左上角的 send 发送邮件,便可以在电子邮件服务器上查看到新邮件提醒了,在 RHEL 8 系统中查看邮件的命令是 mailx,需要自行安装。要想查看邮件的完整内容,只需输入收件人姓名前面的编号即可。看完邮件输入 quit 退出。


15.4 设置用户别名信箱
用户别名功能是一项简单实用的邮件账户伪装技术,可以用来设置多个虚拟信箱的账户接收发送的邮件,从而保证自身的邮件地址不被泄露;还可以用来接收自己的多个信箱中的邮件。刚才我们已经顺利地向 root 账户发送了邮件,下面再向 bin 账户发送一封邮件。

在邮件发送后登录到服务器,然后尝试以 bin 账户的身份登录,由于 bin 账户在 Linux 系统中是系统账户,默认的 Shell 终端是/sbin/nologin,因此系统会提示当前账户不可用;但是 root 使用 mailx 命令后,却看到这封原本要发送给 bin 账户的邮件已经被存放到 root 账户的信箱中。


明明发送给 bin 账户的邮件怎么会被 root 账户收到了呢?这就是使用用户别名技术来实现的。在 aliases 邮件别名服务的配置文件 /etc/aliases ,里面定义了大量的用户别名,这些用户别名大多数是 Linux 系统本地的系统账户,而在冒号(:)间隔符后面的 root 账户则是用来接收这些账户邮件的人。用户别名可以是 Linux 系统内的本地用户,也可以是完全虚构的用户名字。

除了使用本地系统中的账户的名称外,我们还可以自行定义一些别名来接收邮件。比如虚拟一个名为 Jack 的账户,而真正接收该账户邮件的是 root,编辑 /etc/aliases 文件设置映射到 root 账户; 新增 aliases 邮件别名服务的配置文件后,需要执行更新 newaliases 命令。


客户端再次发送邮件给 Jack 用户,root 用户再到服务器 mailx 查看。


用户别名技术不仅应用广泛,而且配置也很简单。今后千万不要看到有些网站上提供了很多客服信箱,就认为真的有很多客服人员。
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论
您可能感兴趣的博客
