基於linux的電子郵件服務(sendmail)

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

        image

       將sendmail服務重新啓動一下:

       service sendmail start

   編輯local-host-names 文件,填寫負責的區域:

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

       image

  (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

            image

           image

           image

      [root@localhost etc]# vim  named.rfc1912.zones         #修改區域聲明文件

      image

      [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

      image

    [root@localhost named]# chkconfig named on

     [root@localhost named]# service named start

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

     image

    修改地區名稱:

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

     image

    hosts文件裏的信息也得改:

     [root@localhost named]# vim /etc/hosts

     image

    [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

    現在先來測試北京本地用戶是否能收發郵件。

    image    

    image

    image

    image

    image

   image

   至此說明了用戶user1接到了自己給自己發送的郵件。

  (3)接下來安裝接收服務器:

     首先我們來安裝dovecot包:

     [root@mail ~]# yum install -y dovecot

     [root@mail ~]# chkconfig dovecot on

     [root@mail ~]# service dovecot start               #啓動dovecot服務

     現在我們使用user1給user2發送郵件:

     image

     image

  說明user1已經成功將郵件發送給user2.

做到這裏,說明北京本地的兩個用戶已經可以相互發送郵件和接收郵件,那接下的任務就是讓北京用戶和上海用戶可以互相收發郵件。

    建立上海郵件服務器的步驟跟北京基本上是一樣的,在這裏步驟就省略了。

   因爲私有域名的原因,上海和北京兩個地區要滿足互相收發郵件,必須開啓轉發功能:

   [root@mail ~]# vim /var/named/chroot/etc/named.conf

   image  

   同樣,上海地區的也一樣要改,並且轉發的地址爲192.168.5.100.

   [root@mail ~]# rndc reload

   下面我們來測試上海用戶user3給北京用戶user1發送郵件的結果:

   image 

   image

   說明上海的user3用戶已經成功的將郵件發送給了北京的user1用戶,實現了兩地用戶之間的通信。

(4)爲了保證郵件收發的安全性,下面我們隊郵件系統的收發進行加密:

   啓用加密設置:

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

   [root@mail pki]# cd tls/

   [root@mail tls]# vim openssl.cnf

   image

   image

   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

  image

  [root@mail certs]# cp /etc/pki/CA/cacert.pem .

  [root@mail certs]# cd /etc/mail

  [root@mail mail]#  vim sendmail.mc

  image

  image

  啓動134行。

  [root@mail mail]# cd certs/

  [root@mail certs]# chmod 600 *       #修改權限

  爲了驗證TLS是否啓動,我們做以下操作:

  image

 說明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

  image

  image

  [root@mail certs]# service dovecot restart

  下面是測試:

   我們先走110端口的pop3.

   安裝抓包工具:wireshark

   [root@mail ~]#  tshark -ni eth0 -R "tcp.dstport eq 110"

   image

   image

   從這裏可以看出輸入的信息被抓獲,非常不安全。

   下面我們走993的加密端口,看看會有什麼結果:

   [root@mail ~]#  tshark -ni eth0 -R "tcp.dstport eq 993"

   image

  從這裏可以看出所輸入的信息被SSL加密,保證了安全性。

  下面我們也得讓客戶端接收郵件的時候走的是加密端口。

  image

  image

 image  

說明接收郵件也是通過加密來接收的。

上海地區的做法跟北京一樣,在這裏就不做說明了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章