一、简介和概念
电子邮件系统是我们在日常工作、生活中最常用的一个网络服务,本章将首先介绍电子邮件系统的起源,然后介绍SMTP、POP3、IMAP4等常见的电子邮件协议,以及MUA、MTA、MDA这三种服务角色的作用。
1、常见的邮件协议:
- 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出的电子邮件,占用服务器的25/TCP端口。
- 邮局协议版本3(Post Office Protocol 3):用于将电子邮件存储到本地主机,占用服务器的110/TCP端口。
- Internet消息访问协议版本4(Internet Message Access Protocol 4):用于在本地主机上访问邮件,占用服务器的143/TCP端口。
2、几个要知道的名词
- 邮件投递代理(Mail User Agent,MDA):能够让用户在离线的情况下依然可以完成数据的接收,其工作职责是把来自于邮件传输代理(Mail Transfer Agent,MTA)的邮件保存到本地的收件箱中。
- 用户代理(Mail User Agent,MUA):这是在电子邮件系统中为用户收发邮件的服务器。
- 邮件传输代理(Mail Transfer Agent,MTA):工作职责是转发处理不同电子邮件服务供应商之间的邮件,把来自于MUA的邮件转发到合适的MTA服务器。
- 三者的关系:
3、部署时4个注意事项。
添加反垃圾与反病毒模块:它能够很有效地阻止垃圾邮件或病毒邮件对企业信箱的干扰。
对邮件加密:可有效保护邮件内容不被黑客盗取和篡改。
添加邮件监控审核模块:可有效地监控企业全体员工的邮件中是否有敏感词、是否有透露企业资料等违规行为。
保障稳定性:电子邮件系统的稳定性至关重要,运维人员应做到保证电子邮件系统的稳定运行,并及时做好防范分布式拒绝服务(Distributed Denial of Service,DDoS)攻击的准备。
4、实验环境
服务器 | 软件 | 系统版 | ip |
---|---|---|---|
DNS服务器 | bind-chroot | centos-7 1810.ios | 192.168.6.11 |
Mail服务器 | Postfix与Dovecot | centos-7 1810.ios | 192.168.6.11 |
客户端程序 | Foxmail | windos10 | 192.169.1.9 |
二、部署电子邮件系统
一个最基础的电子邮件系统肯定要能提供发件服务和收件服务,为此需要使用基于SMTP协议的Postfix服务程序提供发件服务功能,并使用基于POP3协议的Dovecot服务程序提供收件服务功能。这样一来,用户就可以使用Outlook Express或Foxmail等客户端服务程序正常收发邮件了。电子邮件系统的工作流程如图所示。
一般而言,信箱地址以“用户名@主机地址(域名)”格式来规范的。要想更好地检验电子邮件系统的配置效果,需要先部署bind服务程序,为电子邮件服务器和客户端提供DNS域名解析服务。
1、配置域名解析服务器
第1步:配置服务器主机名称,需要保证服务器主机名称与发信域名保持一致
[root@mail~]# vim /etc/hostname
mail.xhq.com
[root@mail~]# hostname mail.xhq.com
第2步:清空iptables防火墙默认策略,并保存策略状态,避免因防火墙中默认存在的策略阻止了客户端DNS解析域名及收发邮件:
[root@mail ~]# iptables -F
[root@mail ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
第3步:配置主机网络
[root@mail ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
HWADDR="00:0c:29:83:18:c4"
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="778d7923-41f6-4951-b129-1844a99061c9"
DEVICE="ens33"
NETMASK="255.255.255.0"
GATEWAY="192.168.6.2"
IPADDR="192.168.6.11"
ONBOOT="yes"
DNS1=192.168.6.11 //注意将此处修改为DNS主机地址
DNS2="180.76.76.76"
第4步:为电子邮件系统提供域名解析。这里使用bind-chroot服务程序。
[root@mail ~]# vim /etc/named.conf //编辑主配置文件
bindkeys-file "/etc/named.root.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.xhq.zones"; //加载区域配置文件
# include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
"/etc/named.conf" 63L, 1829C
[root@mail ~]# vim /etc/named.xhq.zones //编辑区域配置文件
zone "xhq.com" IN { //正向解析文件
type master;
file "named.xhq.com";
allow-update { none; };
};
zone "6.168.192.in-addr.arpa" IN { //反向解析文件
type master;
file "named.6.168.192";
allow-update { none; };
};
[root@mail ~]# vim /var/named/named.xhq.com //编辑正向解析配置文件
$TTL 1D
@ IN SOA xhq.com. root.xhq.com. (
0;serial
1D;refresh
1H;retry
1W;expire
3H);minimum
NS ns.xhq.com.
ns IN A 192.168.6.11
@ IN MX 10 mail.xhq.com.
mail IN A 192.168.6.11
注意:
第5步:重启DNS服务
[root@mail ~]# systemctl restart named
[root@mail ~]# systemctl enable named
2、配置Postfix服务程序
软件特点:
- 免费开源
- 能够很好兼容Sendmail服务程序,可以方便Sendmail用户迁移到Postfix服务上
- Postfix服务程序的邮件收发能力强于Sendmail服务
- 而且能自动增加、减少进程的数量来保证电子邮件系统的高性能与稳定性
- Postfix服务程序由许多小模块组成,每个小模块都可以完成特定的功能,因此可在生产工作环境中根据需求灵活搭配它们。
第1步:安装软件并关掉防火墙
[root@mail ~]# yum install postfix
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
* base: mirror.lzu.edu.cn
* extras: mirror.lzu.edu.cn
* updates: mirrors.ustc.edu.cn
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): updates/7/x86_64/primary_db | 2.1 MB 00:00:00
(2/2): extras/7/x86_64/primary_db | 194 kB 00:00:01
正在解决依赖关系
--> 正在检查事务
---> 软件包 postfix.x86_64.2.2.10.1-7.el7 将被 升级
---> 软件包 postfix.x86_64.2.2.10.1-9.el7 将被 更新
--> 解决依赖关系完成
[root@mail ~]# systemctl disable firewalld //红帽系统 systemctl disable iptables
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
查看是否安装成功
第2步:配置Postfix服务程序 (主配置文件 :/etc/ postfix/main.cf)
Postfix服务程序主配置文件中的重要参数
参数 | 作用 |
---|---|
myhostname | 邮局系统的主机名 |
mydomain | 邮局系统的域名 |
myorigin | 从本机发出邮件的域名名称 |
inet_interfaces | 监听的网卡接口 |
mydestination | 可接收邮件的主机名或域名 |
mynetworks | 设置可转发哪些主机的邮件 |
relay_domains | 设置可转发哪些网域的邮件 |
vim命令 set number | 显示行号 |
[root@mail ~]# vim /etc/postfix/main.cf
308 # In the case of SMTP, specify a domain, host, host:port, [host]:port,
309 # [address] or [address]:port; the form [host] turns off MX lookups.
:set number
解决注释太多的问题
备份主配置文件:
[root@mail ~]# cp -a /etc/postfix/main.cf /etc/postfix/main.back
去注释行和空行
[root@mail ~]# cat /etc/postfix/main.cf |grep -v ^$|grep -v ^#|grep -v " #" > /etc/postfix/a.cf
[root@mail ~]# mv /etc/postfix/a.cf /etc/postfix/main.cf
mv:是否覆盖"/etc/postfix/main.cf"? y
修改配置文件
[root@mail ~]# cat /etc/postfix/main.cf
myhostname=mail.xhq.com //邮局系统的主机名
mydomain = xhq.com //邮局系统的域名,用来保存邮件域的名称
myorigin = $mydomain //从本机发出邮件的域名名称
inet_interfaces = all //监听的网卡接口可以选择all所有IP
mydestination = $myhostname , $mydomain
inet_protocols = all
第3步:创建电子邮件系统的登录账户。
[root@mail ~]# useradd lisi
[root@mail ~]# echo "lisi@123" | passwd --stdin lisi
更改用户 boss 的密码 。
passwd:所有的身份验证令牌已经成功更新。
第4步:重启服务
[root@mail ~]# systemctl restart postfix
[root@mail ~]# systemctl enable postfix
3、配置Dovecot服务程序
功能:Dovecot是一款能够为Linux系统提供IMAP和POP3电子邮件服务的开源服务程序
软件特点:
- 开源服务程序
- 安全性极高,配置简单,执行速度快
- 占用的服务器硬件资源也较少
第1步:安装Dovecot服务程序软件包
[root@mail ~]# yum install dovecot
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirror.lzu.edu.cn
* extras: mirror.lzu.edu.cn
* updates: mirrors.ustc.edu.cn
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
正在解决依赖关系
--> 正在检查事务
---> 软件包 dovecot.x86_64.1.2.2.36-6.el7 将被 安装
--> 正在处理依赖关系 portrese
第2步:配置部署Dovecot服务程序(/etc/dovecot/dovecot.conf)
[root@mail ~]# vim /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp //电子邮件协议修改为imap、pop3和lmtp
disable_plaintext_auth = no //允许用户使用明文进行密码验证
#login_trusted_networks = //只允许某些网络访问,注释掉就所有网络都可访问
注意:允许用户使用明文进行密码验证,之所以这样操作,是因为Dovecot服务程序为了保证电子邮件系统的安全而默认强制用户使用加密方式进行登录,而由于当前还没有加密系统,因此需要添加该参数来允许用户的明文登录。
第3步:配置邮件格式与存储路径(第24行开始)
[root@mail ~]# vim /etc/dovecot/conf.d/10-mail.conf
………………省略部分输出信息………………
24 # mail_location = maildir:~/Maildir
25 mail_location = mbox:~/mail:INBOX=/var/mail/%u //用于指定要将收到的邮件存放到服务器本地的哪个位置
26 # mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
………………省略部分输出信息………………
第4步切换到配置Postfix服务程序时创建的boss账户,并在家目录中建立用于保存邮件的目录。记得要重启Dovecot服务并将其添加到开机启动项中。
[root@mail ~]# su - lisi
[boss@mail ~]$ mkdir -p mail/.imap/INBOX
[boss@mail ~]$ exit
登出
[root@mail ~]# systemctl restart dovecot
[root@mail ~]# systemctl enable dovecot
Created symlink from /etc/systemd/system/multi-user.target.wants/dovecot.service to /usr/lib/systemd/system/dovecot.service.
[root@mail ~]#
三、客户使用电子邮件系统
搭建好所有部署之后我们来测试下能否正常上手,这里选择windos10 平台,软件我们选Outlook,那嘛,首先我们要配置下主机网络。
1、客户端主机网络设置
这里我们配置主机地址为i192.168.1.9 DNS1为192.168.6.11(我们之前配置好的DNS服务器地址)
2、客户端软件设置
第1步:在Windows 7系统中运行Foxmail软件程序
第2步:配置电子邮件账户。
设置相关参数点击创建:
第3步:向其他信箱发送邮件。
第4步:在root中查看收到的信件。
可以看到root收到了来自lisi的邮件。证明咱们的实验就算成功了,接下来主要介绍咱们实验中会遇到的一些坑儿(河南话)。
3、部署中可能遇到的一些问题
问题一、用客户端登录时提示找不到服务器或连接超时,这可能是什么原因导致的?
可能的原因:
- 域名解析服务器问题,可以通过客户机ping相应的服务器域名来检查域名服务器是否正常工作。
- 防火墙的问题,如果是端口无法访问,首先应该想到是否是防火的问题,可以先关闭防火墙,再次测试,看是否成功 。
- 配置文件的问题,配置文件出问题也是会导致无法连接的,如果是发件箱无法连接,可以通过查看/etc/poxfix/master.cf的smtp 参数
问题二、25端口连接不上,或者telnet无法连接是什么问题?
可能的原因:
- 可能25端口被占用 ,如果有占用程序 kill -9 PID 杀了那个程序重启 postfix。
- 防火墙的问题,可以先关闭防火墙,再次测试,看是否成功 。
问题三、 客户端无法配置好DNS还是无法使用的问题?
可能的原因:
-
nslookup可以使用但ping不通,可能是客户机配置了网关地址。
可能的原因:* -
域名解析服务器问题,可以通过客户机ping相应的服务器域名来检查域名服务器是否正常工作。
-
防火墙的问题,如果是端口无法访问,首先应该想到是否是防火的问题,可以先关闭防火墙,再次测试,看是否成功 。
-
配置文件的问题,配置文件出问题也是会导致无法连接的,如果是发件箱无法连接,可以通过查看/etc/poxfix/master.cf的smtp 参数
问题二25端口连接不上,或者telnet无法连接是什么问题?
可能的原因:
- 可能25端口被占用 ,如果有占用程序 kill -9 PID 杀了那个程序重启 postfix。
- 防火墙的问题,可以先关闭防火墙,再次测试,看是否成功 。
问题三 客户端无法配置好DNS还是无法使用的问题?
可能的原因:
- nslookup可以使用但ping不通,可能是客户机配置了网关地址。
- 可以ping通但地址不对,有可能是DNS配置问题,或者客户机之前的缓存