|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-07-28, 11:22 PM | #1 |
榮譽會員
|
FreeBSD下建立MAIL服務
英特網電子郵件系統包括兩個部分:郵件用戶代理(MUA)和郵件傳輸代理(MTA)。MUA是用戶用來閱讀和撰寫郵件的程序,比如Foxmail、Outlook等;而MTA則是負責傳送郵件的服務,比如Sendmail、Qmail等。
MTA取得要傳送的電子郵件之後,首先檢查「傳送給:」或者「TO:」後面的位址。 檢視「@」後面的接收域名是否存在於域名伺服器(DNS)之中。 DNS是英特網的名稱解析資料庫,其中含有一些稱為MX(郵件交換者)的記錄,這些記錄會表明哪些主機會為這個域名傳送郵件。 在傳送電子郵件的主機上也有一些MTA正在執行,並且可以與用戶的MTA對話。 會話結束後,這兩個MTA就傳送和接收這封電子郵件,然後相互中斷連線。一旦遠處的MTA得到了這個郵件,它就會把郵件送給接收者所在地的MUA,MUA再把郵件送給接收者。 這就是一個電子郵件傳送的整個程序。本期我將給大家如何建立一個完全免費的電子郵件伺服器。其中,我們所需要用到的軟體和元件有qmail、vpopmail、ezmlm、qmailadmin、igenus、vqsignup。 1、Qmail 同sendmail相比,qmail更加簡潔,但通過addd-on,qmail的特性已同sendmail不相上下,而效能更是比sendmail高出許多!同時Qmail沒有令管理員頭痛的複雜的離譜的配置程序及安全漏洞。同其他郵件系統相比,優勢更是明顯。當然,我們也正是看中了Qmail的安全性和易用性才選項了它作為本次的主角。qmail使得分佈式郵件系統 更加容易實現。而一般來說,為了支持大規模和超大規模的用戶容量,郵件存儲方式將更多的依靠分佈式存儲進行。 2、vpopmail vpopmail是www.inter7.com推出的qmail的一個add-on元件。vpopmail的功能是解決qmail、postfix等MTA系統中的虛擬域問題。其實qmail本身就提供對虛擬郵件域的支持,但是使用起來不很方便,vpopmail使得虛擬域更易於使用和維護。而且,由於vpopmail支持Oracle、Sysbase、MySQL等大型資料庫,並且可以提供以LDAP方式對用戶資訊進行存儲。以上種種功能使得我們可以通過使用vpopmail建立和維護一個擁有幾K、幾M、幾十M甚至更多用戶的大型分佈式郵件系統。 3、ezmlm ezmlm是關於qmail的一個高效、易用的郵件列表管理器,用戶可以使用它新增自己的郵件列表。ezmlm 非常可靠,即使面臨系統突然斷電的嚴重問題,它也不會丟失郵件。ezmlm可以處理超大規模的郵件列表而不會受系統資源的限制。 4、qmailadmin qmailadmin是相容於vpopmail的一個用戶郵件系統的管理界面,使用qmailadmin將使你方便的管理郵件用戶及郵件列表。Qmailadmin可以讓您在任何地方,以WEB的方式對你郵件伺服器內的虛擬郵件域,域用戶以及郵件列表進行管理。 5、igenus iGENUS是一套免費的Webmail接頭程序。iGENUS可以在已經建立好的qmail+vpopmail+Mysql郵件系統基礎上提供Webmail服務,讓用戶可以通過IE瀏覽器在任何有網際網路接入的地方對自己的電子郵箱進行管理。 iGENUS2 是由 PHP 寫成,採用直接對 qmail 的 Maildir 進行讀寫操作,因而比 IMAP/POP 方式更快一點。 6、vqsignup vqsignup是一個關於vpopmail/qmail的處理新用戶請求的系統,它允許用戶通過Web頁面申請自己的關於vpopmail/qmail的郵件帳號。 如果希望自己的郵件系統被用戶隨意註冊的話,可以考慮使用這個元件。如果是企業內部人員使用的話,建議不允許用戶隨意註冊,以便進行管理。 一、安裝Qmail+vpopmail+ezmlm組建POP3&SMTP郵件伺服器 在FreeBSD系統安裝之後,預設的,系統採用SENDMAIL作為MTA。 我們今天的工作就是,將原來的sendmail關閉掉,更換成qmail,並用qmail建立一個穩定高效的企業郵局。 由於一個郵件伺服器內不能有兩個MTA服務,所以首先需要停用原來的SENDMAIL,然後再安裝上qmail,讓qmail來替代原來sendmail擔任的郵件傳送服務。首先編輯rc.conf這個系統配置文件,將SENDMAIL給關閉掉。 www# cd /etc www# ee rc.conf 修改sendmail為NO sendmail_enable="NO" 然後將rc.sendmail修改為其他檔案名,徹底關閉sendmail。 www# mv rc.sendmail rc.sendmail.old 到這一步結束,我們已經成功的將sendmail這個MTA服務給「卡嚓」掉了,接下來的事情就是安裝Qmail以及其元件。 由於qmail在安裝的時候需要對各種元件進行安裝,步驟非常煩瑣,所以在本文中選項了使用iceblood前輩製作的qmail安裝包來對qmail進行安裝。 qmail安裝包對qmail以及幾個必要元件進行打包,然後通過編製的一個安裝指令碼,一次性自動的將所有qmail元件安裝到系統上並啟動qmail。 經過筆者的測試,筆者使用該安裝包為自己所在的服務機構建立了企業郵局,至今為止,郵件正常工作半年,無任何異常情況,郵件伺服器基本上達到免維護的狀態。 Iceblood的這個qmail安裝包在國內很多站點上都有下載,讀者們可以自行搜尋下載,也可以通過以下位址獲取安裝包: http://down.rree.com/iceblood/Qmail_...able.tar.gz。 www# cd /home/bluewolf www# fetch http://down.rree.com/iceblood/Qmail...a.stable.tar.gz 執行完此指令後,希望將下載以上軟體包。值得一提的是,FreeBSD預設安裝的下載工具是fetch,而linux則是wget。習慣使用wget的用戶可以通過ports方式將wget安裝後使用wget進行下載。 下載完成以後,Qmail_setup-v1.55a.stable.tar.gz這個壓縮安裝包就已經在/home/bluewolf下了。 對這個壓縮包進行解壓,解壓完成後,需要對安裝指令碼進行一點調整,讓之符合本地機器的情況,然後就可以讓安裝指令碼為你把關於qmail的郵件系統安裝完成。 www# tar xvzf Qmail_setup-v1.5.4a.stable.tar.gz cd Qmail_setup ee setup # 操作系統類型為FreeBSD OS="FreeBSD" # 預設語言為中文 _LANG="CN" # 由於前邊我們已經安裝了apache,所以這裡不安裝apache _INSTALLAPACHE="NO" # 驗證需要增加qmail用戶,如果已經增加,可選項NO _ADDQMAILUSERS="YES" # 郵件系統的域名,完成後用戶郵件位址將為xxx@wolfcity.cn這種格式 _DOMAIN=wolfcity.cn # 郵箱管理員密碼 _MAILPASSWD=iambluewolf # CGI路徑 _CGIBIN=/usr/local/apache/cgi-bin # Html路徑 _HTMLPATH=/usr/local/apache/htdocs ###########--------Advanced set--------################# # 設定郵箱容量,服務機構是Byte,自行按照需要計算郵箱容量,範例為50M _MAILSIZE=50000000 # 允許域名反查IP,建議使用預設設定 _USERCRUISE=n # apache 安裝路徑 _APACHEPATH=/usr/local # 不使用系統用戶驗證 _SYSTEMPASS=n # 安裝 vpopmail _VPOPMAIL="YES" # 安裝 ezmlm _EZMLMIN="YES" # ezmlm coding _EZMLM=ch_GB # 安裝 autorespond _AUTORESPOND="YES" # 安裝 QmailAdmin _QMAILADMIN="YES" ##########--------SqWebMail set--------############# # Sqwebmail為CGI的WEBMAIL,外觀不如Igenus好看,可以不用安裝。 _WEBMAIL="NO" # webmail coding set.have "iso","gb2312","big5" and more. _MIMESET=gb2312 # webmail use SSL,"YES" or "NO" _WEBHTTPS="NO" ##########--------SQL set---------################ # 驗證使用資料庫 _SQL=y # mysql 主機 _SQLHOST=localhost # mysql 用戶 _SQLUSER=root # mysql 密碼 _SQLPASS=iambluewolf # include path _INCDIR=/usr/local/include/mysql # lib file path _LIBDIR=/usr/local/lib/mysql 修改安裝指令碼完成以後,我們就可以通過這個安裝指令碼來進行安裝了。首先賦予這個文件執行的權限,讓該檔案允許被執行。 然後直接執行該安裝指令碼,對qmail以及各元件進行安裝。 www# chmod 700 ./setup www# ./setup 由於MYSQL的版本的不同,執行後可能會出現兩種提示,一種是出現字串進度條提示安裝進度;而另外一個情況就是提示出錯。 一般出錯內容會是以下內容: Sorrt,You not have libmysqlclient.so.10 該提示則是表示系統沒有找到這個文件,那是因為MYSQL使用了新的版本,這個文件已經更名為了libmysqlclient.so.12。我們進入MYSQL的lib目錄看看是否是這個文件。 www# cd /usr/local/mysql/lib/mysql www# ls www# cd /usr/local/mysql/lib/mysql www# ls total 1154 drwxr-xr-x 2 root wheel 512 Dec 31 11:10 . drwxr-xr-x 3 root wheel 512 Dec 31 11:10 .. -rw-r--r-- 1 root wheel 11654 Dec 31 11:10 libdbug.a -rw-r--r-- 1 root wheel 34894 Dec 31 11:10 libheap.a -rw-r--r-- 1 root wheel 15018 Dec 31 11:10 libmerge.a -rw-r--r-- 1 root wheel 260826 Dec 31 11:10 libmyisam.a -rw-r--r-- 1 root wheel 26038 Dec 31 11:10 libmyisammrg.a -rwxrwx--- 1 root wheel 221190 Dec 31 11:10 libmysqlclient.a -rwxr-xr-x 1 root wheel 779 Dec 31 11:10 libmysqlclient.la lrwxr-xr-x 1 root wheel 20 Dec 31 11:10 libmysqlclient.so -> libmysqlclient.so.12 -rwxr-xr-x 1 root wheel 157171 Dec 31 11:10 libmysqlclient.so.12 -rw-r--r-- 1 root wheel 31260 Dec 31 11:10 libmystrings.a -rw-r--r-- 1 root wheel 241716 Dec 31 11:10 libmysys.a -rw-r--r-- 1 root wheel 99844 Dec 31 11:10 libnisam.a -rw-r--r-- 1 root wheel 5882 Dec 31 11:10 libvio.a 通過ls列目錄,我們可以發現目錄下只有一個libmysqlclient.so.12,而沒有libmysqlclient.so.10。現在所需要做的事情就是將安裝指令碼裡涉及到libmysqlclient.so.10修改為libmysqlclient.so.12,然後重新進行安裝。 www# cd /home/bluewolf/Qmail_setup www# ee setup 使用Ctrl+y進行搜尋,搜尋libmysqlclient.so.10,找到後將之更換為libmysqlclient.so.12,配置文件中一共有兩處,應該是分別位於143行和145行。修改完成後,儲存退出。 然後重新執行./setup進行安裝。 當系統重新回到www# 提示號後,Qmail就已經安裝完成功,並且系統已經自動的將qmail定制為了自動啟動的系統行程。 根據用戶需要,以後可以通過qmail 指令來對qmail服務進行管理。 如果需要停止qmail的話,可以使用qmail stop指令。如果需要開啟qmail服務的話,可以使用qmail start來手動啟動qmail程序。 到這裡為止,一個關於qmail的郵件伺服器就已經搭建成功了,這個郵件伺服器可以使用POP3以及SMTP的方式進行郵件收發。 2、用iGENUS提供Webmail vpopmail使用了一個pw_uid來對用戶id進行標示,使得用戶具有唯一性。但是iGENUS卻是使用的pw_id來進行標示。這就意味著兩者不能統一,想到的一個最簡單的辦法就是新增立一個address 表,用這個表來解決問題,讓我們可以使用igenus中的個人通訊錄。 不要以為難度很高,還是那句口號,跟我一起做,你就能成功。 由於mysql完全支持SQL語句,所以我們需要可以使用常用的SQL語句來建立這個表並設定相應的link。首先當然是要通過mysql的驗證,然後才能對資料庫進行操作。 www# /usr/local/mysql/bin/mysql --user=root –p Enter password: mysql> use vpopmail Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with –A Database changed mysql> create table address; ERROR 1113: A table must have at least 1 column mysql> create table address -> ( -> id int(11) unsigned NOT NULL auto_increment, -> pw_id int(5) unsigned NOT NULL default '0', -> name varchar(64) NOT NULL default '', -> email varchar(128) NOT NULL default '', -> UNIQUE KEY id (id), -> KEY pw_id (pw_id) -> ); Query OK, 0 rows affected (0.02 sec) mysql> 修改表: mysql> use vpopmail; Database changed mysql> alter table vpopmail drop primary key; Query OK, 1 row affected (0.09 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> alter table vpopmail add column pw_id int(5) NOT NULL primary key auto_increment; Query OK, 1 row affected (0.05 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> iGENUS要求APACHE的執行用戶必須為vpopmail,組必須為vchkpw。 ee /usr/local/apache/conf/httpd.conf 使用ctrl + y,找到「nobody」這個預設的apache啟動用戶,然後將USER和GROUP分別修改為vpopmail和vchkpw。 儲存退出,然後重新啟動apache讓設定生效 /usr/local/apache/bin/apachectl restart <IfModule !mpm_winnt.c> <IfModule !mpm_netware.c> # # If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. # # User/Group: The name (or #number) of the user/group to run httpd as. # . On SCO (ODT 3) use "User nouser" and "Group nogroup". # . On HPUX you may not be able to use shared memory as nobody, and the # suggested workaround is to create a user www and use that user. # NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET) # when the value of (unsigned)Group is above 60000; # don't use Group #-1 on these systems! # User vpopmail Group vchkpw </IfModule> </IfModule> 在http://www.igenus.org下載igenus最新的版本。 www# tar xvzf igenus_2_xxxxxx.tar.gz mv igenus /usr/local/apache/htdocs/ mkdir /usr/local/apache/htdocs/temp chown –R vpopmail /usr/local/apache/htdocs/temp chgrp –R vchkpw /usr/local/apache/hdocs/temp 然後編輯iGENUS的配置文件,修改配置。 ee /usr/local/apache/htdocs/igenus/config_inc.conf $CFG_BASEPATH = "/usr/local/apache/htdocs/igenus"; //設定igenus的絕對路徑 // Mysql $CFG_MYSQL_HOST = 'localhost'; //設定MYSQL連接方式 $CFG_MYSQL_USER = 'root'; //設定MYSQL用戶名 $CFG_MYSQL_PASS = 'ilovebluewolf'; //設定MYSQL用戶的密碼 $CFG_MYSQL_DB = 'vpopmail'; // 設定資料庫名 // default for Language $CFG_LANGUAGE = gb; $CFG_CHARSET[''] = "gb2312"; $CFG_CHARSET['gb'] = "gb2312"; $CFG_CHARSET['big'] = "big5"; $CFG_CHARSET['en'] = ""; // iso8859-1 設定完成後儲存退出,我們就可以通過http://www.wolfcity.cn/igenus/來對WEBMAIL進行訪問了。 到這裡QMAIL就已經安裝成功了,我們可以通過http://www.wolfcity.cn/cgi-bin/qmai...QMAIL進行管理。 |
送花文章: 3,
|