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

所用拓扑图

sendmail在企业网中的应用_sendmail

MTA详细配置

1)ip地址配置

sendmail在企业网中的应用_sendmail_02

2)配置本地yum服务器

 sendmail在企业网中的应用_sendmail_03

配置文件如下:

sendmail在企业网中的应用_sendmail_04

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

修改如下;

sendmail在企业网中的应用_sendmail_05

sendmail在企业网中的应用_sendmail_06

sendmail在企业网中的应用_sendmail_07

编辑区域声明文件

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

sendmail在企业网中的应用_sendmail_08

反向区域

sendmail在企业网中的应用_sendmail_09

产生区域文件

[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

sendmail在企业网中的应用_sendmail_10

编辑192.168.1.zone文件

[root@localhost named]# vim 192.168.1.zone

sendmail在企业网中的应用_sendmail_11

启动服务

[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

sendmail在企业网中的应用_sendmail_12

[root@localhost mail]# vim access

sendmail在企业网中的应用_sendmail_13

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

sendmail在企业网中的应用_sendmail_14

修改本地dns指向

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

sendmail在企业网中的应用_sendmail_15

修改network文件

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

sendmail在企业网中的应用_sendmail_16

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

sendmail在企业网中的应用_sendmail_17

19  

xht2

sendmail在企业网中的应用_sendmail_19

sendmail在企业网中的应用_sendmail_20

发送邮件

sendmail在企业网中的应用_sendmail_21

接收邮件

sendmail在企业网中的应用_sendmail_22

MTA1详细配置

1)配置ip地址为192.168.1.20

2)配置本yum

编辑yum的配置文件

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

sendmail在企业网中的应用_sendmail_23

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

sendmail在企业网中的应用_sendmail_24

设置转发器为192.168.1.10

sendmail在企业网中的应用_sendmail_25

sendmail在企业网中的应用_sendmail_26

编辑区域声明文件

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

建立sina.com 域

sendmail在企业网中的应用_sendmail_27

创建反向区域

sendmail在企业网中的应用_sendmail_28

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

生成区域文件

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

sendmail在企业网中的应用_sendmail_29

生成反向区域文件

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

sendmail在企业网中的应用_sendmail_30

修改主机名为mail.sina.com

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

sendmail在企业网中的应用_sendmail_31

修改dns指向

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

sendmail在企业网中的应用_sendmail_32 

修改hosts文件

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

sendmail在企业网中的应用_sendmail_33

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

sendmail在企业网中的应用_sendmail_34

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

[root@mail mail]# vim access

sendmail在企业网中的应用_sendmail_35

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

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

sendmail在企业网中的应用_sendmail_36

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

sendmail在企业网中的应用_sendmail_37

sendmail在企业网中的应用_sendmail_38

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

sendmail在企业网中的应用_sendmail_39

账户名及密码

sendmail在企业网中的应用_sendmail_40 

sendmail在企业网中的应用_sendmail_41

xht3的配置类似!

xht4向xht3发送邮件

sendmail在企业网中的应用_sendmail_42

xht3接收到的邮件

sendmail在企业网中的应用_sendmail_43

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

21  

xht1接收到的邮件

sendmail在企业网中的应用_sendmail_45

8)加入ssl加密功能

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

创建ca其配置文件如下

[root@mail tls]# vim openssl.cnf

sendmail在企业网中的应用_sendmail_46

sendmail在企业网中的应用_sendmail_47

sendmail在企业网中的应用_sendmail_48

创建所需目录及文件

[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

sendmail在企业网中的应用_sendmail_49

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

[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

sendmail在企业网中的应用_sendmail_50

取得证书

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

sendmail在企业网中的应用_sendmail_51

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

[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

sendmail在企业网中的应用_sendmail_52

生成证书

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

sendmail在企业网中的应用_sendmail_53

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

[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

sendmail在企业网中的应用_sendmail_54

sendmail在企业网中的应用_sendmail_55

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

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

sendmail在企业网中的应用_sendmail_56 

重启服务

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

9)测试ssl功能

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

sendmail在企业网中的应用_sendmail_57 

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

sendmail在企业网中的应用_sendmail_58

xht1向xht2发送邮件

sendmail在企业网中的应用_sendmail_59

服务器出示的证书

sendmail在企业网中的应用_sendmail_60

xht2收到的邮件

sendmail在企业网中的应用_sendmail_61

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

sendmail在企业网中的应用_sendmail_62

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

sendmail在企业网中的应用_sendmail_63

xht1接收到的邮件

sendmail在企业网中的应用_sendmail_64

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

查看所需的软件包

sendmail在企业网中的应用_sendmail_65

编辑sendmail.mc文件

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

修改如下

sendmail在企业网中的应用_sendmail_66

sendmail在企业网中的应用_sendmail_67

sendmail在企业网中的应用_sendmail_68

查看sendmail验证功能是否具备

sendmail在企业网中的应用_sendmail_69

发送邮件测试

sendmail在企业网中的应用_sendmail_70

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

sendmail在企业网中的应用_sendmail_71

sendmail在企业网中的应用_sendmail_72

启动账号验证服务

sendmail在企业网中的应用_sendmail_73

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

sendmail在企业网中的应用_sendmail_74

向xht2发送邮件

sendmail在企业网中的应用_sendmail_75

切换到xht2来查看邮件

sendmail在企业网中的应用_sendmail_76

利用outlook验证

设置xht1使用密码验证登录

 16

xht2收到xht1发来的邮件

sendmail在企业网中的应用_sendmail_78

配置结束。