第十六章 邮件服务(一)

2019-07-04 14:37:01 浏览数 (2)

第十六章 邮件服务(一)

16.1 邮件服务简介

我们在日常工作、生活中,除了访问访问网站、下载资源,还经常要收发邮件。这就需要使用到邮件服务。而在企业中,一般都会给员工注册企业内部邮箱,便于工作中的沟通。企业邮箱现今使用较多的是腾讯、网易等公司提供的企业邮箱,也就是借助于腾讯、网易等公司的服务器,建立自己的邮箱域,如:XXX@rzz.com等,然后,员工就可以注册并使用本公司内的邮箱账号办公了。

当然,我们也可以在企业内部自己部署一台邮件服务器,供企业内部使用。本章就来介绍一下邮件服务器的基本配置过程。

16.1 .1邮件服务原理

提到邮件服务,它使用的协议是smtp(简单邮件传输协议),还会使用到两个辅助协议pop3(邮局协议),IMAP4(交互式邮件存取协议)。它们的端口如下:

SMTP:TCP 25

POP3:TCP 110

IMAP:TCP 143

由于邮件收发大多要经过广域网,那么对于安全性要求就会比较高,所以邮件的通信可以附加ssl(安全套阶层协议)做安全验证。则这三个协议附加ssl后的协议名为:SMTPs pop3s imap4s(类似于https=http ssl),端口分别为:

SMTPs:TCP 465

POP3s:TCP 995

IMAPs:TCP 993

下面,来具体介绍一下各协议的功能。

我们在网上收发邮件,与真实生活中给朋友寄信是一个原理,假设我们在北京要给上海的朋友写一封信,那么信的邮寄过程应该是:我们把信交给北京的邮局,由北京的邮局递送到上海的邮局,再由上海的邮局发送到上海的朋友家中。网络的邮件发送与这个过程基本一致,假设我们是qq邮箱,要给163邮箱发送邮件,过程是从我们的个人邮箱,把邮件发送给qq的邮件服务器,再由qq的邮件服务器转发给163的邮件服务器,163的邮件服务器再转给客户邮箱。这个过程中邮件服务器就起到了邮局的作用。

邮件服务器之间收发邮件时使用的协议就是SMTP协议。若不做安全验证,通信端口就是TCP 25,若增加ssl安全验证,则端口就是TCP 465。pop3与imap4协议是客户端使用邮箱管理软件(如:outlook、foxmail等)收发邮件时使用的协议,不同的是pop3协议会把邮件真实的从服务器上下载到客户主机上,而imap4协议只会查看、管理服务器上的邮件,而不会做邮件下载。

但是,我们日常中登录邮箱,更多的是使用浏览器通过网页访问的,那就需要邮件服务器上支持web服务并结合smtp协议。

SMTP服务器与客户机的通信原理如下图:

如上图:邮件服务器提供web、smtp、pop3、imap4服务,收发邮件都使用smtp协议;客户端根据访问方式,如果使用浏览器登录邮箱,其实邮件是未做下载的,只是远程管理邮箱,删除邮件、回信等操作,如果客户端使用outlook、foxmail等软件,发送邮件时使用smtp协议,接收邮件时使用pop3协议,会把邮件下载的客户机上,如果只想管理邮件,不需要下载,则可以使用IMAP4协议。

再来介绍一下服务器之间的通信过程:

如图,假设一位qq邮箱的用户,要给163邮箱的用户发送邮件,qq的邮件服务器收到邮件中只有接收的邮箱地址,并不知道163的邮件服务器的ip是多少,所以就会向DNS服务器发送询问请求,DNS服务器找到163的区域,进行两次解析,第一次查看MX记录,查到得到163邮件服务器的域名,第二次再通过A记录将域名解析成ip,反馈给QQ邮件服务器。则QQ邮件服务器就可以通过ip寻址到163的邮件服务器,把邮件发送过去。163邮件服务器收到邮件后,也会到DNS服务器上确认一下接收者是否是自己,确认后接收邮件,再转给客户端。

诚然,CentOS中有多种邮件服务的工具,如:postfix、sendmail等,但因为postfix配置较为简单、直接,所以企业中使用率较高的是postfix工具。

16.2 邮件服务器配置

16.2.1 配置服务

首先,实验环境我们使用三台虚拟机,一台DNS(ip:192.168.10.1)、一台SMTP服务器(ip:192.168.10.10),一台客户端(win7,ip:192.168.10.100)。为了方便,我们使用windows2003搭建DNS服务器,读者也可以自行用Linux部署DNS服务器。

