郵件傳輸代理程序sendmail-基本配置 證書 郵件加密 認證

sendmail是最重要的郵件傳輸代理程序。Sendmail做爲一種免費的郵件服務器軟件,已被普遍的應用於各類服務器中,它在穩定性、可移植性、及確保沒有bug等方面具備必定的特點,且能夠在網絡中搜索到大量的使用資料通常狀況下,咱們把電子郵件程序分解成用戶代理,傳輸代理和投遞代理。 用戶代理用來接受用戶的指令,將用戶的信件傳送至信件傳輸代理而投遞代理則從信件傳輸代理取得信件傳送至最終用戶的郵箱郵件傳輸是從服務器到服務器的,並且每一個用戶必須擁有服務器上存儲信息的空間(稱爲信箱)才能接受郵件(發送郵件不受這個限制)。能夠看到,一個郵件傳輸代理的主要工做是監視用戶代理的請求,根據電子郵件的目標地址找出對應的郵件服務器,將信件在服務器之間傳輸而且將接收到的郵件緩衝或者 提交給最終投遞程序。有許多的程序能夠做爲信件傳輸代理,可是sendmail是其中最重要的一個,事實證實它能夠支持數千甚至更多的用戶,並且佔用的系統資源至關少。不過,sendmail的配置十分複雜,且無驗證,沒有防範垃圾機制,沒有防病毒機制。當sendmail程序獲得一封待發送的郵件的時候,它須要根據目標地址肯定將信件投遞給對應的服務器,這是經過DNS服務實現的。sendmail首先肯定這個地址是用戶名+機器名的格式,而後,經過查詢DNS來肯定須要把信件投遞給某個服務器。DNS數據中,與電子郵件相關的是MX記錄 linux

MUA (mail user agent   郵件用戶代理),用於用戶端發送郵件或者閱讀郵件linux有mutt這個工具 MTA (mail tranfer agent 郵件傳輸代理 ),至關於一個郵局,server端的軟件,主要的功能有,接收MUA發來的郵件和把郵件發送給下一個MTA,能夠說是一個郵件路由(mail router),server端的軟件就屬於MTA,如今開源的有sendmail,postfix,qmail等  vim

MDA (mail devilery agent 郵件投遞代理),主要是將MTA所接受的郵件,依照郵件的目的地將此郵件放到本機帳號下或者是給下一個MTA,通常就是指mail這樣的命令 centos

郵件的協議: 服務器

 發信: SMTP (simple mail tranfer protocol 簡單郵件傳輸協議)   端口號 TCP的25端口,在發信時,MUA會主動鏈接MTA的port 25,而後經由SMTP協議發送出去,SMTP分爲接受SMTP和發送SMTP,它無論兩端主機的配置或者系統等,只要兩邊SMTP協議OK就能夠發送郵件  網絡

收信: POP   (post office protocol    郵局協議),來鏈接到MTA,以讀取或者下載郵件,如今經常使用的版本是POP3,端口爲110 IMAP   (internet message access protocol 網絡報文件協議),能在下載郵件前先下載郵件頭信息,以可讓用戶選擇性下載 端口 143。 ide

首先來測試一下環境 工具

這裏我用的centos的系統,默認彷佛是安裝過了sendmail的,而且是啓動過的。 post

接着安裝dovecotyum install dovecot 測試

啓動dovecot service dovecot start 編碼

這時是能夠發信件的,爲了測試能夠先添加兩個帳號user1user2,而後向其發送一份郵件

由日誌看出,發送成功了,真的發送成功了嗎,要看user1可否收到這封標題爲1的內容爲12387681498649821的郵件,爲了驗證,要切換到user1,進行收信

說明真的發成功,好神奇呀。。。

在後續操做以前,先安裝一個工具sendmail-cf

接下來來修改/etc/mail/目錄下的三個文件

vim sendmail.mc ,讓其監聽全部地址,以達到用客戶端也能夠發信件的目的

vim access (作中繼)在後面追加,實現這個網段地址的中繼,及到163.com域的都無條件接受,到sina.com的進行中繼

vim local-host-names 

通過測試,沒有問題,基於上面的基本配置後,下面來開始對sendmail的搭建

一:163.com部分的基本搭建

首先來安裝並搭建DNS服務器(爲了節省資源,把郵件服務器和ns服務器搭在一臺機器上)

至此,dns就安裝安裝完成了,而後開始搭建

而後切換到安裝目錄,來產生配置文件

而後編輯該配置文件

 

而後修改區域生成文件vim named.rfc1912.zones (填寫內容只是說明用法)

而後去生成163.com.zone

接着編輯163文件

而後啓動dns服務器:service named start

接着要作DNS指向:編輯/etc/resolv.conf

而後修改主機名: vim /etc/sysconfig/network

