一.電子郵件服務簡介:
Sendmail是UNIX/Linux環境中穩定性較好的一款郵件服務器軟件,通過對Sendmail服務器的配置可以實現基本的郵件轉發功能;dovecot服務器實現了POP3協議,可以與Sendmail服務器配合工作,實現用戶對郵件的收取功能;OpenWebmail是網頁形式的郵件應用系統,可實現用戶對郵件的發送、收取和管理功能。通過對Sendmail、dovecot和OpenWebmail的綜合管理,系統管理員可以構建出功能完善的郵件應用系統。
一個完整的電子郵件系統分爲以下3個部分:
(1)郵件用戶代理,簡稱MUA,其主要功能就是幫助用戶發送和收取電子郵件。目前常用的Outlook,Outlook Express,Foxmail,Thunderbird。
(2)郵件傳送代理,簡稱MTA。用來監控以及傳送電子郵件。基於linxu下的一般有sendmail,Qmail, Postfix。
(3)電子郵件協議,電子郵件客戶端和服務器的種類繁多,他們之間的電子郵件協議包括以下幾種:
1)SMTP. 即簡單郵件傳輸協議。他爲用戶提供高效,可靠地郵件傳輸,監聽25號端口。它是一個請求/響應協議,用於接收用戶的郵件請求,並與遠端郵件服務器建立smtp連接。
2)POP3. 即郵局協議。它使用tcp的110端口。用於電子郵件的接收。目前常用的是POP3.
3)IMAP4. 是通過互聯網獲取信息的一種協議。它同樣可以提供像POP那樣方便的下載郵件服務 。IMAP還提供一種摘要瀏覽功能,讓用戶可以在閱讀完郵件的主題,發件人,大小和到達時間等信息後才能決定是否下載。
4)Webmail。Webmail不是一種協議,而是一種專門針對郵件程序被安裝在服務器上的WEB支持插件,讓用戶可以直接通過瀏覽器查收,閱讀和發送郵件。
二.關於sendmail,我們來認識幾個人間和必須要安裝的包:
在red hat Enterprise Linux 5中,默認已經安裝並且可以啓動sendmail。
sendmail的配置文件:sendmail的配置文件都放在/etc/mail目錄下。
1)/etc/mail/sendmail.cf ,這是sendmail的主配置文件,所有sendmail的配置都保存在該文件中,該文件的語法複雜建議通過修改其他文件參數來由程序生成該主配置文件。
2)/etc/mail/sendmail.mc ,這個文件與sendmail.cf中的內容完全一樣,但卻擁有比較簡單的語法。可以通過程序M4將其轉化爲sendmail.cf 。
3)/etc/mail/access.db ,訪問數據庫,用來定義允許訪問本地郵件服務器的主機ip地址,以及訪問的類型
4)/etc/mail/aliases.db ,即別名數據庫,用來定義用戶別名。
5)/etc/mail/local-host-names ,該文件用於指定本地接收郵件的域。
需要安裝的包:sendmail-cf m4
三.下面就sendmail來舉一個案例:
有一個位於北京的郵件系統,域名爲bj.com ,ip地192.168.5.100,一個位於上海的郵件系統,域名爲sh.com ,ip地址爲192.168.5.101,北京有兩個用戶 user1 和user2 ,域名分別爲[email protected] 和[email protected],上海有兩個用戶 user3 和user4,域名分別爲[email protected] 和[email protected],現在要通過加密和認證來實現雙方用戶的郵件通信。
實驗步驟
1.編輯access文件
2.啓動sendmail服務,
編輯local-host-names文件
[root@localhost mail]# vim local-host-names
3.配置北京地區的dns服務器(需要安裝下面的包)
[root@localhost etc]#vim named.conf
編輯區域聲明文件,修改如下
[root@localhost etc]# vim named.rfc1912.zones
查看端口開啓
[root@localhost etc]# vim /etc/resolv.conf
修改地區名稱
[root@localhost named]# vim /etc/sysconfig/network
[root@localhost named]# vim /etc/hosts
重新啓動linux系統
[root@localhost named]# init 6
查看服務是否開啓
4.在家目錄下創建兩個用戶user1,user2,密碼爲“123”
安裝dovecot並重啓服務
[root@localhost ~]# yum install -y dovecot
[root@localhost mail]# vim sendmail.cf
修改爲這樣的一行
測試北京本地用戶是否能收發郵件
5.使用Outlook Oxpress工具測試郵件的發送 創建用戶user1
點擊“完成”
創建郵件
6.安裝接收服務器: 首先安裝dovecot包:
啓動dovecot
創建用戶user2,方法步驟跟user1 一樣(這裏省略)
使用user1給user2 發送郵件
(建立上海郵件服務器同北京)
因爲私有域名的原因,上海和北京兩個地區要滿足互相收發郵件,必須開啓轉發功能:
[root@mail ~]vim /var/named/chroot/etc/named.conf
同樣,上海地區的也一樣要改,並且轉發的地址爲192.168.2.10
[root@mail ~]# rndc reload
測試上海用戶user3給北京用戶user1發送郵件的結果:
說明上海的user3用戶已經成功的將郵件發送給了北京的user1用戶,實現了兩地用戶之間的通信。
爲了保證郵件收發的安全性,下面我們對郵件系統的收發進行加密:
啓用加密設置:
[root@mail ~]# cd /etc/pki/
[root@mail pki]# cd tls/
[root@mail tls]# vim openssl.cnf
CA證書的搭建過程:
[root@mail pki]# cd CA/
[root@mail CA]# mkdir crl
[root@mail CA]# mkdir certs
[root@mail CA]# mkdir newcerts
[root@mail CA]# touch index.txt serial
[root@mail CA]# echo "01" >serial
[root@mail CA]# openssl genrsa 1024 >private/cakey.pem
[root@mail CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
[root@mail CA]# chmod 600 private/cakey.pem #修改鑰匙權限
給sendmail頒發一個證書:
[root@mail CA]# mkdir /etc/mail/certs
[root@mail CA]# cd /etc/mail/certs/
[root@mail certs]# openssl genrsa 1024 >sendmail.key
[root@mail certs]# openssl req -new -key sendmail.key -out sendmail.csr
[root@mail certs]# openssl ca -in sendmail.key -out sendmail.cert
[root@mail certs]# cp /etc/pki/CA/cacert.pem .
[root@mail certs]# cd /etc/mail
[root@mail mail]# vim sendmail.mc
[root@mail mail]# cd certs/
[root@mail certs]# chmod 600 *
查看ssl是否啓動
[root@mail mail]# telnet 127.0.0.1 25
爲接收服務器頒發認證:
[root@mail mail]# mkdir -pv /etc/dovecot/certs
[root@mail mail]# cd /etc/dovecot/certs/
[root@mail certs]# openssl genrsa 1024 >dovecot.key
[root@mail certs]# openssl req -new -key dovecot.key -out dovecot.csr
[root@mail certs]# openssl ca -in dovecot.csr -out dovecot.cert
[root@mail certs]# chmod 600 *
[root@mail certs]# vim /etc/devecot.conf
[root@mail certs]# service dovecot restart
7.測試:使用110端口的pop3進行測試
首先安裝抓包工具:wireshark
[root@mail ~]# tshark -ni eth0 -R "tcp.dstport eq 110"
從這裏可以看出輸入的信息被抓獲,非常不安全。
使用993端口進行測試
[root@mail ~]# tshark -ni eth0 -R "tcp.dstport eq 993"
客戶端使用加密端口接收郵件
至此實驗完成,如有不對,多謝批評指正!