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.案例配置

所用拓扑图

19

MTA详细配置

1)ip地址配置

2

2)配置本地yum服务器

 3

配置文件如下:

19

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

修改如下;

2

19

19

编辑区域声明文件

[root@localhost etc]# vim named.rfc1912.zones

19

反向区域

19

产生区域文件

[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

19

编辑192.168.1.zone文件

[root@localhost named]# vim 192.168.1.zone

19

启动服务

[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

19

[root@localhost mail]# vim access

19

[root@localhost mail]# vim local-host-names

20

修改本地dns指向

[root@localhost mail]# vim /etc/resolv.conf

19

修改network文件

[root@localhost mail]# vim /etc/sysconfig/network

20

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

19

  

xht2

19

20

发送邮件

19

接收邮件

20

MTA1详细配置

1)配置ip地址为192.168.1.20

2)配置本yum

编辑yum的配置文件

[root@localhost ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

19

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

19

设置转发器为192.168.1.10

19

19

编辑区域声明文件

[root@localhost etc]# vim named.rfc1912.zones

建立sina.com 域

20

创建反向区域

22

[root@localhost etc]# cd ..
[root@localhost chroot]# cd var/named

生成区域文件

[root@localhost named]# cp -p localhost.zone   sina.com.zone

19

生成反向区域文件

[root@localhost named]# cp -p named.local 192.168.1.zone

20

修改主机名为mail.sina.com

[root@localhost named]# vim /etc/sysconfig/network

21

修改dns指向

[root@mail ~]# vim /etc/resolv.conf

19 

修改hosts文件

[root@mail ~]# vim /etc/hosts

21

启动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

19

编辑access文件允许为163.com域转发

[root@mail mail]# vim access

20

主机名为mail.sina.com 所负责的域为sina.com

[root@mail mail]# vim local-host-names

21

启动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

19

20

接收和发送邮件的服务器名

21

账户名及密码

22 

23

xht3的配置类似!

xht4向xht3发送邮件

19

xht3接收到的邮件

20

7)验证xht4向163.com域的xht1发送邮件

  

xht1接收到的邮件

22

8)加入ssl加密功能

[root@mail ~]# cd /etc/pki/tls

创建ca其配置文件如下

[root@mail tls]# vim openssl.cnf

19

20

21

创建所需目录及文件

[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

19

创建邮件发送服务器的证书所在目录

[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

20

取得证书

[root@mail certs]# openssl ca -in one.csr -out one.key

23

创建邮件接收服务器证书所在目录

[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

21

生成证书

[root@mail certs]# openssl  ca –in  two.csr –out two.cert

22

改变证书所在目录下文件的权限

[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

19

20

修改dovecot配置文件使其支持ssl

[root@mail CA]# vim /etc/dovecot.conf

19 

重启服务

[root@mail CA]# service dovecot restart
[root@mail CA]# service sendmail restart

9)测试ssl功能

设置xht1账号的发送服务器使用ssl连接

1 

接送服务器的主机名mail.163.com

4

xht1向xht2发送邮件

21

服务器出示的证书

1

xht2收到的邮件

22

设置xht1账号的接收服务器用ssl连接

23

xht1接收邮件时服务器出示的证书

24

xht1接收到的邮件

25

10)为sendmail加入账号验证功能

查看所需的软件包

3

编辑sendmail.mc文件

[root@mail ~]# vim /etc/mail/sendmail.mc

修改如下

1

2

4

查看sendmail验证功能是否具备

9

发送邮件测试

10

产生xht1账号及密码的base64编码

11

12

启动账号验证服务

13

输入xht1的账号及密码来通过验证

14

向xht2发送邮件

15

切换到xht2来查看邮件

5

利用outlook验证

设置xht1使用密码验证登录

 

xht2收到xht1发来的邮件

18

配置结束。