目录
一、相关知识
1、电子邮箱系统三个组成部分
MUA(telnet):邮件用户代理。主要用于撰写邮件信息并和邮件服务器之间通过SMTP协议进行向邮件服务器发送或接收邮件信息。
MTA(postfix):邮件传输代理。即SMTP邮件服务器,用于接收邮件客户端或者其它域名的SMTP邮件服务器发送过来的邮件。或者是向其它域名的MSTP邮件服务器转发邮件信息。
MDP(Dovecot): 邮件投递代理。一般使用POP3/IMAP4协议和SMTP邮件服务器安装在一起,用于向本地域名下的邮件用户提供接收邮件的服务。
二、邮件服务器种类
SMTP服务器:用于替用户发送和接受外面发送给本地用户的邮件(相当于邮局的接受部门)。
POP3/IMAP服务器:由于帮助用户读取SMTP服务器接收进来的该用户的邮件(相当于专门为前来取包裹的用户提供服务的部门)。
三、邮件传输协议
SMTP协议:定义了邮件客户端软件与SMTP服务器之间,以及两台SMTP服务器之间的通信规则。
POP3协议:客户端与POP3服务器之间的通信规则。
IMAP协议:对POP3协议的一种扩展。
四、DNS中的MX记录
记录域名和其SMTP服务器之间的映射关系;当SMTP邮件服务器接收到一个收件人地址域名不是本地域名的邮件时,通过向DNS服务器查找收件人的MX记录来获取收件人域名下的邮件服务器IP地址,然后将其邮件发送给对方MSTP邮件服务器。
五、电子邮件系统工作原理

一个QQ邮箱的A发给163邮箱B:qq邮箱用户用qq邮箱客户端发邮件给qq的SMTP服务器,然后qq的SMTP服务器会查询MX记录,找到163邮箱的SMTP服务器的信息,然后发送给它,163的SMTP收到邮件后判断该邮件是否属于该SMTP服务器的管辖范围,如果是的话就直接把邮件存储到收件人B的邮箱中。163邮箱用户就可以用客户端软件和163的POP3/IMAP建立连接通过POP3/IMAP协议查看邮件。
六、配置文件相关参数
1、Postfix服务程序主配置文件/etc/postfix/main.cf中的重要参数
myhostname------邮局系统的主机名
mydomain---------邮局系统的域名,用于指定邮件服务器所使用的域名。
myorigin-----------如果邮件发送者在通过此邮件服务器发送邮件时,在指定邮件发送者选项时只写了发送者的账户名而@后没跟域名,邮件服务器就会自动在其地址后面加myorigin参数指定的域名。
inet_interfaces--------邮件服务器监听的本机网卡接口
mydestination--------邮件服务器可接收哪些收件人是@域名后缀的邮件
mynetworks--------列出可通过本邮件系统寄出邮件的网络地址或ip地址
relay_domains------设置本邮件服务可以转发哪些域名的邮件
home_mailbox --------指定接收到本域邮件将其存储的路径
2.Dovect投递代理配置文件参数
/etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp --------指定其支持的邮件协议
listen = * --------表示Dovect程序监听本地所有接口
login_trusted_networks = 192.168.200.0/24 ----------指定允许那些客户登录本邮件服务器查询自己收到的邮件。
/etc/dovecot/conf.d/10-auth.conf
disable_plaintext_auth = no ------默认情况下Dovect投递代理要求用户在登录服务器查询收到的邮件之前需要加密进行身份验证由于主机没有配置SSL加密,因此将此选项设置为不加密进行身份验证。
/etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:~/Maildir -----告诉Dovect程序本域邮件存放在哪个路径下了,需与postfix指定的路径相同;否则在用户在用telnet查找自己接收的邮件时,找不到收到的邮件。
七、邮件服务器配置案例
实验准备:
邮件服务器
IP:192.168.200.254/24
主机名:mail.qq.com
邮件客户端
IP:192.168.200.28/24
实验步骤
mail-server:
1、设置邮件服务器的主机名

2、安装配置DNS域名解析,使网络上的客户可以通过邮件服务器域名登录邮件服务器;同时指定邮件服务器的MX记录,使其它域名上的邮件服务器在使用此DNS做域名解析时,可以通过MX记录将收到的@qq.com的邮件转发到本域的@qq.com邮件服务器。





3、安装postfix邮件传输程序。

4、修改postfix的主配置文件
94 myhostname = mail.qq.com //指定邮件服务器的主机名
102 mydomain = qq.com //指定邮件服务器提供的邮件地址域名
118 myorigin = $mydomain //引用前面定义的变量值,用于用户在发送邮件时,在填写用户名没跟域名时,邮件服务器在发给其它用户时,自动设置为myorigin指定的参数值。
138 inet_protocols = all //监听所有的接口,其它相同的注释掉。
183 mydestination = $myhostname, $mydomain //允许邮件服务器接收哪些域名的邮件
438 home_mailbox = Mail_info/ //指定邮件服务器收到本域邮件存放的路径为家目录下的此目录(目录自动创建)。
5、检查配置是否有语法错误、防火墙放行postfix程序使用的SMTP协议流量和其端口、开启Postfix服务。



