centos 7 用sendmail 搭建邮件服务器

centos 7 用sendmail 搭建邮件服务器

了解邮件如何传送到目的邮件主机,一般分为 “寄信”、“收信”;
寄信:通常使用桌面计算机来寄信,例如,Outlook Express,Foxmail,信到底如何发出去的?

MUA(Mail User Agent):邮件用户代理,MUA是用在客户端的软件,例如,Foxmail,Outlook Express等客户端程序,邮件需要代理,因为客户端的计算机无法直接收发邮件,通过各个操作系统提供的MUA才能够使用邮件系统,MUA主要的功能就是接收邮件主机的电子邮件,并提供用户浏览与编写邮件的功能。

MTA(Mail Transfer Agent):用在邮件主机上的软件,是主要的邮件服务器,是"邮件传送代理",用户寄信和收信,主要功能:接收外部主机寄来的信件,帮用户发信;注意,MTA会将信件送给目的地的MTA而不是目的地的MUA;

注意:用户使用的是MUA,而信件仅会送达MTA主机上,收、发信件时,都需要通过MTA帮忙处理,所以,用户在使用邮件编辑器“MUA”将数据编辑完毕之后,按下送出,并且成功送到MTA之后,接下来的事情就是MTA的工作了,跟用户的Client端计算机没有关系。

MDA(Mail Delivery Agent):邮件投递代理,将MTA接收的信件依照信件的流向(送到哪里)将该信件放置到本机账户下的邮件文件中(收件箱),或者再经由MTA将信件送到下个MTA。如果信件的流向是到本机,这个邮件代理的功能就不只是将由MTA传来的邮件放置到每个用户的收件箱,它还可以具有邮件过滤(filtering)与其他相关功能。

SMTP(Simple Mail Transfer Protocol)传输发送邮件所使用的标准协议;

IMAP(Internet Message Access Protocol)接收邮件使用的标准协议之一;

POP3(Post Office Protocol 3) 接收邮件使用的标准协议之一;

25端口(SMTP):25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件。
110端口(POP3):110端口是为POP3(Post Office Protocol Version 3,邮局协议3)服务开放的,是用于接收邮件的。
143端口(IMAP):143端口是为IMAP(INTERNET MESSAGE ACCESS PROTOCOL)服务开放的,是用于接收邮件的。

上面介绍的SMTP协议、POP3协议、IMAP协议都是不安全的协议,基于SSL(Secure Sockets Layer 安全套接层)协议的安全的邮件收发协议,

465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露,

995端口(POP3S):995端口是为POP3S(POP3-over-SSL)协议服务开放的,这是POP3协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。

993端口(IMAPS):993端口是为IMAPS(IMAP-over-SSL)协议服务开放的,这是IMAP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。

IMAP和POP3都是接收邮件协议,两者区别在哪?

POP3协议特性:
POP3协议默认端口:110

POP3协议默认传输协议:TCP

POP3协议适用的构架结构:C/S

POP3协议的访问模式:离线访问
  
IMAP(InternetMailAccessProtocol,Internet邮件访问协议)以前称作交互邮件访问协议(InteracTIveMailAccessProtocol),主要作用是邮件客户端(例如MSOutlookExpress)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等,IMAP协议运行在TCP/IP协议之上,使用的端口是143。

它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。

imap特点:

IMAP(Internet消息访问协议)也是提供面向用户的邮件收取服务。常用的版本是IMAP4。
IMAP4改进了POP3的不足,用户可以通过浏览信件头来决定是否收取、删除和检索邮件的特定部分,还可以在服务器上创建或更改文件夹或邮箱。

POP3协议允许电子邮件客户端下载服务器上的邮件,但是在客户端的操作(如移动邮件、标记已读等),不会反馈到服务器上。
IMAP提供webmail与电子邮件客户端之间的双向通信,客户端的操作都会反馈到服务器上,对邮件进行的操作,服务器上的邮件也会做相应的动作。IMAP整体上为用户带来更为便捷和可靠的体验。POP更易丢失邮件或多次下载相同的邮件。

1.开始搭建邮件服务器:
首先,设置主机名,centos 7无法通过 /etc/sysconfig/network 修改 hostname ,不知道为什么自己的服务器不能通过这种方法永久修改主机名,尝试另一种方法;修改之后,需要重启 reboot ,然后通过 hostname 命令查看主机名是否被修改,
centos 7 用sendmail 搭建邮件服务器

2.查看是否安装 sendmail ,一般需要手动安装,
centos 7 用sendmail 搭建邮件服务器

