一. 郵件系統的基本原理 首先讓我們來了解一下電子郵件系統的基本原理。這裡只做一個簡單介紹,詳細的可參考有關書籍。 一般情況下,我們把電子郵件程序分解成用戶代理,傳輸代理和投遞代理。 用戶代理將用戶的信件傳送至傳輸代理(如Outlook EXPress、FoxMail等)。郵件傳輸代理負責將郵件送到目標主機(如sendmail)。而投遞代理則從信件傳輸代理取得信件傳送至最終用戶的郵箱(如procmail)。 我們來模擬一封郵件從發出到收到的過程。用戶使用Outlook Express(用戶代理或叫做郵件客戶端)向Sendmail(傳輸代理)請求發送電子郵件的服務,將郵件交給Sendmail。Sendmail根據郵件的目的地址,將郵件發送給郵件接收服務器,郵件接收服務器將郵件緩存(這也是Sendmail的工作)。接收郵件的用戶用Outlook Express向郵件接收服務器發出取信的請求,郵件接收服務器將郵件發送給用戶(這是IMAP或POP服務的工作)。至此,一封郵件從發送者的機器到達接收者的機器。 我們要建立的郵件服務器,以性能優越的RedHat Linux 7.3為操作系統。以Sendmail作郵件傳輸服務,IMAP作收信服務來構成郵件系統的基本框架。以Horde Imp作為郵件的Web客戶端。剩下的就是Horde Imp的支持軟件:以mysql存儲用戶數據,以Apache+PHP作為Web服務器。我們還使用其它的模塊來擴充本系統的功能:通訊錄模塊和修改密碼模塊。 我們將安裝下列軟件: 1. RedHat linux7.3 作用:操作系統 下載地址: http://freesoft.online.sh.cn:8888/mirrors/redhat/7.3/ 2. Sendmail-8.11.6 作用:郵件傳輸和接收 下載地址:(RedHat linux7.3自帶) 3. Imap 作用:IMAP和POP3服務器 下載地址:FTP://ftp.cac.washington.edu/imap/imap-2001a.tar.Z 4. Apache-1.3.24 作用:Web服務器 下載地址:http://freesoft.online.sh.cn:8888/mirrors/ftp.apache.org/httpd/apache_1.3.24.tar.gz 5. PHP-4.2.1 作用:CGI腳本語言 下載地址:http://www.php.net/do_download.php?download_file=php-4.2.1.tar.gz 6. PEAR-4.1.0 作用:PHP的功能擴展模塊 下載地址:ftp://ftp.horde.org/pub/horde/tarballs/pear-4.1.0.tar.gz 7. MySql 作用:數據庫,存儲郵件用戶數據和通訊錄 下載地址:http://freesoft.online.sh.cn:8888/mirrors/Database/MySQL/mysql-3.23.49.tar.gz 8. Horde-2.1 作用:Imp的支持模塊 下載地址:ftp://ftp.horde.org/pub/horde/tarballs/horde-2.1.tar.gz 補丁:ftp://ftp.horde.org/pub/horde/tarballs/patch-horde-2.0-2.1.gz 9. Imp-3.1 作用:Web mail的核心程序 下載地址:ftp://ftp.horde.org/pub/imp/tarballs/imp-3.1.tar.gz 補丁:ftp://ftp.horde.org/pub/imp/tarballs/patch-imp-3.0-3.1.gz 10.Turba-1.1 作用:提供通訊錄功能的模塊 下載地址:ftp://ftp.horde.org/pub/turba/tarballs/turba-1.1.tar.gz 補丁:ftp://ftp.horde.org/pub/turba/tarballs/patch-turba-1.0-1.1.gz 11.Poppassd-1.8.2 作用:修改密碼的服務,與Passwd for imp結合提供Web方式修改用戶密碼的功能。 下載地址:http://echelon.pl/pubs/poppassd-1.8.2.tar.gz 12.Passwd for imp 作用:提供修改密碼功能的模塊 下載地址:https://mail.ph.utexas.edu/test2/patches/public/passwd/passwd.tgz
二. 需要的網絡環境 本文假設用戶希望在園區網中架設一個電子郵件服務器,為本單位用戶提供郵件服務。該服務器擁有一個合法的IP地址202.99.11.200和一個合法的域名mail.example.com,並且example.com的DNS的MX記錄指向mail.example.com。 注:為了滿足域名需求,example.com的DNS的域數據文件應該包含以下內容: IN MX 10 mail mail IN A 202.99.11.200
三. 安裝操作系統RedHat Linux7.3 RedHat Linux7.3的安裝在很多資料中已有詳細說明。這裡只說一下分區的問題,作為一個郵件系統,主要的磁盤空間用於存儲用戶的郵件。我們把大部分軟件安裝在/usr,而用戶收到的郵件存儲在/var,用戶處理(刪除、移動等)後的郵件存儲在/home。大家要根據自己的情況確定合理的分區方案。
四. 安裝Sendmail 其實上,RedHat Linux7.3安裝完成後,Sendmail就被安裝了。如果沒有,可從RedHat Linux7.3的第一張安裝盤中用RPM包進行安裝。接下來我們只對Sendmail進行一些簡單的設置。 Sendmail的配置文件主要是/etc/sendmail.cf。這裡,我們需要修改兩個地方: 原內容: Cwlocalhost (大約在83行) 修改為: Cwexample.com 作用:定義郵件交換的域 原內容:O deamonPortoptions=Port=smtp,Addr=127.0.0.1 … (大約在260行) 修改為:(將此行注釋掉) 作用:此行的作用是只允從本機使用smtp服務,作為一個郵件系統,這顯然是不行的。 修改完成後,鍵入: #/etc/rc.d/init.d/sendmail restart 重啟sendmail,使修改生效。
五. 安裝IMAP IMAP提供IMAP及POP3兩種服務,它們的作用都是提供用戶收取信件的接口,這裡我們只使用IMAP服務。 我們假設所有要安裝的軟件都已經下載到/tmp。本文涉及的命令都以root身份執行。 1.解壓,安裝: # cd /tmp # tar zxvf imap-2001a.tar.Z # cd imap-2001a # make slx 2.將生成的可執行文件拷貝到/usr/sbin #cp imapd/imapd /usr/sbin 3.在/ect/xinetd.d下新建文件imap #vi /etc/xinetd.d/imap 內容為: # IMAP server at Port 143 service imap { disable = no socket_type = stream wait = no user = root server = /usr/sbin/imapd } 4.重啟xinetd /ect/rc.d/init.d/xinetd restart 5.測試imap服務起來沒有 #telnet localhost 143 如果看到歡迎信息,則說明IMAP服務器安裝成功。注意,先不要刪除IMAP的安裝文件,我們在後面還會用到。
六. 安裝Web mail支持――Apache、Mysql和PHP 這一步,我們要為Imp建立Web服務器及數據庫支持。 1. 安裝MySql Web mail Imp將用戶設置和通訊錄存儲在數據庫中,我們選用常用的MySql。 1.1解壓,配置編譯、安裝: # cd /tmp # tar zxvf mysql-3.23.47.tar.gz # cd mysql-3.23.47 # ./configure --prefix=/usr/local/mysql # make # make install 完成後MySql被安裝到/usr/local/mysql。 1.2建立用戶mysql及組mysql #groupadd mysql #useradd mysql #passwd mysql 1.3把MySql啟動起來: #cd /usr/local/mysql/bin # ./mysql_install_db (安裝MySql的基本數據庫) # ./safe_mysqld ?uroot & (啟動MySql並轉入後台) 1.4測試MySql # ./mysql 如果能連接數據庫,則MySql安裝完成。請注意修改MySql的root密碼,以增加安全性。其它操作請參照有關資料。 2. 安裝Apache、PHP及PEAR Horde及Imp 是以PHP編寫的,要使它能夠運行,必須提供Web服務和PHP腳本語言支持,而PEAR是PHP的功能擴展模塊,雖然PHP默認安裝時已經安裝了PEAR,但Horde需要較新的版本。 2.1解壓: # cd /tmp # tar zxvf apache-1.3.24.tar.gz # tar zxvf php-4.2.1.tar.gz 2.2預編譯Apache # cd apache-1.3.24 # ./configure 2.3配置、編譯、安裝PHP,根據imp的需要,加上相應的參數,可參照相關資料進行修改 # cd ../php-4.2.1 # ./configure --with-mysql=/usr/local/mysql --with-apache=../apache-1.3.24 --with-imap=../imap2001a --with-gettext --with-XML # make # make install 2.4配置、編譯、安裝Apache # cd ../apache-1.3.24 # ./configure -- prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a 2.5拷貝PHP配置文件到/usr/local/lib # cd ../php-4.2.1 # cp php.ini-recommended /usr/local/lib 2.6用新版本的PEAR替換舊版本 # cd /usr/local/lib # mv php php.bak # cp /tmp/ pear-4.1.0.tar.gz . # tar zxvf pear-4.1.0.tar.gz # mv pear-4.1.0 php # chown root.root ?R php 2.7針對PHP修改Apaceh配置文件/usr/local/apache/conf/http.conf 找到如下兩行: # AddType application/x-httpd-php .php # AddType application/x-httpd-php-source .phps 將注釋符去掉,這兩行的作用是定義php文檔的後綴。 還要修改默認的首頁類型,找到: DirectoryIndex index.htm 改成: DirectoryIndex index.htm index.php default.htm default.php 2.8啟動Apache # /usr/local/apache/bin/apachectl start 2.9測試Apache和PHP 刪除/usr/local/apache/htdocs/下所有文件 # cd /usr/local/apache/htdocs/ # rm ?rf * 新建文件test.p