1.1 邮件服务的介绍
电子邮件是—种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费)、非常快速的方式(几秒钟之内可以发送到世界上任何指定的目的地),与世界上任何一个角落的网络用户联系。
电子邮件可以是文字、图像、声音等多种形式。同时,用户可以得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。电子邮件的存在极大地方便了人与人之间的沟通与交流,促进了社会的发展。
什么是电子邮件系统
电子邮件系统是一种能够书写、发送、存储和接收信件的电子通信系统
邮件系统由两部分组成
MTA(邮件传输代理)
MUA(邮件用户代理)
1.2 电子邮件收发的过程
1.3 邮件传输过程
(1)客户机调用用户代理来编辑要发送的邮件。用户代理用SMTP将邮件传送给发送端邮件服务器
(2)发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。
(3)SMTP按照C/S方式工作。运行在发送端邮件服务器的SMTP客户进程,发现在邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMTP服务器进程发起TCP连接的建立
(4)当TCP连接建立后,SMTP客户进程开始向远程的SMTP服务器发送邮件。如果有多个邮件在邮件缓存中,则SMTP客户一一将它们发送到远程的SMTP服务器。当所有的待发送邮件发完了,SMTP就关闭所建立的TCP连接
(5)运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在他方便时进行读取
(6)收信人调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中取回
1.4 电子邮件的协议
1. SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),是电子邮件的发送方向接收方传递邮件时使用的单向传输协议,默认使用TCP端口为25。配置了SMTP协议的电子邮件服务器称为SMTP服务器。SMTP服务器接收客户机发送的电子邮件,向其他的SMTP服务器发送电子邮件,但不能从别的SMTP服务器接收电子邮件
2. POP3(Post Office Protocol Version 3,邮局协议,版本3),是电子邮件接收方向电子邮局发出接收邮件请求时使用的单向传输协议,默认使用TCP端口为110。配置了POP3协议的电子邮件服务器称为POP3服务器。POP3服务器将电子邮件发送给客户机或者从别的POP3服务器接收电子邮件,但不能向别的POP3邮件服务器发送电子邮件
1.5 Postfix 的介绍
Postfix 是一种电子邮件服务器,它是由任职于IBM华生研究中心(T.J. Watson Research Center)的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。
postfix由十几个具有不同功能的半驻留进程组成,并且在这些进程中并无特定的进程间父子关系。某一个特定的进程可以为其他进程提供特定的服务。
大多数的postfix进程由一个进程统一进行管理,该进程负责在需要的时候调用其他进程,这个管理进程就是master进程。该进程也是一个后台程序。
这些postfix进程是可以配置的,我们可以配置每个进程运行的数目,可重用的次数,生存的时间等等。通过灵活的配置特性可以使整个系统的运行成本大大降低。
1.6 Postfix 特点
1、postfix是免费的;
2、性能好,大约比sendmail×××倍,一台运行postfix的台式pc每天可收发上百万邮件;
3、兼容sendmail
4、健壮稳定,postfix被设计成在重负荷之下仍然可以正常工作。当系统运行超出了可用的内存或磁盘空间时,postfix会自动减少运行进程的数目。当处理的邮件数目增长时,postfix运行的进程不会跟着增加;
5、灵活性好,postfix是由超过一打的小程序组成的,每个程序完成特定的功能。你可以通过配置文件设置每个程序的运行参数。
6、安全性,postfix具有多层防御结构,可以有效地抵御恶意者,可以运行在较低的权限之下;
1.7 部署Postfix
1.7.1 环境准备
OS版本:centos 7.5 64bit
mail-server ip :192.168.1.242
mial-client ip :192.168.1.200
[root@mail-server ~]# cat /etc/redhat-release #查看系统版本
[root@mail-server ~]# uname -r #查看内核版本
[root@mail-server ~]# systemctl stop ebtables firewalld #关闭ebtables防火墙
[root@mail-server ~]# systemctl disable ebtables firewalld #重启不启动ebtables firewall防火墙
[root@mail-server ~]# vim /etc/sysconfig/selinux #设置selinux 状态为disabled
[root@mail-server ~]# setenforce 0 # 临时将selinux设置为disabled
[root@mail-server ~]# getenforce #检测selinux是否关闭
[root@mail-server ~]# ifconfig ens33 |awk -F '[ :]+' 'NR==2{print $3}' #查看IP地址
[root@mail-server ~]# hostname #查看主机名
1.7.2 配置DNS解析
1.安装bind服务
[root@mail-server ~]# yum -y install bind
2.编辑bing的主配置文件
[root@mail-server ~]# vim /etc/named.conf
[root@mail-server ~]# vim /etc/named.rfc1912.zones
3.添加mail邮件解析记录
[root@mail-server ~]# vim /var/named/vancen.com.zone
4.重启DNS服务
[root@mail-server ~]# systemctl restart named
[root@mail-server ~]# systemctl enable named
[root@mail-server ~]# systemctl status named
1.7.3 配置Postfix服务程序
1. 安装postfix软件
[root@mail-server ~]# yum -y install postfix
2. 修改配置文件
[root@mail-server ~]# vim /etc/postfix/main.cf
76 myhostname = mail.vancen.com
83 mydomain = vancen.com
99 myorigin = $mydomain
116 inet_interfaces = all
164 mydestination = $myhostname , $mydomain
3. 重启服务
[root@mail-server ~]# systemctl restart postfix
[root@mail-server ~]# systemctl enable postfix
[root@mail-server ~]# systemctl status postfix
4. 创建邮件账户
Postfix可以调用本地系统的账户和密码,因此在本地系统创建常规账户即可。
[root@mail-server ~]# useradd chenjf
[root@mail-server ~]# echo "chenjf" | passwd --stdin chenjf
1.7.4 配置Dovecot服务程序
1. 安装Dovecot服务程序软件包。
[root@mail-server ~]# yum -y install dovecot
2. 配置部署Dovecot服务程序。
[root@mail-server ~]# vim /etc/dovecot/dovecot.conf
在Dovecot服务程序的主配置文件中进行如下修改。首先是第24行,把Dovecot服务程序支持的电子邮件协议修改为imap、pop3和lmtp。然后在这一行下面添加一行参数,允许用户使用明文进行密码验证。之所以这样操作,是因为Dovecot服务程序为了保证电子邮件系统的安全而默认强制用户使用加密方式进行登录,而由于当前还没有加密系统,因此需要添加该参数来允许用户的明文登录。
在主配置文件中的第46行,设置允许登录的网段地址,也就是说我们可以在这里限制只有来自于某个网段的用户才能使用电子邮件系统。如果想允许所有人都能使用,则不用修改本参数: 此处我就仅允许我同一网段的使用。
3. 配置邮件格式与存储路径。
在Dovecot服务程序单独的子配置文件中,定义一个路径,用于指定要将收到的邮件存放到服务器本地的哪个位置。这个路径默认已经定义好了,我们只需要将该配置文件中第25行前面的井号(#)删除即可。
切换到配置Postfix服务程序时创建的chenfj账户,并在家目录中建立用于保存邮件的目录。至此,对Dovecot服务程序的配置部署步骤全部结束。
4. 重启Dovecot服务并将其添加到开机启动项中。
[root@mail-server ~]# systemctl restart dovecot
[root@mail-server ~]# systemctl enable dovecot
1.7.5 客户端验证
1. 修改客户端DNS解析地址
2. 打开postfix使用chenjf@vancen.com登录
3. 设置接收服务器类型为POP3
4. 新建账户创建成功
5. 给root发送一封邮件
6. 邮件发送成功
7. 在mail-server服务器上查看是否收到邮件
1.7.6 设置用户别名邮箱
用户别名功能是一项简单实用的邮件账户伪装技术,可以用来设置多个虚拟信箱的账户以接受发送的邮件,从而保证自身的邮件地址不被泄露,还可以用来接收自己的多个信箱中的邮件。
1. 在客户端给bin发送一封邮件
2. 切换bin用户查看邮件,
切换用户被拒绝,因为bin账户在Linux系统中是系统账户,默认的Shell终端是/sbin/nologin,因此在以bin账户登录时,系统会提示当前账户不可用。
3. 使用在mail-server服务器上使用mail命令查看root室友收到邮件
aliases邮件别名服务的配置文件是专门用来定义用户别名与邮件接收人的映射。除了使用本地系统中系统账户的名称外,我们还可以自行定义一些别名来接收邮件。例如,创建一个名为happy的账户,而真正接收该账户邮件的应该是root账户。
4. 在别名的配置文件中添加一行happy: root
5. 使用newaliases命令,其目的是让新的用户别名配置文件立即生效。
6. 在给happy发送一封邮件
7. 在mail-servre服务器上查看是否收到邮件。
收到了邮件证明用户别名设置无误。