sendmail-cf :sendmail核心配置文件,位于/etc/mail/sendmail.cf,
sendmail.mc:sendmail提供sendmail文件模板,通过编辑此文件后再使用m4工具将结果导入sendmail.cf完成配置sendmail核心配置文件,降低配置复杂度,位于/etc/mail/sendmail.mc,为什么不直接编辑 sendmail.cf 配置文件? 因为看不懂。
local-host-names:定义收发邮件服务器的域名和主机别名,位于/etc/mail/local-host-names

sendmail 服务器和 DNS 密切相关,我们这配置Sendmail之前需要先配置好DNS的相关服务,不再叙述 DNS ,上篇博客有详解。
但在配置DNS时需要注意一点,要加上自己的服务器域名;我的服务器IP地址,192.168.12.2

centos 7 用sendmail 搭建邮件服务器

3.修改 sendmail.mc 配置文件,
centos 7 用sendmail 搭建邮件服务器

需要修改两个位置,一个是118行左右,另一个是157行左右,进入配置文件后,进入底行模式(英文模式下,Shift + ;键),然后输入 set nu 命令,可以显示配置文件的行号,进行如下修改,Addr = 0.0.0.0 的作用,可以扩大侦听范围(一般都是这样设置的),如果侦听范围小了,邮件服务器是无法正常发送邮件的。

centos 7 用sendmail 搭建邮件服务器

157行,修改成自己的域,zwh.com
centos 7 用sendmail 搭建邮件服务器

4.进行m4重定向,因为 sendmail.cf 无法读懂,需要对 sendmail.mc 修改后用m4工具重新导入 sendmail.cf 中,这样比较好理解,

先检查是否安装,

centos 7 用sendmail 搭建邮件服务器

centos 7 用sendmail 搭建邮件服务器

5.修改local-host-names文件添加域名和主机名,/etc/mail/local-host-names

centos 7 用sendmail 搭建邮件服务器

以上只是发送邮件的基本配置,接下来是接收邮件,需要用到 POP3协议,安装 dovecot 软件包,

6.安装 dovecot 有软件之间的依赖关系,建议使用 yum 安装,但是red hat 的yum是需要付费的,建议使用 centos ,

centos 7 用sendmail 搭建邮件服务器

到此,发送、接收已经过程已经安装完成,先尝试启动各种服务

centos 7 用sendmail 搭建邮件服务器

检查需要的端口是否已经开启,主要是 :SMTP :25,POP3:110,IMAP:143,是否处于监听状态,

centos 7 用sendmail 搭建邮件服务器

以及加密端口,SMTPS:465,POP3S:995,IMAP:993

centos 7 用sendmail 搭建邮件服务器
验证Sendmail的SMTP认证功能:

centos 7 用sendmail 搭建邮件服务器
POP3验证:
centos 7 用sendmail 搭建邮件服务器
7.telnet 进行验证
先安装 telnet 客户端,服务器端,

centos 7 用sendmail 搭建邮件服务器

因为telnet是被xinetd所守护,还要检查xinetd是否安装,

centos 7 用sendmail 搭建邮件服务器

配置并启动Telnet,xinetd和telnet必须设置开机启动,否则无法启动Telnet服务,

systemctl enable xinetd.service

systemctl enable telnet.socket

接下来启动服务

systemctl start telnet.socket

systemctl start xinetd

telnet 服务默认是不开启的, 修改xinetd 的配置文件开启服务,centos 7 的配置文件是 /etc/xinetd.conf 不是 /etc/xinetd.d/telnet,因为telnet 默认端口是23,所以要确保该端口启动,
将 disabled 改为 no,意思是开启该项功能。

centos 7 用sendmail 搭建邮件服务器

CentOS 7 采用了 firewalld 防火墙,查询是否开启23端口,首先打开防火墙,
centos 7 用sendmail 搭建邮件服务器

如果没有打开,使用该命令# firewall-cmd --zone=public --add-port=23/tcp --permanent 开启,再次测试23端口是否打开;

8.测试:
创建两个用户进行测试:
centos 7 用sendmail 搭建邮件服务器

发送邮件:
centos 7 用sendmail 搭建邮件服务器
helo :声明域;mail from :发件人信息,“test” 邮件主题,发件人 tianqiyuan,
rcpt to :收件人信息,收件人zhaowenhao,data,书写内容开始,".":内容结束,quit:退出,

收信,
centos 7 用sendmail 搭建邮件服务器
user:收件人,pass:密码,
发现不能正常收信,提示 " Permission denied ":权限低,
提高权限:
centos 7 用sendmail 搭建邮件服务器
再次测试:
centos 7 用sendmail 搭建邮件服务器
list:查看收件箱列表,retr 1:查看第一条信息,如果不能接收邮件,查看是否权限过低。