利用Postfix和Dovecot部署邮件系统
电子邮件系统
电子邮件的发送是由邮件发送方通过邮件用户代理程序(MUA),将编辑好的电子邮件向邮件传输代理服务器(SMTP)服务器)MTA发送。邮件传输代理服务器识别接收者的地址,并向管理该地址的邮件投递代理服务器(POP3服务器)MDA发送消息。邮件投递代理服务器MDA将邮件存放在接收者的电子信箱内,并告知接收者有新邮件到来。接收者通过邮件客户程序连接到服务器后,就会看到服务器的通知,进而打开自己的邮箱查看电子邮件。
在电子邮件系统中,为用户收发邮件的服务器名为邮件用户代理(Mail User Agent,MUA)。另外,既然电子邮件系统能够让用户在离线的情况下依然可以完成数据的接收,肯定得有一个用于保存用户邮件的“信箱”服务器,这个服务器的名字为邮件投递代理(Mail Delivery Agent,MDA),其工作职责是把来自于邮件传输代理(Mail Transfer Agent,MTA)的邮件保存到本地的收件箱中。其中,这个MTA的工作职责是转发处理不同电子邮件服务供应商之间的邮件,把来自于MUA的邮件转发到合适的MTA服务器。
总的来说,一般的网络服务程序在传输信息时就像拨打电话,需要双方同时保持在线,而在电子邮件系统中,当用户发送邮件后不必等待投递工作完成即可下线。如果对方邮件服务器(MTA)宕机或对方临时离线,则发件服务器(MTA)就会把要发送的内容自动的暂时保存到本地,等检测到对方邮件服务器恢复后会立即再次投递,期间一般无需运维人员维护处理,随后收信人(MUA)就能在自己的信箱中找到这封邮件了。
电子邮件系统基于邮件协议来完成电子邮件的传输,常见的邮件协议有下面这些:
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。
邮局协议版本3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。
Internet消息访问协议版本4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的143/TCP端口。
部署基础的电子邮件系统
一个最基础的电子邮件系统肯定要能提供发件服务和收件服务,为此需要使用基于SMTP协议的Postfix服务程序提供发件服务功能,并使用基于POP3协议的Dovecot服务程序提供收件服务功能。这样一来,用户就可以使用Outlook Express或Foxmail等客户端服务程序正常收发邮件了。电子邮件的工作流程如下图所示:
一般而言,我们的信箱地址类似于“root@xcu.edu.cn"这样,也就是按照“用户名@主机地址(域名)”格式来规范的。需要用到域名解析,因此,要想更好地检验电子邮件系统的配置效果,需要先部署bind服务程序,为电子邮件服务器和客户端提供DNS域名解析服务。
部署邮件服务器:
(演示实验中用到的centos由于我改过一次主机名,因此命令中的名字为mail,截图中为cd2,实际为同一台centos7)
1.修改网卡配置文件
[root@mail ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
此处网卡文件以自己网卡配置文件为准
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=8064d857-6aa8-4645-ad97-eec8dc05108b
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.131
GATEWAY=192.168.1.3
NETMASK=255.255.255.0
DNS1=192.168.1.131 #由于邮件服务器安装DNS,同时充当DNS服务器,所以此处DNS地址配置为自己的ip
2.修改DNS主配置文件,为电子邮件系统提供域名解析。(本博客着重讲述如何部署邮件系统,不再演示其他DNS配置文件的配置)
[root@mail ~]# vim /var/named/named.xcu.edu.cn
在配置文件中添加内容,保证邮件服务器域名可以正常解析
$TTL 86400
@ IN SOA @ master.xcu.edu.cn. (
20161012
86400
3600
86400
10800 )
@ IN NS master.xcu.edu.cn.
master IN A 192.168.1.131
www IN A 192.168.1.131
ftp IN A 192.168.1.139
mail IN A 192.168.1.131 #添加此行和下一行内容
@ IN MX 10 mail.xcu.edu.cn.
之后重启dns服务,并看域名是否可用
[root@mail ~]# systemctl restart named.service
[root@mail ~]# nelookup
如下图即为解析成功,域名可用
3.安装并配置MTA 服务器postfix
[root@mail ~]# yum install postfix
之后检查安装,如下图即为安装成功
之后配置Postfix服务程序主配置文件
[root@mail ~]# vim /etc/postfix/main.cf
需要修改的参数如下表
参数 | 作用 |
---|---|
myhostname | 邮局系统的主机名 |
mydomain | 邮局系统的域名 |
myorigin | 从本机发出邮件的域名名称 |
inet_interfaces | 监听的网卡接口 |
mydestination | 可接收邮件的主机名或域名 |
mynetworks | 设置可转发哪些主机的邮件 |
relay_domains | 设置可转发哪些网域的邮件 |
home_mailbox | 设定邮件存放位置 |
inet_protocols | 设定 postfix 的监听 IP 协议 |
演示实验配置如下
myhostname = mail.xcu.edu.cn #设定主机名
mydomain = xcu.edu.cn #指定邮件域
myorigin = $mydomain #用来定义发出邮件的域,此处直接调用前面的mydomain变量
inet_interfaces = all #设定 postfix 的监听接口,可以指定要使用服务器的哪些IP地址 对外提供电子邮件服务,直接设为all即可
inet_protocols = all #设定 postfix 的监听 IP 协议,也设置为all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#设定能够收信的主机名或域名
mynetworks = 192.168.8.0/24, 127.0.0.0/8,hash:/etc/postfix/access
#规定信任的客户端,可转发哪些主机的邮件
relay_domains = $mydestination #可转发哪些网域的邮件,这里直接调用mydestination变量 home_mailbox = Maildir/ #设定邮件存放位置
之后重启服务并查看服务是否正常运行
[root@mail ~]# systemctl restart postfix.service
[root@mail ~]# systemctl status postfix
如下图所示即为正常运行
4.安装及配置MRA 服务器
首先需要安装软件
[root@linuxprobe ~]# yum install dovecot
之后配置部署Dovecot服务程序,需要在Dovecot服务程序的主配置文件中进行如下修改
[root@mail ~]# vim /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp #把Dovecot服务程序支持的电子邮件协议修改为imap、 pop3和lmtp
disable_plaintext_auth = no #允许用户使用明文进行密码验证
login_trusted_networks = 192.168.1.0/24 #设置允许登录的网段地址
之后配置邮件格式及存储路径
[root@mail ~]# vim /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir #配置邮件格式与存储路径
然后重启Dovecot服务即可
[root@mail ~]# systemctl restart dovecot
本地测试及客户使用电子邮件系统
本地发送给其他用户邮件
命令如下:
[root@mail ~]# mail 用户名
Subject: 邮件名
文件内容
符号“.”结束并发送内容
EOT
如下示例为用户root发送给abc邮件:
然后需要切换到用户abc,再查看邮件是否接收,命令如下
[root@mail ~]# su - abc #切换到用户abc
[root@mail ~]# mail -f ~/Maildir/ #查看邮件
如下图所示,即为成功收到邮件
Outlook测试邮件系统
如何得知电子邮件系统已经能够正常收发邮件了呢?还可以使用Windows操作系统中自带的Outlook软件来进行测试
以下示例为在一台WindowsXP中演示邮件发送
(1)首先配置客户端的ip地址及dns,dns配置为邮件服务器(同时为dns服务器)的ip
(2)之后打开outlook进行配置服务器及设置账户等
输入用户名
(3)输入用户邮箱
(4)下图中两个服务器地址均填写为邮件服务器的域名
(5)之后输入用户名密码即可,密码即为系统账户密码
(6)之后向root发送一封测试邮件
(7)然后再回电子邮件服务器查看是否收到
查看邮件:
[root@mail ~]# mail -f ~/Maildir/
如下图,成功接收。
以上为利用Postfix和Dovecot部署邮件系统及测试过程。