邮件传输代理程序sendmail-基本配置 证书 邮件加密 认证

sendmail是最重要的邮件传输代理程序。Sendmail做为一种免费的邮件服务器软件,已被普遍的应用于各类服务器中,它在稳定性、可移植性、及确保没有bug等方面具备必定的特点,且能够在网络中搜索到大量的使用资料通常状况下,咱们把电子邮件程序分解成用户代理,传输代理和投递代理。 用户代理用来接受用户的指令,将用户的信件传送至信件传输代理而投递代理则从信件传输代理取得信件传送至最终用户的邮箱邮件传输是从服务器到服务器的,并且每一个用户必须拥有服务器上存储信息的空间(称为信箱)才能接受邮件(发送邮件不受这个限制)。能够看到,一个邮件传输代理的主要工做是监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输而且将接收到的邮件缓冲或者 提交给最终投递程序。有许多的程序能够做为信件传输代理,可是sendmail是其中最重要的一个,事实证实它能够支持数千甚至更多的用户,并且占用的系统资源至关少。不过,sendmail的配置十分复杂,且无验证,没有防范垃圾机制,没有防病毒机制。当sendmail程序获得一封待发送的邮件的时候,它须要根据目标地址肯定将信件投递给对应的服务器,这是经过DNS服务实现的。sendmail首先肯定这个地址是用户名+机器名的格式,而后,经过查询DNS来肯定须要把信件投递给某个服务器。DNS数据中,与电子邮件相关的是MX记录 linux

MUA (mail user agent   邮件用户代理),用于用户端发送邮件或者阅读邮件linux有mutt这个工具 MTA (mail tranfer agent 邮件传输代理 ),至关于一个邮局,server端的软件,主要的功能有,接收MUA发来的邮件和把邮件发送给下一个MTA,能够说是一个邮件路由(mail router),server端的软件就属于MTA,如今开源的有sendmail,postfix,qmail等  vim

MDA (mail devilery agent 邮件投递代理),主要是将MTA所接受的邮件,依照邮件的目的地将此邮件放到本机帐号下或者是给下一个MTA,通常就是指mail这样的命令 centos

邮件的协议: 服务器

 发信: SMTP (simple mail tranfer protocol 简单邮件传输协议)   端口号 TCP的25端口,在发信时,MUA会主动链接MTA的port 25,而后经由SMTP协议发送出去,SMTP分为接受SMTP和发送SMTP,它无论两端主机的配置或者系统等,只要两边SMTP协议OK就能够发送邮件  网络

收信: POP   (post office protocol    邮局协议),来链接到MTA,以读取或者下载邮件,如今经常使用的版本是POP3,端口为110 IMAP   (internet message access protocol 网络报文件协议),能在下载邮件前先下载邮件头信息,以可让用户选择性下载 端口 143。 ide

首先来测试一下环境 工具

这里我用的centos的系统,默认彷佛是安装过了sendmail的,而且是启动过的。 post

接着安装dovecotyum install dovecot 测试

启动dovecot service dovecot start 编码

这时是能够发信件的,为了测试能够先添加两个帐号user1user2,而后向其发送一份邮件

由日志看出,发送成功了,真的发送成功了吗,要看user1可否收到这封标题为1的内容为12387681498649821的邮件,为了验证,要切换到user1,进行收信

说明真的发成功,好神奇呀。。。

在后续操做以前,先安装一个工具sendmail-cf

接下来来修改/etc/mail/目录下的三个文件

vim sendmail.mc ,让其监听全部地址,以达到用客户端也能够发信件的目的

vim access (作中继)在后面追加,实现这个网段地址的中继,及到163.com域的都无条件接受,到sina.com的进行中继

vim local-host-names 

通过测试,没有问题,基于上面的基本配置后,下面来开始对sendmail的搭建

一:163.com部分的基本搭建

首先来安装并搭建DNS服务器(为了节省资源,把邮件服务器和ns服务器搭在一台机器上)

至此,dns就安装安装完成了,而后开始搭建

而后切换到安装目录,来产生配置文件

而后编辑该配置文件

 

而后修改区域生成文件vim named.rfc1912.zones (填写内容只是说明用法)

而后去生成163.com.zone

接着编辑163文件

而后启动dns服务器:service named start

接着要作DNS指向:编辑/etc/resolv.conf

而后修改主机名: vim /etc/sysconfig/network

接着也要把hosts文件也要修改了

重启sendmail DNS服务器

接下来就是测试来看是否搭建成功

