1.sendmail 簡介
sendmail是最重要的郵件傳輸代理程序。一般情況下,我們把電子郵件程序分解成用戶代理(MUA),傳輸代理(MTA)和投遞代理。 用戶代理用來接受用戶的指令,將用戶的信件傳送至信件傳輸代理,而投遞代理則從信件傳輸代理取得信件傳送至最終用戶.
當用戶試圖發送一封電子郵件的時候,他並不能直接將信件發送到對方的機器上,用戶代理必須試圖去尋找一個信件傳輸代理,把郵件提交給它。信件傳輸代理得到了郵件後,首先將它保存在自身的緩衝隊列中,然後,根據郵件的目標地址,信件傳輸代理程序將找到應該對這個目標地址負責的郵件傳輸代理服務器, 並且通過網絡將郵件傳送給它。對方的服務器接收到郵件之後,將其緩衝存儲在本地,直到電子郵件的接收者查看自己的電子信箱。
顯然,郵件傳輸是從服務器到服務器的,而且每個用戶必須擁有服務器上存儲信息的空間(稱爲信箱)才能接受郵件(發送郵件不受這個限制)。可以看到,一個郵件傳輸代理的主要工作是監視用戶代理的請求,根據電子郵件的目標地址找出對應的郵件服務器,將信件在服務器之間傳輸並且將接收到的郵件緩衝或者 提交給最終投遞程序。有許多的程序可以作爲信件傳輸代理,但是sendmail是其中最重要的一個,事實證明它可以支持數千甚至更多的用戶,而且佔用的系統資源相當少。
當sendmail程序得到一封待發送的郵件的時候,它需要根據目標地址確定將信件投遞給對應的服務器,這是通過DNS服務實現的。例如一封郵件的目標地址是[email protected],那麼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發來的郵件
配置結束。