1.電子郵件服務簡介:
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支持插件,讓用戶可以直接通過瀏覽器查收,閱讀和發送郵件。
2.關於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
3.下面就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],現在要通過加密和認證來實現雙方用戶的郵件通信。
4.實驗步驟:
(1)編輯access文件
[root@localhost Server]# cd /etc/mail
[root@localhost mail]# vim access
將sendmail服務重新啓動一下:
service sendmail start
編輯local-host-names 文件,填寫負責的區域:
[root@localhost mail]# vim local-host-names
(2)既然牽扯到域,少不了dns服務器的配置:
下面是北京地區dns服務器的配置:
配置之前安裝以下包:rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm
rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm
rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm
[root@localhost Server]# cd /var/named/chroot/etc/
[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf
[root@localhost etc]# vim named.conf
15行 any 27行 any 28行 any 37行 any 38行 any
[root@localhost etc]# vim named.rfc1912.zones #修改區域聲明文件
[root@localhost etc]# cd /var/named/chroot/var/named
[root@localhost named]# cp -p localhost.zone bj.com.db
[root@localhost named]# vim bj.com.db
[root@localhost named]# chkconfig named on
[root@localhost named]# service named start
[root@localhost named]# vim /etc/resolv.conf
修改地區名稱:
[root@localhost named]# vim /etc/sysconfig/network
hosts文件裏的信息也得改:
[root@localhost named]# vim /etc/hosts
[root@localhost named]# init 6 #重新啓動
啓動完成後確認這幾種服務是否開啓:
[root@mail ~]# service named status
[root@mail ~]# service sendmail status
建立兩個用戶user1 user2
[root@mail ~]# echo "123" |passwd --stdin user1
[root@mail ~]# echo "123" |passwd --stdin user2
現在先來測試北京本地用戶是否能收發郵件。
至此說明了用戶user1接到了自己給自己發送的郵件。
(3)接下來安裝接收服務器:
首先我們來安裝dovecot包:
[root@mail ~]# yum install -y dovecot
[root@mail ~]# chkconfig dovecot on
[root@mail ~]# service dovecot start #啓動dovecot服務
現在我們使用user1給user2發送郵件:
說明user1已經成功將郵件發送給user2.
做到這裏,說明北京本地的兩個用戶已經可以相互發送郵件和接收郵件,那接下的任務就是讓北京用戶和上海用戶可以互相收發郵件。
建立上海郵件服務器的步驟跟北京基本上是一樣的,在這裏步驟就省略了。
因爲私有域名的原因,上海和北京兩個地區要滿足互相收發郵件,必須開啓轉發功能:
[root@mail ~]# vim /var/named/chroot/etc/named.conf
同樣,上海地區的也一樣要改,並且轉發的地址爲192.168.5.100.
[root@mail ~]# rndc reload
下面我們來測試上海用戶user3給北京用戶user1發送郵件的結果:
說明上海的user3用戶已經成功的將郵件發送給了北京的user1用戶,實現了兩地用戶之間的通信。
(4)爲了保證郵件收發的安全性,下面我們隊郵件系統的收發進行加密:
啓用加密設置:
[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
啓動134行。
[root@mail mail]# cd certs/
[root@mail certs]# chmod 600 * #修改權限
爲了驗證TLS是否啓動,我們做以下操作:
說明tls已經開啓。
(5)下面爲接收服務器頒發認證:
[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/dovecot.conf
[root@mail certs]# service dovecot restart
下面是測試:
我們先走110端口的pop3.
安裝抓包工具:wireshark
[root@mail ~]# tshark -ni eth0 -R "tcp.dstport eq 110"
從這裏可以看出輸入的信息被抓獲,非常不安全。
下面我們走993的加密端口,看看會有什麼結果:
[root@mail ~]# tshark -ni eth0 -R "tcp.dstport eq 993"
從這裏可以看出所輸入的信息被SSL加密,保證了安全性。
下面我們也得讓客戶端接收郵件的時候走的是加密端口。
說明接收郵件也是通過加密來接收的。
上海地區的做法跟北京一樣,在這裏就不做說明了。