接着也要把hosts文件也要修改了

重啓sendmail DNS服務器

接下來就是測試來看是否搭建成功

由圖可知,基本搭建成功。

二:sina.com的基本搭建

這裏我用redhat來搭建sendmail,在redhatsendmail依然默認已經安裝並啓動,下面來安裝dovecot yum install dovecot

啓動dovecotservice dovecot start

創建用戶user3 user4

接下來依舊來安裝並搭建DNS服務器(爲了節省資源,把郵件服務器和ns服務器搭在一臺機器上)


而後切換到安裝目錄,來產生配置文件

而後編輯該配置文件

而後修改區域生成文件vim named.rfc1912.zones (填寫內容只是說明用法)

而後去生成sina.com.zone

 

接着編輯sina文件

而後啓動dns服務器:service named start

接着要作DNS指向:編輯/etc/resolv.conf

安裝一個工具sendmail-cf

接下來來修改/etc/mail/目錄下的三個文件

vim sendmail.mc ,讓其監聽全部地址,以達到用客戶端也能夠發信件的目的

vim access (作中繼)在後面追加,實現這個網段地址的中繼,及到sina.com域的都無條件接受,到163.com的進行中繼

vim local-host-names 

而後修改主機名: vim /etc/sysconfig/network

接着也要把hosts文件也要修改

重啓sendmail DNS服務器

接下來就是測試來看是否搭建成功

由此知,基本搭建也已經成功了。

下面來測試從163sina發送是否成功

由此知,已成功完成兩者的郵件收發。

爲了實現快速發送,這裏要對兩者的DNS作反向解析

163

vim /var/named/chroot/etc/named.rfc1912.zones 

而後去生成這個文件

編輯生成的192.168.102.local文件

而後執行:rndc reload

接下來作sinaDNS反向解析

sina

vim /var/named/chroot/etc/named.rfc1912.zones 

而後生成192.168.102.local文件

編輯生成的192.168.102.local文件

而後執行:rndc reload

而後分別重啓兩者的sendmailDNS服務器,這時再進行測試,發現速度快了不少。

利用證書實現對信息的加密:

實現這個功能,在一臺機器上實現就好,這裏我在sina.com上實現

 爲了試驗的須要,這裏要安裝一款抓包工具

yum install wireshark

因爲要利用證書,因此要作CA

 cd /etc/pki/

vim tls/openssl.cnf 

接下來建立三個目錄兩個文件:

建立一個序列號到serial中:echo 01 >serial 

建立私鑰並修改權限:

生成證書:

至此,CA架設就完成了。

建立一個目錄來存放爲sendmail申請的證書

切換到所建立的目錄:cd /etc/mail/certs

生成私鑰

作請求

產生證書

openssl ca -in sendmail.csr -out sednmail.crt

 chmod 600 sendmail.key 

編輯文件,使證書生效

重啓sendmail服務器

測試

此時,接收時仍是明文,這時假如接受時使用pop3simaps,又該怎麼作呢,這時,能夠再來建立一證書

 mkdir -pv /etc/dovecot/certs

生成私鑰:

作請求:

產生證書: openssl ca -in dovecot.csr -out dovecot.crt

chmod 600 dovecot.key 

而後結合dovecot來用,vim /etc/dovecot.conf 

重啓服務:

service dovecot restart

測試

啓用抓包工具

在服務器上發以信件,這時在客戶端收發

抓包圖示顯示,沒有任何有價值的東西顯示出來

此時就是先了加密。

認證:

可是sendmail自身沒有身份認證能力,要想實現身份認證,必需要藉助sasl協議,而這個協議要想正常工做,就必需要安裝cyrus-sasl這個包,只有安裝了這個包,纔會造成saslauthd這個服務器軟件,下面就來安裝cyrus-sasl

由此信息可知,這個包已經安裝過了,可是還缺乏devel包,是要裝上的

此時去看一個文件

cd /usr/lib/sasl2/

 vim Sendmail.conf 

這時可知,saslauthd已與sendmail結合了,下面來啓動這個服務器軟件

接着要去修改sendmail的配置文件,來和saslauthd結合

打開檢測機制:

反紅的那個表達式的意思是讓其強制身份認證。

而後重啓服務

而後來用一個不存在的帳號來測試:

Telnet 127.0.0.1 25

能夠看出要求認證了。

當利用auth login指令測試時,帳號不能輸明文的,要輸入base64編碼的帳號,這時要產生這個base64編碼

接着把密碼也生成base64編碼

繼續剛纔的測試,輸入auth login後加入編碼過的用戶

此時就能發信息了,這時在服務器短能夠發信件了,那在客戶端呢

在客戶端依舊以一個不合法的用戶來測試

說明是不能發送的,說明認證也就成功了。

相關文章
相關標籤/搜索