| 導購 | 订阅 | 在线投稿
分享
 
 
 

企業Sendmail郵件服務器的創建

來源:互聯網  2008-05-31 00:09:46  評論

---- 人們在Internet上最常使用的就是電子郵件,很多企業用戶也經常使用電子郵件系統。在Unix系統中,Sendmail是應用最廣的電子郵件服務器。本文將比較詳細地介紹如何建立一個Sendmail電子郵件服務器,以滿足企業的基本需求。 一、Sendmail的工作模式 ---- Sendmail是最重要的郵件傳輸代理程序。理解電子郵件的工作模式是非常重要的。一般情況下,電子郵件系統可分爲用戶代理、傳輸代理和投遞代理幾個部分。用戶代理用來接受用戶的指令,將用戶的信件傳送至信件傳輸代理,如Outlook Express和Foxmail等。而投遞代理則從信件傳輸代理取得信件傳送至最終用戶的郵箱,如Procmail。 ---- 當用戶試圖發送一封電子郵件的時候,他並不能直接將信件發送到對方的機器上,用戶代理必須試圖去尋找一個信件傳輸代理,把郵件提交給它。信件傳輸代理得到了郵件後,首先將它保存在自身的緩沖隊列中,然後,根據郵件的目標地址,信件傳輸代理程序將找到應該對這個目標地址負責的郵件傳輸代理服務器,再通過網絡將郵件傳送給它。對方的服務器接收到郵件之後,將其緩沖存儲在本地,直到電子郵件的接收者查看自己的電子信箱。 ---- 顯然,郵件傳輸是從服務器到服務器的,而且每個用戶必須擁有服務器上存儲信息的空間(稱爲信箱)才能接受郵件(發送郵件不受這個限制)。可以看到,一個郵件傳輸代理的主要工作是監視用戶代理的請求,根據電子郵件的目標地址找出對應的郵件服務器,將信件在服務器之間傳輸並且將接收到的郵件緩沖或者 提交給最終投遞程序。 有許多程序可以作爲信件傳輸代理。在Unix系統中,Sendmail是其中應用最廣泛的一個,它是一個免費軟件,可以支持數千甚至更多的用戶,而且占用的系統資源相當少。不過,Sendmail的配置十分複雜,因此,也有人使用另外的一些工具,如Qmail或Postfix等等。 ---- 當Sendmail程序得到一封待發送的郵件的時候,它需要根據目標地址確定將信件投遞給對應的服務器,這是通過DNS服務實現的。例如一封郵件的目標地址是ideal@linuxaid.com.cn,那麽Sendmail首先確定這個地址是用戶名(ideal)+機器名(linuxaid.com.cn)的格式,然後,通過查詢DNS來確定需要把信件投遞給某個服務器。 ---- DNS數據中,與電子郵件相關的是信件交換(Message eXchange,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有2個MX服務器,于是,Sendmail試圖將郵件發送給兩者之一。一般來說,排在前面的MX服務器的優先級別比較高,因此服務器將試圖連接mail.linuxaid.com.cn的25端口,試圖將信件報文轉發給它。如果成功,SMTP服務器的任務就完成了。在這以後的任務,將由mail.linuxaid.com.cn來完成。在一般情況下,MX服務器會自動把信件內容轉交給目標主機。不過,也存在這樣的情況,目標主機(比如linuxaid.com.cn)可能並不存在,或者不執行SMTP服務,而是由其MX服務器來執行信件的管理,這時候,最終的信件將保存在MX機器上,直到用戶來查看它。 ---- 如果DNS查詢無法找出對某個地址的MX記錄(通常因爲對方沒有信件交換主機),那麽Sendmail將試圖直接與來自郵件地址的主機對話並且發送郵件。例如,test@aidgroup.linuxaid.com.cn,DNS中沒有對應的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

---- 試驗環境爲RedHat 6.2、Sendmail 8.11.4和Qpopper 4.0.3,可分別從http://www.Sendmail.org/current-release.html和http://www.eudora.com/QPopper_general/下載Sendmail和Qpopper。 三、Sendmail的安裝 ---- 當前Sendmail最新的穩定版本爲8.11.4,下載得到tar.gz格式的壓縮包以後,將其存放在/usr/src目錄下。 ---- 1.解壓軟件包 [root@email src]# tar xvfz Sendmail.8.11.4.tar.gz [root@email src]# cd Sendmail-8.11.4

---- 2.編譯安裝 [root@email Sendmail-8.11.4]# cd Sendmail [root@email Sendmail]# sh Build

---- 3.生成配置文件 [root@email Sendmail]#cd /usr/src/Sendmail-8.11.4/cf/cf/ 一般該目錄下應該有config.mc的文件,如果沒有則創建新文件 config.mc,內容如附圖所示。 然後運行: [root@email cf]# sh Build config.cf 該命令將在該目錄下生成config.cf文件。

---- 4.安裝Sendmail [root@email Sendmail]# sh Build install 將config.cf拷貝到/etc/mail目錄下,並改名爲Sendmail.cf: [root@email mail]#cp /usr/src/Sendmail-8.11.4/cf/cf/ config.cf /etc/mail/Sendmail.cf

四、Sendmail的配置

---- 配置Sendmail的步驟如下。

---- 1.在/etc/mail目錄下創建access文件,內容如下: 127.0.0.1 RELAY 202.99.11 RELAY

---- 這裏表示允許本機和202.99.11.0網段中的機器通過該郵件服務器的轉發郵件。其中202.99.11應該是您擁有的局域網絡IP網段的IP地址,只需要寫網絡部分即可。比如說您的用戶有多個網段,只需要在其中設置多個網段即可: 127.0.0.1 RELAY 202.99.11 RELAY 200.200.201 RELAY

---- 2.對access文件生成易于檢索的庫文件格式:

---- [root@email mail]# makemap hash access.db ----創建文件/etc/mail/local-host-names,其內容爲本機的擁有的域名信息,因爲在上面的DNS配置文件中該服務器有一個域名: email.linuxaid.com.cn,並且MX記錄也指向該域名,因此該服務器就有2個域名,分別爲email.linuxaid.com.cn和linuxaid.com.cn,這樣用戶才可以使用someone@linuxaid.com.cn這樣的地址收發郵件,故該文件應該包含入下內容:----linuxaid.com.cn.----mail.linuxaid.com.cn.----3.創建別名數據庫。在/etc/mail/aliases目錄下創建文件aliases,內容如下:MAILER-DAEMON: postmaster postmaster: root bin: root daemon: root nobody: root 然後生成aliases庫: [root@email mail]# newaliases 然後,就可以按如下方式啓動Sendmail了: [root@email mail]# /usr/sbin/Sendmail -bd -q20m 在第一次啓動時可能出現如下的錯誤信息: 554 5.0.0 /etc/mail/Sendmail.cf: line 41: unknown configuration line "" 554 5.0.0 /etc/mail/Sendmail.cf: line 60: unknown configuration line ""----不要緊張,只需要使用vi編輯器將這些行刪除即可,其實41和60等行都是空白行而已。刪除以後再重新啓動就應該沒有問題了。五、QPopper的安裝配置----QPopper是Unix/Linux環境下的POP3服務器,該軟件配合Sendmail使用。其主要功能是實現支持用戶通過POP3接收信件。安裝和配置Qpopper的主要步驟如下:1.創建從/usr/mail指向/var/spool/mail/的鏈接 [root@email src]# ln -s /var/spool/mail/ /usr/mail 2.解壓QPopper軟件包 [root@email src]# tar xvfz QPopper4.0.3.tar.gz [root@email src]# cd QPopper4.0.3 3.編譯安裝QPopper [root@email QPopper4.0.3]# ./configure [root@email QPopper4.0.3]# make [root@email QPopper4.0.3]# make install----安裝成功以後,QPopper將會被安裝在/usr/local/sbin/目錄下。設置inetd啓動QPopper。編輯/etc/inetd.conf,查找pop內容的一行,在其前面添加#號,然後在改行後面添加如下內容:pop-3 stream tcp nowait root /usr/local/sbin/popper QPopper -s然後查找inetd進程ID號: [root@email QPopper4.0.3]# ps ax|grep inetd 336 ? S 0:00 inetd 16872 pts/0 S 0:00 grep inetd 找到inetd進程號爲226。然後重新啓動inetd進程, 重新讀取配置文件: [root@www QPopper4.0.3]# kill -HUP 336 這時候查看系統服務端口號: [root@email QPopper4.0.3]# netstat -ln|grep 110 tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 則說明110端口已經開始正常服務。六、測試郵件服務器----接下來是測試郵件服務器的郵件發送/接收功能。注意,在測試時,不要在只對本地用戶進行測試。例如,用戶的域爲abc.com,測試時,不要只在郵件服務器上通過mail、elm等程序測試user1@abc.com用戶。因爲,此時user1是本地用戶,所以郵件服務器可以對其進行Relay。用戶應該從局域網上的另一台機器使用Outlook等郵件客戶端對服務器進行收發測試。----這種配置對于IP固定用戶沒有問題,只需要在access文件中指定其固定IP即可,而對于需要支持流動用戶,如撥號用戶的應用則不大適合,因爲如果完全打開RELAY功能可能導致郵件服務器的稱爲垃圾郵件的轉發站。----解決用戶IP不固定問題有2種方案,一種爲采用SMTP認證,即用戶發送郵件以前,郵件服務器進行用戶身份認證,通過則服務器爲其發送郵件,否則拒絕發信;第二種方案是采用動態轉發授權控制(Dynamic Relay Authorization Control,DRAC),其工作原理爲: 撥號用戶撥號上網後,首先收郵件,如果用戶能正確收郵件,則DRAC自動在access.db中加入剛才收郵件用戶的IP,並允許此IP可以發信。不過,30分鍾內,此IP不發/收郵件的話,DRAC將從access.db中刪除此IP。此種機制保證撥號用戶在沒有SMTP認證的情況下,也可以通過遠程郵件服務器發送電子郵件。,

---- 人們在Internet上最常使用的就是電子郵件,很多企業用戶也經常使用電子郵件系統。在Unix系統中,Sendmail是應用最廣的電子郵件服務器。本文將比較詳細地介紹如何建立一個Sendmail電子郵件服務器,以滿足企業的基本需求。 一、Sendmail的工作模式 ---- Sendmail是最重要的郵件傳輸代理程序。理解電子郵件的工作模式是非常重要的。一般情況下,電子郵件系統可分爲用戶代理、傳輸代理和投遞代理幾個部分。用戶代理用來接受用戶的指令,將用戶的信件傳送至信件傳輸代理,如Outlook Express和Foxmail等。而投遞代理則從信件傳輸代理取得信件傳送至最終用戶的郵箱,如Procmail。 ---- 當用戶試圖發送一封電子郵件的時候,他並不能直接將信件發送到對方的機器上,用戶代理必須試圖去尋找一個信件傳輸代理,把郵件提交給它。信件傳輸代理得到了郵件後,首先將它保存在自身的緩沖隊列中,然後,根據郵件的目標地址,信件傳輸代理程序將找到應該對這個目標地址負責的郵件傳輸代理服務器,再通過網絡將郵件傳送給它。對方的服務器接收到郵件之後,將其緩沖存儲在本地,直到電子郵件的接收者查看自己的電子信箱。 ---- 顯然,郵件傳輸是從服務器到服務器的,而且每個用戶必須擁有服務器上存儲信息的空間(稱爲信箱)才能接受郵件(發送郵件不受這個限制)。可以看到,一個郵件傳輸代理的主要工作是監視用戶代理的請求,根據電子郵件的目標地址找出對應的郵件服務器,將信件在服務器之間傳輸並且將接收到的郵件緩沖或者 提交給最終投遞程序。 有許多程序可以作爲信件傳輸代理。在Unix系統中,Sendmail是其中應用最廣泛的一個,它是一個免費軟件,可以支持數千甚至更多的用戶,而且占用的系統資源相當少。不過,Sendmail的配置十分複雜,因此,也有人使用另外的一些工具,如Qmail或Postfix等等。 ---- 當Sendmail程序得到一封待發送的郵件的時候,它需要根據目標地址確定將信件投遞給對應的服務器,這是通過DNS服務實現的。例如一封郵件的目標地址是ideal@linuxaid.com.cn,那麽Sendmail首先確定這個地址是用戶名(ideal)+機器名(linuxaid.com.cn)的格式,然後,通過查詢DNS來確定需要把信件投遞給某個服務器。 ---- DNS數據中,與電子郵件相關的是信件交換(Message eXchange,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有2個MX服務器,于是,Sendmail試圖將郵件發送給兩者之一。一般來說,排在前面的MX服務器的優先級別比較高,因此服務器將試圖連接mail.linuxaid.com.cn的25端口,試圖將信件報文轉發給它。如果成功,SMTP服務器的任務就完成了。在這以後的任務,將由mail.linuxaid.com.cn來完成。在一般情況下,MX服務器會自動把信件內容轉交給目標主機。不過,也存在這樣的情況,目標主機(比如linuxaid.com.cn)可能並不存在,或者不執行SMTP服務,而是由其MX服務器來執行信件的管理,這時候,最終的信件將保存在MX機器上,直到用戶來查看它。 ---- 如果DNS查詢無法找出對某個地址的MX記錄(通常因爲對方沒有信件交換主機),那麽Sendmail將試圖直接與來自郵件地址的主機對話並且發送郵件。例如,test@aidgroup.linuxaid.com.cn,DNS中沒有對應的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 ---- 試驗環境爲RedHat 6.2、Sendmail 8.11.4和Qpopper 4.0.3,可分別從http://www.Sendmail.org/current-release.html和http://www.eudora.com/QPopper_general/下載Sendmail和Qpopper。 三、Sendmail的安裝 ---- 當前Sendmail最新的穩定版本爲8.11.4,下載得到tar.gz格式的壓縮包以後,將其存放在/usr/src目錄下。 ---- 1.解壓軟件包 [root@email src]# tar xvfz Sendmail.8.11.4.tar.gz [root@email src]# cd Sendmail-8.11.4 ---- 2.編譯安裝 [root@email Sendmail-8.11.4]# cd Sendmail [root@email Sendmail]# sh Build ---- 3.生成配置文件 [root@email Sendmail]#cd /usr/src/Sendmail-8.11.4/cf/cf/ 一般該目錄下應該有config.mc的文件,如果沒有則創建新文件 config.mc,內容如附圖所示。 然後運行: [root@email cf]# sh Build config.cf 該命令將在該目錄下生成config.cf文件。 ---- 4.安裝Sendmail [root@email Sendmail]# sh Build install 將config.cf拷貝到/etc/mail目錄下,並改名爲Sendmail.cf: [root@email mail]#cp /usr/src/Sendmail-8.11.4/cf/cf/ config.cf /etc/mail/Sendmail.cf 四、Sendmail的配置 ---- 配置Sendmail的步驟如下。 ---- 1.在/etc/mail目錄下創建access文件,內容如下: 127.0.0.1 RELAY 202.99.11 RELAY ---- 這裏表示允許本機和202.99.11.0網段中的機器通過該郵件服務器的轉發郵件。其中202.99.11應該是您擁有的局域網絡IP網段的IP地址,只需要寫網絡部分即可。比如說您的用戶有多個網段,只需要在其中設置多個網段即可: 127.0.0.1 RELAY 202.99.11 RELAY 200.200.201 RELAY ---- 2.對access文件生成易于檢索的庫文件格式: ---- [root@email mail]# makemap hash access.db ----創建文件/etc/mail/local-host-names,其內容爲本機的擁有的域名信息,因爲在上面的DNS配置文件中該服務器有一個域名: email.linuxaid.com.cn,並且MX記錄也指向該域名,因此該服務器就有2個域名,分別爲email.linuxaid.com.cn和linuxaid.com.cn,這樣用戶才可以使用someone@linuxaid.com.cn這樣的地址收發郵件,故該文件應該包含入下內容:----linuxaid.com.cn.----mail.linuxaid.com.cn.----3.創建別名數據庫。在/etc/mail/aliases目錄下創建文件aliases,內容如下:MAILER-DAEMON: postmaster postmaster: root bin: root daemon: root nobody: root 然後生成aliases庫: [root@email mail]# newaliases 然後,就可以按如下方式啓動Sendmail了: [root@email mail]# /usr/sbin/Sendmail -bd -q20m 在第一次啓動時可能出現如下的錯誤信息: 554 5.0.0 /etc/mail/Sendmail.cf: line 41: unknown configuration line "" 554 5.0.0 /etc/mail/Sendmail.cf: line 60: unknown configuration line ""----不要緊張,只需要使用vi編輯器將這些行刪除即可,其實41和60等行都是空白行而已。刪除以後再重新啓動就應該沒有問題了。五、QPopper的安裝配置----QPopper是Unix/Linux環境下的POP3服務器,該軟件配合Sendmail使用。其主要功能是實現支持用戶通過POP3接收信件。安裝和配置Qpopper的主要步驟如下:1.創建從/usr/mail指向/var/spool/mail/的鏈接 [root@email src]# ln -s /var/spool/mail/ /usr/mail 2.解壓QPopper軟件包 [root@email src]# tar xvfz QPopper4.0.3.tar.gz [root@email src]# cd QPopper4.0.3 3.編譯安裝QPopper [root@email QPopper4.0.3]# ./configure [root@email QPopper4.0.3]# make [root@email QPopper4.0.3]# make install----安裝成功以後,QPopper將會被安裝在/usr/local/sbin/目錄下。設置inetd啓動QPopper。編輯/etc/inetd.conf,查找pop內容的一行,在其前面添加#號,然後在改行後面添加如下內容:pop-3 stream tcp nowait root /usr/local/sbin/popper QPopper -s然後查找inetd進程ID號: [root@email QPopper4.0.3]# ps ax|grep inetd 336 ? S 0:00 inetd 16872 pts/0 S 0:00 grep inetd 找到inetd進程號爲226。然後重新啓動inetd進程, 重新讀取配置文件: [root@www QPopper4.0.3]# kill -HUP 336 這時候查看系統服務端口號: [root@email QPopper4.0.3]# netstat -ln|grep 110 tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 則說明110端口已經開始正常服務。六、測試郵件服務器----接下來是測試郵件服務器的郵件發送/接收功能。注意,在測試時,不要在只對本地用戶進行測試。例如,用戶的域爲abc.com,測試時,不要只在郵件服務器上通過mail、elm等程序測試user1@abc.com用戶。因爲,此時user1是本地用戶,所以郵件服務器可以對其進行Relay。用戶應該從局域網上的另一台機器使用Outlook等郵件客戶端對服務器進行收發測試。----這種配置對于IP固定用戶沒有問題,只需要在access文件中指定其固定IP即可,而對于需要支持流動用戶,如撥號用戶的應用則不大適合,因爲如果完全打開RELAY功能可能導致郵件服務器的稱爲垃圾郵件的轉發站。----解決用戶IP不固定問題有2種方案,一種爲采用SMTP認證,即用戶發送郵件以前,郵件服務器進行用戶身份認證,通過則服務器爲其發送郵件,否則拒絕發信;第二種方案是采用動態轉發授權控制(Dynamic Relay Authorization Control,DRAC),其工作原理爲: 撥號用戶撥號上網後,首先收郵件,如果用戶能正確收郵件,則DRAC自動在access.db中加入剛才收郵件用戶的IP,並允許此IP可以發信。不過,30分鍾內,此IP不發/收郵件的話,DRAC將從access.db中刪除此IP。此種機制保證撥號用戶在沒有SMTP認證的情況下,也可以通過遠程郵件服務器發送電子郵件。,
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有