由图可知,基本搭建成功。

二:sina.com的基本搭建

这里我用redhat来搭建sendmail,在redhatsendmail依然默认已经安装并启动,下面来安装dovecot yum install dovecot

启动dovecotservice dovecot start

创建用户user3 user4

接下来依旧来安装并搭建DNS服务器(为了节省资源,把邮件服务器和ns服务器搭在一台机器上)


而后切换到安装目录,来产生配置文件

而后编辑该配置文件

而后修改区域生成文件vim named.rfc1912.zones (填写内容只是说明用法)

而后去生成sina.com.zone

 

接着编辑sina文件

而后启动dns服务器:service named start

接着要作DNS指向:编辑/etc/resolv.conf

安装一个工具sendmail-cf

接下来来修改/etc/mail/目录下的三个文件

vim sendmail.mc ,让其监听全部地址,以达到用客户端也能够发信件的目的

vim access (作中继)在后面追加,实现这个网段地址的中继,及到sina.com域的都无条件接受,到163.com的进行中继

vim local-host-names 

而后修改主机名: vim /etc/sysconfig/network

接着也要把hosts文件也要修改

重启sendmail DNS服务器

接下来就是测试来看是否搭建成功

由此知,基本搭建也已经成功了。

下面来测试从163sina发送是否成功

由此知,已成功完成两者的邮件收发。

为了实现快速发送,这里要对两者的DNS作反向解析

163

vim /var/named/chroot/etc/named.rfc1912.zones 

而后去生成这个文件

编辑生成的192.168.102.local文件

而后执行:rndc reload

接下来作sinaDNS反向解析

sina

vim /var/named/chroot/etc/named.rfc1912.zones 

而后生成192.168.102.local文件

编辑生成的192.168.102.local文件

而后执行:rndc reload

而后分别重启两者的sendmailDNS服务器,这时再进行测试,发现速度快了不少。

利用证书实现对信息的加密:

实现这个功能,在一台机器上实现就好,这里我在sina.com上实现

 为了试验的须要,这里要安装一款抓包工具

yum install wireshark

因为要利用证书,因此要作CA

 cd /etc/pki/

vim tls/openssl.cnf 

接下来建立三个目录两个文件:

建立一个序列号到serial中:echo 01 >serial 

建立私钥并修改权限:

生成证书:

至此,CA架设就完成了。

建立一个目录来存放为sendmail申请的证书

切换到所建立的目录:cd /etc/mail/certs

生成私钥

作请求

产生证书

openssl ca -in sendmail.csr -out sednmail.crt

 chmod 600 sendmail.key 

编辑文件,使证书生效

重启sendmail服务器

测试

此时,接收时仍是明文,这时假如接受时使用pop3simaps,又该怎么作呢,这时,能够再来建立一证书

 mkdir -pv /etc/dovecot/certs

生成私钥:

作请求:

产生证书: openssl ca -in dovecot.csr -out dovecot.crt

chmod 600 dovecot.key 

而后结合dovecot来用,vim /etc/dovecot.conf 

重启服务:

service dovecot restart

测试

启用抓包工具

在服务器上发以信件,这时在客户端收发

抓包图示显示,没有任何有价值的东西显示出来

此时就是先了加密。

认证:

可是sendmail自身没有身份认证能力,要想实现身份认证,必需要借助sasl协议,而这个协议要想正常工做,就必需要安装cyrus-sasl这个包,只有安装了这个包,才会造成saslauthd这个服务器软件,下面就来安装cyrus-sasl

由此信息可知,这个包已经安装过了,可是还缺乏devel包,是要装上的

此时去看一个文件

cd /usr/lib/sasl2/

 vim Sendmail.conf 

这时可知,saslauthd已与sendmail结合了,下面来启动这个服务器软件

接着要去修改sendmail的配置文件,来和saslauthd结合

打开检测机制:

反红的那个表达式的意思是让其强制身份认证。

而后重启服务

而后来用一个不存在的帐号来测试:

Telnet 127.0.0.1 25

能够看出要求认证了。

当利用auth login指令测试时,帐号不能输明文的,要输入base64编码的帐号,这时要产生这个base64编码

接着把密码也生成base64编码

继续刚才的测试,输入auth login后加入编码过的用户

此时就能发信息了,这时在服务器短能够发信件了,那在客户端呢

在客户端依旧以一个不合法的用户来测试

说明是不能发送的,说明认证也就成功了。

相关文章
相关标签/搜索