歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> 如何構建Sendmail服務器問題深入分析

如何構建Sendmail服務器問題深入分析

日期:2017/3/6 15:49:01   编辑:關於Unix
在Internet出現WWW服務之前,電子郵件系統曾經是使用最為廣泛的一種應用服務。電子郵件為人們的溝通帶來了方便,眨眼間,通過Internet傳送著各種各樣的祝福和消息。它為人們的溝通增加了許多方便。 1 電子郵件系統的工作原理 電子郵件系統的運作方式與其它的
  在Internet出現WWW服務之前,電子郵件系統曾經是使用最為廣泛的一種應用服務。電子郵件為人們的溝通帶來了方便,眨眼間,通過Internet傳送著各種各樣的祝福和消息。它為人們的溝通增加了許多方便。
  
  1 電子郵件系統的工作原理
  電子郵件系統的運作方式與其它的網絡應用有著根本上的不同。在其它的絕大多數的網絡應用中,網絡協議直接負責將數據發送到目的地。而在電子郵件系統中,發送者並不等待發送工作完成,而是僅僅將要發送的內容發送出去。
  例如:文件傳輸協議(FTP)就象打電話一樣,實時地接通對話雙方,如果一方暫時沒有應答,則通話就會失敗。而電子郵件系統則不同,發送方將要發送的內容通過自己的電子郵局將信件發給接收方的電子郵局。如果接收方的電子郵局暫時繁忙,那麼發送方的電子郵局就會暫存信件,直到可以發送。而當接收方未上網時,接收方的電子郵局就暫存信件,直到接收方去取。可以這麼說,電子郵件系統就象是在Internet上實現了傳統郵局的功能,而且是更加快捷方便地實現。
  現在作為一個普通的用戶想要連接到Internet,那麼就必須找一家Internet服務商(ISP)提供連接服務。在中國,最大的ISP就是中國電信。ISP在提供連接的同時,還會提供一個電子郵局,分配一個電子信箱給用戶使用。而且在Internet上還有許多免費的電子郵局提供電子郵件服務。
  值得一提的是,電子郵件總是有一個空間大小的敘述,這是什麼意思呢?也就是電子郵局給每個用戶所提供的暫存信件的空間。當然,越大越好嘛。
  
  2 電子郵件的標准
  電子郵件的協議標准是TCP/IP協議族的一部分。它規定了電子郵件的格式和在郵局間交換電子郵件的協議。
  每個電子郵件都分為兩部分:郵件頭和郵件內容。TCP/IP對電子郵件的郵件頭的格式作了確切的規定,而將郵件內容的格式讓用戶自定義。在郵件頭中最重要的兩個組成部分就是發送者和接收者的電子郵件地址。電子郵件地址的格式如下:
  用戶名@電子郵局域名 例:[email protected]
  而電子郵件的傳輸協議(也就是在郵局間交換電子郵件的協議)主要有SMTP(簡單郵件傳輸協議)、POP(電子郵局協議),以及現在新興的IMAP(互聯網郵件應用協議)。
  
  3 電子郵件系統的組成
  整個電子郵件應用系統由兩大部分構成:
  1. 電子郵局系統;
  2. 電子郵件發送、接收系統。
  電子郵件發送、接收系統則象遍及千家萬戶的郵箱,發送者和接收者通過它將郵件從電腦中發送和接收郵件。這個部分是一個運行在電腦中的客戶端程序,最常用的有Microsoft的Outlook Express,Netscape,The Bat,Foxmail,方正飛揚等。用戶可以根據自己的喜愛來選擇不同的程序。它們從根本上說,實現的功能是一樣的。
  電子郵局行使著像傳統郵局的功能,它在發送者和接收者之間起著一個橋梁作用。它是運行在電子郵局服務器上的一個服務器端程序。最常用的有Microsoft的IIS和sendmail等。而在這裡我們介紹的就是功能強大的、免費的,基於類UNIX操作系統的電子郵件服務端程序sendmail的最基本的配置與使用方法。
  
  4 安裝sendmail
  如果你在安裝LINUX的時候,選擇了E-MAIL服務,sendmail就已經安裝在LINUX系統中了,並且已經作了一些最基本的設置。
  如果你在安裝時沒有選擇,或者你需要升級sendmail就可以使用以下方法進行。
  1. 通過RPM包來安裝或升級(僅用於RedHat LINUX):
  1) 首先在光盤上或Internet上找到下面幾個RPM包:
  sendmail-8.9.3-10.i386.rpm sendmail可執行文件
  sendmail-cf-8.9.3-10.i386.rpm sendmail.cf生成器
  sendmail-doc-8.9.3-10.i386.rpm sendmail.cf文檔
  2) 然後使用以下命令安裝或升級:
  安裝: rpm –ivh sendmail-8.9.3-10.i386.rpm
  升級: rpm –Uvh sendmail-8.9.3-10.i386.rpm
  2. 用源代碼編譯關安裝:
  1) 首先取得最新版本的源代碼:http://www.sendmail.org/
  ftp://ftp.dlut.edu.cn/pub/unix/mail/sendmail/
  2) 展開源代碼:
  cd /hometar –zxvf sendmail-8.9.3.tar.gz
  這樣就會在/home目錄下建立一個sendmail-8.9.3目錄:
  /home/sendmail-8.9.3/README
  /home/sendmail-8.9.3/src
  /home/sendmail-8.9.3/cf
  /home/sendmail-8.9.3/doc
  3) 編譯:由於sendmail自己帶了一個編譯程序Build,所以不用make命令:
  cd /home/sendmail-8.9.3/src
  ./Build
  install
  
  5 用sendmail構建一個E-Mail服務器
  當我們在系統中安裝了sendmail後我們就可以使用這台機成為我們的電子郵局了。因為sendmail的功能強大,配置繁瑣。所以我們在下面的介紹中舉一個架設供一個公司使用的Internet E-Mail服務器為例進行講述。
  以下的設置也能運用在較大的電子郵局應用中,但是隨著的用戶數的增多,將會使得整個郵局的性能有所下降,這時也就相應地要進行更加深入的配置工作。考慮到本書是一個入門級的讀物,我們就不進行深入的討論。有興趣的讀者可以參看相應的書籍。
  總而言之,我希望在本章節的描述後,能使大家夠迅速地使用LINUX架設一個小型的實用的電子郵局。下面我們就開始吧!
  
  5.1 設置sendmail作為守衛進程(daemon)啟動
  如果你在安裝LINUX的時候,選擇了E-Mail服務。那麼,sendmail就已經成為一個守衛進程啟動了。所謂的守衛進程,指的是它就象DOS操作系統中的常駐內存程序一樣,運行後,它們在後台偵聽,當需要它進行服務的時候,它就完成特定的功能和服務。在LINUX系統中有許許多多的服務就是以守衛進程的方式啟動著的。
  你可以使用以下命令來確認sendmail是否已經啟動。
  ps –A|grep sendmail
  如果啟動了sendmail,那麼這個命令將顯示出它的相關信息。否則將沒有任何提示地回到命令行。如果沒有啟動,那麼你只發好在/etc/rc.d/rc.net文件中加上以下幾行代碼。
  if [-f /usr/lib/sendmail ];
  then(cd /usr/spool/mqueue;rm –f if *)
  /usr/lib/sendmail-bd-qlh;echo –n ‘sendmail’>/dev/console
  fi
  
  5.2 設置sendmail.cf
  sendmail.cf是sendmail的配置文件。一般說來在安裝了LINUX系統之後,它將自動生成一個適合本系統使用的sendmail.cf文件,而且在sendmail.8.9.3/cf目錄下還有許多適應各種系統的sendmail.cf的文件樣本,根據文件名也可以判斷出它們所適用的場合。可以選擇它們替換原有的sendmail.cf文件。也就是將它們復制到/etc目錄中去,覆蓋掉原來的sendmail.cf文件。
  而且sendmail還提供了一個sendmail.cf的生成器m4,它通過一系列的人機對話來生成一個用戶定制的sendmail.cf文件。具體的用法可以閱讀m4的幫助文檔。在此就不再詳述。
  
  5.3 開啟SMTP、POP端口
  在Internet中,我們采用POP端口提供接收郵件服務,采用SMTP端口提供發送郵件服務。也就是說,客戶端的郵件發送、接收系統在要發送郵件的時候,就與電子郵局的SMTP端口連接;當要接收郵件的時候,就與電子郵局的POP端口連接。
  而一般在所有的類UNIX系統中,SMTP端口默認是打開的,而POP端口在默認狀態下是關閉的,我們必須將它打開。
  1. 用root(超級權限)登錄到服務器上;
  2. 編輯文件/etc/inetd.conf;
  3. 找到描述POP端口的語句;
  #pop2 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop2d
  #pop3 stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.pop3d
  前面的#號代表這一行是注釋語句,不生效。
  POP2是早期的端口協議版本,我們現在一般使用的是POP3.
  4. 將POP3的描述語句那一行的注釋號“#”去掉。確保POP2的那一行是注釋語句。
  5. 如果沒有找到,就手工補上這一行;(另外,我們還可以驗證一下是否存在SMTP端口的描述語句);
  6. 存盤後退出。
  7. 運行inetd命令,使得設置生效。
  8. 用以下命令驗證,看POP3端口是否打開(生效)。
  netstat –a |grep pop
  如果打開的話,可以看到以下信息:
  tcp 0 0 *:pop3 *:* LISTEN
  
  5.4 為新用戶開E-Mail帳號
  其實,在LINUX中,要為一個新的用戶開E-Mail帳號是十分簡單的。只要在LINUX系統中新增一個用戶就可以了。那麼這個用戶帳號和密碼就是E-Mail的帳號和密碼。
  例如,我為一個新用戶test開一個E-Mail帳號。就用以下命令:
  adduser testpasswd test
  這樣,這個新用戶的E-Mail地址就是:
  [email protected]
  密碼當然就是帳號的密碼了。
  
  5.5 為E-Mail帳號設置別名
  如果,有一些用戶想使用多個E-Mail地址,是不是就要為他開多個帳號呢?如果是這樣就會增加對帳號管理的難度。所以LINUX給我們提供了一種方法:設置別名。
  比如說,一個用戶叫“王大明”,它想擁有以下的幾個E-Mail地址:
  [email protected]
  [email protected]
  [email protected]
  我們就通過以下步驟來實現這樣的別名設置。
  1. 以root登錄服務器;
  2. 新增一個賬號wdm;
  3. 編輯文件/etc/aliases;
  4. 加上兩行:
  wangdm:wdm
  daming:wdm
  5. 存盤退出;
  6. 執行命令:
  newaliases
  這樣,發給王大明的郵件可以使用三個郵件地址,而王大明只需要使用一個E-Mail帳號:[email protected]就可以接收所有寄給以上三個E-Mail郵件地址的電子郵件。
  
  5.6 郵件限額
  當一個E-Mail服務器為許多人提供E-Mail服務的時候,無限量的電子郵件將很容易塞滿服務器的硬盤,造成很大的負載。如果你的服務器不想為用戶提供無限空間的E-Mail暫存空間,那麼你就可以使用“郵件限額”來給用戶一個有限的暫存空間。
  其實,它是利用磁盤限額功能來實現的。電子郵件的暫存空間是在/var/spool/mail目錄下,只要通過磁盤限額設定每一個用戶在這個目錄下能使用的最大空間就可以了。

Copyright © Linux教程網 All Rights Reserved