6、安装Dovect程序,并修改其配置文件

vim /etc/dovecot/dovecot.conf

vim /etc/dovecot/conf.d/10-auth.conf

vim /etc/dovecot/conf.d/10-mail.conf

7、防火墙放行docvet基于的pop3、imap协议等,并开启dovecot服务。

8.给网络用户创建邮箱账号并设置其密码。

10.开始邮件服务测试。安装用户代理程序服务端telnet-server,防火墙并放行其服务端口23。


mail-Cliect
11、切换到客户端安装telnet程序,由于登录邮件服务的dovect程序收取邮件。

12、用telnet连接邮件服务器,用bajie向wukong发送邮件。

13、用telnet 110端口连接邮件服务器,wukong登录看是否收到bajie发来的邮件。

7.1设置用户别名邮箱
通过设置一个虚假的用户账号如:xujia。当其它真实的用户通过邮件服务器向收件人xujia@qq.com发邮件时,其实邮件并没有发给xujia这个并不存在的用户,而是发给了管理员指定的在邮件服务器注册了邮件账户的真实用户如:root。
1.切换到邮件服务器,编辑 /etc/aliases


2.切换到客户端,用root向xujia用户发送邮件,看看是否被真实的wukong用户接收了邮件。


观察发现发给别名用户的邮件却被真实的wukong用户接收了,实验结果成功!。
7.2空壳邮件服务器
由于用户在发电子邮件之前需要先连接上邮件服务器,这样的话用户就需要知道邮件服务器的域名或者其IP地址才能访问到邮件服务器,然后进行电子邮件的发送,因此真实邮件服务器的IP地址或者域名就暴露在公网下了很不安全。所以为了保护真实邮件服务器的安全就需要架设一台空壳邮件服务器。空壳邮件服务器和真实的邮件服务器主要的区别就是空壳邮件服务器只负责把用户发过来的邮件转发到指定的真实邮件服务器上,自己本身不保存用户发送过来的邮件。即用户连接上空壳邮件服务器之后,所发送的邮件不管收发件人的域名是否与本服务器相同(不会查找DNS的MX记录在转发给真实邮件服务器)都会将其直接转发到有管理员事先配置好的真实邮件服务器上,自己本身不存储邮件信息。空壳邮件服务器的后缀域名一般和真实邮件服务器的后缀域名一样,这样表面上看是把邮件发给空壳邮件服务器,实则空壳邮件服务器已将其邮件转发给了真实的邮件服务器上了;也可一不一样。
空壳邮件服务器搭建案例
前言:理想状态下便于理解需要两台服务器和一台客户机。本实验只使用两台Server,一台为真实邮件服务器另一台为空壳邮件服务器。真实邮件服务器上个案例已搭建完毕此处不在表述。
空壳邮件服务器:

2、在空壳邮件服务器所使用的DNS服务器上添加一条空壳邮件服务器的域名解析A记录。

[root@mail cur]# systemctl restart named
3、切换到空壳邮件服器上,安装postfix。

4、修改postfix的主配置文件/etc/postfix/main.cf,使其成为空壳邮件服务器。

94 myhostname = null.qq.com //空壳服务器的主机名
102 mydomain = qq.com //空壳邮件服务所使用的域名
118 myorigin = qq.com //空壳邮件服务器在转发源发件人账户没指定域名时,空壳邮件服务器自动在其发件人@后补齐为@qq.com
132 inet_interfaces = all //空壳邮件服务监听本机所有接口流量。
183 mydestination = //由于空壳邮件服务器只转发邮件,不接收存储邮件所以将此处置为空。
283 mynetworks = 192.168.200.0/24 //空壳邮件服务器只转发此网段发送过来的邮件。
332 relayhost = 192.168.200.254 //指定要把收到的邮件转发给真的邮件服务器的IP地址
5、防火墙放行postfix基于STMP协议的流量和其25号端口;然后开启postfix服务。


6、在空壳邮件服务器上安装telnet-server用于用户登录此服务器上;并放行其服务和端口号;最后开启telnet服务。



7、在真实的邮件服务器上创建user1和user2用户并设置其密码。用于邮件测试。

8、在用户的电脑上安装telnet客户端程序用于登录到邮件服务器上。此实验把空壳邮件服务器也看做是一台客户机,同样也安装telnet客户端软件。

9、在客户端上使用telnet登录到空壳邮件服务器上使用在真实的邮件服务器上创建的user1来向user2发送邮件。

10、下面使用user2用户登录到真正的邮件服务器上,看其是否收到了由空壳邮件服务器转发过来的发给user2的邮件。

通过以上观察可以发现空壳邮件服务器是把由user1发给user2的邮件转发给了真正的邮件服务器,user2成功收到邮件。
@声明:"山月润无声"博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!