DNS正反向区域及A记录、MX记录、PTR记录如图设置。PS:本例中我们先以rzz.com域下邮箱做演示,而jll.com是为后续的邮件跨域转发做准备的。

下面来配置linux的SMTP服务:配置好ip,DNS指向192.168.10.1,关闭防火墙、selinux。

然后安装软件包:

yum -y postfix dovecot

注:postfix包负责smtp功能,dovecot包负责pop3、imap4功能

我们再来陆续开启smtp和pop3服务。

cp /etc/postfix/main.cf /etc/postfix/main.cf.bak ---备份一下

注:因为postfix配置文件中的东西比较多,配置也比较复杂,出错后不容易恢复,所以提前备份,

vi /etc/postfix/main.cf ---编辑postfix配置文件,改一下内容:

myhostname = mail.rzz.com ---指定本机的全称域名(FQDN)

mydomain = rzz.com ---指定本机所在的域

myorigin = $mydomain ---指定寄出邮件时自己所在的域,调用了变量值

inet_interfaces = all ---指定本机提供smtp服务的网卡,all即所有

inet_protocols = all ---指定支持的邮件协议,all即所有

mydestination =$myhostname, localhost.$mydomain, localhost, $mydomain ---指定本机可发送给的目标域

mynetworks =192.168.10.0/24, 127.0.0.0/8 ---指定自己所在网段

alias_maps =hash:/etc/aliases

alias_database =hash:/etc/aliases ---以上两条指定用户别名文件

配置好以上设置后,添加系统用户,即当做邮箱账号使用,再启动服务,并查看端口:

useradd user1

passwd user1

useradd user2

passwd user2

systemctl restart postfix

systemctl enable postfix

lsof –i:25

然后配置dovecot,启动pop3或imap4。

vi /etc/dovecot/dovecot.conf ---配置dovecot配置文件

protocols = imap pop3 lmtp ---指定开启的协议

listen = *, :: ---指定监听的网卡,* 表示所有,::表示所有ipv6网卡

login_trusted_networks = 192.168.10.0/24 ---指定信任的网段

配置完毕,启动服务,查看端口

systemctl restart dovecot

systemctl enable dovecot

lsof –i:110

tips:某些资料中会让我们在配置文件中增加 disable_plaintext_auth = no 或vi /etc/dovecot/conf.d/10-auth.conf,注销并改disable_plaintext_auth = no。这都是让dovecot服务关闭加密验证,支持明文传输,其实不这样做也可以,且更安全。

到此,服务器初级配置完毕,再配置客户端。客户端我们采用foxmail7.2工具。PS:虽然windows自带的邮件工具是outlook,但是相比较而言,foxmail使用更方便,配置更清晰,企业内应用foxmail的较多。

客户机安装foxmail后,新建账号,写入邮箱地址及密码(就是Linux登录密码)

然后输入smtp服务器地址及pop3服务器地址,当然这里也可以直接写ip。PS:做实验时如果配置域名无法通过,是因为win7主机若连接公网,foxmail软件对域名的解析使用了真实公网的DNS,所以未能成功,可以直接写ip地址:192.168.10.10。

上图中,ssl选项可以勾选,也可以不勾选,因为在配置服务时我们并没有屏蔽ssl加密登录,服务启动后,465和995端口是开启的。

添加完毕一个用户后,可以在右上角的下拉菜单中选择“账号管理”,进入后再添加user2用户了。

两个用户都添加成功后,就可以使用user1用户给user2@rzz.com发送邮件了,用user2也可以接受到邮件。

16.2.2 配置别名

我们在postfix配置文件中,介绍过alias_maps=和alias_database = 两行了,这里就来验证一下它们的功能。首先,在配置文件中这两行都指向了/etc/aliases作为别名文件。其实/etc/aliases就是系统用户的别名文件,我们可以给一个用户配置别名,也可以给多个用户配置统一的同一个别名。在邮箱服务中可以认为是给某个部门中的员工,配置一个统一的名字,便于邮件的群发。例如:

vi /etc/aliases ---写入

HR: user1,user2

表示人力资源部(HR)有两名员工,分别是user1、user2。那么,重启服务后,我们可以从user1的邮箱中给HR@rzz.com发送邮件,则user1、user2都会收到。大家可以自行实验一下。

0 人点赞