前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第十六章 邮件服务(一)

第十六章 邮件服务(一)

作者头像
晓天
发布2019-07-04 14:37:01
2K0
发布2019-07-04 14:37:01
举报
文章被收录于专栏:Linux、云计算技术交流

第十六章 邮件服务(一)

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都会收到。大家可以自行实验一下。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档