1.sendmail 简介
sendmail是最重要的邮件传输代理程序。一般情况下,我们把电子邮件程序分解成用户代理(MUA),传输代理(MTA)和投递代理。 用户代理用来接受用户的指令,将用户的信件传送至信件传输代理,而投递代理则从信件传输代理取得信件传送至最终用户.
当用户试图发送一封电子邮件的时候,他并不能直接将信件发送到对方的机器上,用户代理必须试图去寻找一个信件传输代理,把邮件提交给它。信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,信件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器, 并且通过网络将邮件传送给它。对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件的接收者查看自己的电子信箱。
显然,邮件传输是从服务器到服务器的,而且每个用户必须拥有服务器上存储信息的空间(称为信箱)才能接受邮件(发送邮件不受这个限制)。可以看到,一个邮件传输代理的主要工作是监视用户代理的请求,根据电子邮件的目标地址找出对应的邮件服务器,将信件在服务器之间传输并且将接收到的邮件缓冲或者 提交给最终投递程序。有许多的程序可以作为信件传输代理,但是sendmail是其中最重要的一个,事实证明它可以支持数千甚至更多的用户,而且占用的系统资源相当少。
当sendmail程序得到一封待发送的邮件的时候,它需要根据目标地址确定将信件投递给对应的服务器,这是通过DNS服务实现的。例如一封邮件的目标地址是user@hostname.com,那么sendmail首先确定这个地址是用户名(user)+机器名(hostname.com)的格式,然后,通过查询DS来确定需要把信件投递给某个服务器。
DNS数据中,与电子邮件相关的是MX记录,例如在hostname.com这个域的DNS数据文件中有如下设置:
IN MX 10 mail
IN MX 20 secondmail
mail IN A 192.1681.10
secondmail IN A 192.168.1.20
在DNS中说明linuxaid.com.cn有两个信件交换(MX)服务器,于是,sendmail试图将邮件发送给两者优先级较高的。因此服务 器将试图连接mail.hostnname.com的25端口,试图将信件报文转发给它。如果成功,你的smtp服务器的任务就完成了.一般的情况下,mail换器会自动把信件内容转交给目标主机,不过目标主机可能并不存在,或者不执行smtp服务,而是由其mx交换器来执行信件的管理,这时候,最终的信件将保存在mx机器上,直到用户来察看它。
2.案例配置
所用拓扑图
MTA详细配置
1)ip地址配置
2)配置本地yum服务器
配置文件如下:
3)配置DNS
安装dns服务所需要的软件包
[root@localhost ~]# cd /mnt/cdrom/Server
dns主程序
[root@localhost Server]# yum install bind –y
关于dns安全的软件包
[root@localhost Server]# yum install bind-chroot –y
有关dns缓存的软件包
[root@localhost Server]# yum install caching-nameserver –y
[root@localhost ~]# cd /var/named/chroot/etc
产生dns 的配置文件
[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf
编辑配置文件
[root@localhost etc]# vim named.conf
修改如下;
编辑区域声明文件
[root@localhost etc]# vim named.rfc1912.zones
反向区域
产生区域文件
[root@localhost chroot]# cd var/named
[root@localhost named]# cp -p localhost.zone 163.com.zone
[root@localhost named]# cp -p named.local 192.168.1.zone
编辑163.com.zone
编辑192.168.1.zone文件
[root@localhost named]# vim 192.168.1.zone
启动服务
[root@localhost ~]# service named start
启动 named: [确定]
配置sendmail
1)安装所需软件包
[root@localhost Server]# yum install sendmail –y
[root@localhost Server]# yum install sendmail-cf –y
[root@localhost Server]# yum install dovecot -y 接受服务器
2)编辑sendmail配置文件
[root@localhost Server]# cd /etc/mail
[root@localhost mail]# vim sendmail.mc
[root@localhost mail]# vim access
[root@localhost mail]# vim local-host-names
修改本地dns指向
[root@localhost mail]# vim /etc/resolv.conf
修改network文件
[root@localhost mail]# vim /etc/sysconfig/network
3)启动服务
[root@localhost mail]# service sendmail start
启动 sendmail:
[root@localhost mail]# service dovecot start
启动 Dovecot Imap:
4)创建账号
[root@localhost mail]# useradd xht1
[root@localhost mail]# passwd xht1
passwd: all authentication tokens updated successfully.
[root@localhost mail]# useradd xht2
[root@localhost mail]# passwd xht2
passwd: all authentication tokens updated successfully.
5)利用outlook测试
创建账号
xht1
xht2
发送邮件
接收邮件
MTA1详细配置
1)配置ip地址为192.168.1.20
2)配置本yum
编辑yum的配置文件
[root@localhost ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
3)安装dns相关软件包
[root@localhost ~]# cd /mnt/cdrom/Server
[root@localhost Server]# yum install bind –y
[root@localhost Server]# yum install bind-chroot –y
[root@localhost Server]# yum install caching-nameserver -y
4)配置dns
[root@localhost Server]# yum install caching-nameserver
产生dns的配置文件
[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf
[root@localhost etc]# vim named.conf
设置转发器为192.168.1.10
编辑区域声明文件
[root@localhost etc]# vim named.rfc1912.zones
建立sina.com 域
创建反向区域
[root@localhost etc]# cd ..
[root@localhost chroot]# cd var/named
生成区域文件
[root@localhost named]# cp -p localhost.zone sina.com.zone
生成反向区域文件
[root@localhost named]# cp -p named.local 192.168.1.zone
修改主机名为mail.sina.com
[root@localhost named]# vim /etc/sysconfig/network
修改dns指向
[root@mail ~]# vim /etc/resolv.conf
修改hosts文件
[root@mail ~]# vim /etc/hosts
启动dns服务
[root@mail ~]# service named restart
5)配置sendmail
安装sendmail及dovecot
[root@mail Server]# yum install sendmail -y
[root@mail Server]# yum install dovecot –y
[root@mail Server]# yum install sendmail-cf
[root@mail ~]# cd /etc/mail
编辑sendmail配置文件
[root@mail mail]# vim sendmail.mc
编辑access文件允许为163.com域转发
[root@mail mail]# vim access
主机名为mail.sina.com 所负责的域为sina.com
[root@mail mail]# vim local-host-names
启动sendmail及dovecot
[root@mail ~]# service sendmail restart
[root@mail ~]# service dovecot restart
创建账号
[root@mail ~]# useradd xht3
[root@mail ~]# passwd xht3
[root@mail ~]# useradd xht4
[root@mail ~]# passwd xht4
6)使用outpress测试
建立账号xht4
接收和发送邮件的服务器名
账户名及密码
xht3的配置类似!
xht4向xht3发送邮件
xht3接收到的邮件
7)验证xht4向163.com域的xht1发送邮件
xht1接收到的邮件
8)加入ssl加密功能
[root@mail ~]# cd /etc/pki/tls
创建ca其配置文件如下
[root@mail tls]# vim openssl.cnf
创建所需目录及文件
[root@mail CA]# mkdir certs newcerts crl
[root@mail CA]# touch index.txt serial
[root@mail CA]# echo "01" >serial
为ca生成密钥
[root@mail CA]# openssl genrsa 1024 >private/cakey.pem
Generating RSA private key, 1024 bit long modulus
................................++++++
....++++++
e is 65537 (0x10001)
生成ca的证书
[root@mail CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem
创建邮件发送服务器的证书所在目录
[root@mail CA]# mkdir -pv /etc/sendmail/certs
mkdir: 已创建目录 “/etc/sendmail”
mkdir: 已创建目录 “/etc/sendmail/certs”
[root@mail CA]# cd /etc/sendmail/certs
为邮件发送服务器生成密钥
[root@mail certs]# openssl genrsa 1024 >one.key
Generating RSA private key, 1024 bit long modulus
...........++++++
.......++++++
e is 65537 (0x10001)
利用密钥生成证书请求
[root@mail certs]# openssl req -new -key one.key -out one.csr
取得证书
[root@mail certs]# openssl ca -in one.csr -out one.key
创建邮件接收服务器证书所在目录
[root@mail certs]# mkdir -pv /etc/dovecot/certs
mkdir: 已创建目录 “/etc/dovecot”
mkdir: 已创建目录 “/etc/dovecot/certs”
[root@mail certs]# cd /etc/dovecot/certs
生成密钥
[root@mail certs]# openssl genrsa 1024 >two.key
生成证书请求
[root@mail certs]# openssl req -new -key two.key -out two.csr
生成证书
[root@mail certs]# openssl ca –in two.csr –out two.cert
改变证书所在目录下文件的权限
[root@mail ~]# chmod 600 /etc/sendmail/certs/*
[root@mail ~]# chmod 600 /etc/dovecot/certs/*
[root@mail ~]# cd /etc/pki/CA
[root@mail CA]# chmod 600 private/*
编辑sendmail配置文件使其支持ssl
[root@mail CA]# vim /etc/mail/sendmail.mc
修改dovecot配置文件使其支持ssl
[root@mail CA]# vim /etc/dovecot.conf
重启服务
[root@mail CA]# service dovecot restart
[root@mail CA]# service sendmail restart
9)测试ssl功能
设置xht1账号的发送服务器使用ssl连接
接送服务器的主机名mail.163.com
xht1向xht2发送邮件
服务器出示的证书
xht2收到的邮件
设置xht1账号的接收服务器用ssl连接
xht1接收邮件时服务器出示的证书
xht1接收到的邮件
10)为sendmail加入账号验证功能
查看所需的软件包
编辑sendmail.mc文件
[root@mail ~]# vim /etc/mail/sendmail.mc
修改如下
查看sendmail验证功能是否具备
发送邮件测试
产生xht1账号及密码的base64编码
启动账号验证服务
输入xht1的账号及密码来通过验证
向xht2发送邮件
切换到xht2来查看邮件
利用outlook验证
设置xht1使用密码验证登录
xht2收到xht1发来的邮件
配置结束。
转载于:https://blog.51cto.com/xht35/989626