歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Sendmail郵件服務器快速指南 1

人們在互聯網上最常使用的就是電子郵件,很多企業用戶也經常使用免費電子郵件系統。本文就以step by step的方式引導用戶從sendmail源代碼開始構建一個可以滿足基本工作需要的郵件系統。
概述
sendmail是最重要的郵件傳輸代理程序。理解電子郵件的工作模式是非常重要的。一般情況下,我們把電子郵件程序分解成用戶代理,傳輸代理和投遞代理。 用戶代理用來接受用戶的指令,將用戶的信件傳送至信件傳輸代理,如:outlook express、foxmail等。而投遞代理則從信件傳輸代理取得信件傳送至最終用戶的郵箱,如:procmail。
當用戶試圖發送一封電子郵件的時候,他並不能直接將信件發送到對方的機器上,用戶代理必須試圖去尋找一個信件傳輸代理,把郵件提交給它。信件傳輸代理得到了郵件後,首先將它保存在自身的緩沖隊列中,然後,根據郵件的目標地址,信件傳輸代理程序將找到應該對這個目標地址負責的郵件傳輸代理服務器, 並且通過網絡將郵件傳送給它。對方的服務器接收到郵件之後,將其緩沖存儲在本地,直到電子郵件的接收者察看自己的電子信箱。
顯然,郵件傳輸是從服務器到服務器的,而且每個用戶必須擁有服務器上存儲信息的空間(稱為信箱)才能接受郵件(發送郵件不受這個限制)。可以看到,一個郵件傳輸代理的主要工作是監視用戶代理的請求,根據電子郵件的目標地址找出對應的郵件服務器,將信件在服務器之間傳輸並且將接收到的郵件緩沖或者 提交給最終投遞程序。 有許多的程序可以作為信件傳輸代理,但是sendmail是其中最重要的一個,事實證明它可以支持數千甚至更多的用戶,而且占用的系統資源相當少。不過,sendmail的配置十分復雜,因此,也有人使用另外的一些工具,如qmail、postfix等等。
當sendmail程序得到一封待發送的郵件的時候,它需要根據目標地址確定將信件投遞給對應的服務器,這是通過DNS服務實現的。例如一封郵件的目標地址是[email protected],那麼sendmail首先確定這個地址是用戶名(ideal)+機器名(linuxaid.com.cn)的格式,然後,通過查詢DNS來確定需要把信件投遞給某個服務器。
DNS數據中,與電子郵件相關的是MX記錄,例如在linuxaid.com.cn這個域的dns數據文件中有如下設置:
IN MX 10 mail
IN MX 20 mail1
mail IN A 202.99.11.120
mail1 IN A 202.99.11.121
顯然,在DNS中說明linuxaid.com.cn有兩個一個信件交換(MX)服務器,於是,sendmail試圖將郵件發送給兩者之一。一般來說,排在前面的的MX服務器的優先級別比較高,因此服務 器將試圖連接mail.linuxaid.com.cn的25端口,試圖將信件報文轉發給它。如果成功,你的smtp服務器的任務就完成了,在這以後的任務,將由mail.linuxaid.com.cn來完成。在一般的情況下,mail換器會自動把信件內容轉交給目標主機,不過,也存在這樣的情況,目標主機(比如linuxaid.com.cn)可能並不存在,或者不執行smtp服務,而是由其mx交換器來執行信件的管理,這時候,最終的信件將保存在mx機器上,直到用戶來察看它。
如果DNS查詢無法找出對某個地址的MX記錄(通常因為對方沒有信件交換主機),那麼sendmail將是試圖直接與來自郵件地址的主機對話並且發送郵件。例如,[email protected]中沒有對應的MX記錄,因此sendmail在確定MX交換器失敗後,將從DNS取得對方的IP地址並直接和對方對話試圖發送郵件。
工作環境
    本文假設用戶希望在園區網環境中架設一個電子郵件服務器,為本單位用戶提供郵件服務。該服務器擁有一個合法的IP地址202.99.11.200和一個合法的域名mail.linuxaid.com.cn,並且DNS的MX記錄也指向該域名(注:這裡示例域名和IP地址均為偽造域名和地址)。為了滿足域名需求,DNS的域數據文件應該包含以下內容:
     IN MX 10 mail
     mail IN A 202.99.11.200
試驗環境為:redhat6.2、sendmail.8.11.4、qpopper4.0.3。
軟件下載
分別從以下地址下載sendmail和qpopper:
sendmail.8.11.4.tar.gz http://www.sendmail.org/current-release.html
qpopper4.0.3.tar.gz http://www.eudora.com/qpopper_general/
Sendmail的配置和安裝
Sendmail是目前使用最為廣泛的一種E-mail服務器。當前其最新的穩定版本為8.11.4。下載得到tar.gz格式的壓縮包以後,將其存放在/usr/src目錄下。
解壓軟件包:
    [root@email src]# tar xvfz sendmail.8.11.4.tar.gz
    [root@email src]# cd sendmail-8.11.4
編譯安裝:
    [root@email sendmail-8.11.4]# cd sendmail
    [root@email sendmail]# sh Build
生成配置文件:
   [root@email sendmail]#cd /usr/src/sendmail-8.11.4/cf/cf/
一般該目錄下應該有config.mc的文件,如果沒有則創建新文件config.mc,內容為:
divert(-1)
dnl This is the macro config file used to generate the /etc/sendmail.cf
dnl file. If you modify thei file you will have to regenerate the
dnl /etc/sendmail.cf by running this macro config through the m4
dnl preprocessor:
dnl m4 /etc/sendmail.mc > /etc/sendmail.cf
dnl You will need to have the Sendmail-cf package installed for this to work.
include(`/usr/src/sendmail-8.11.4/cf')
define(`confDEF_USER_ID',`8:12')
OSTYPE(`linux')
undefine(`UUCP_RELAY')
undefine(`BITNET_RELAY')
define(`confAUTO_REBUILD')
define(`confTO_CONNECT', `1m')
define(`confTRY_NULL_MX_LIST',true)
define(`confDONT_PROBE_INTERFACES',true)
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')
FEATURE(`smrsh',`/usr/sbin/smrsh')
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable') 上一頁12 下一頁 閱讀全文
Copyright © Linux教程網 All Rights Reserved