硬體環境:HPNetserverE60128M記憶體單網卡
軟體環境:
以下為引用的內容: Redhat6.2 vPOPmail4.9.4 QMail1.3 MySQL-3.23.22-beta ucspi-tcp-0.88 QMailadmin-0.38.tar.gz autorespond-1.0.0.tar.gzezmlm-idx |
本文介紹如何採用Web方式實現對郵件使用者的管理,而避免了每次添加使用者都需要登入到郵件伺服器的麻煩。Inter7開發了遵從GPL著作權的QMailadmin來實現這個功能。
要使用該軟體,郵件伺服器的上必需運行有Apache的WWW伺服器。
1、下載必需的軟體包
QMailadmin提供的功能必須在實現了虛擬域及虛擬使用者的帳號的Web方式以後,才能進行,如果你在伺服器上還沒有實現"通過vPOPmail實現QMail郵件賬戶的資料庫管理",則請閱讀該文章,並完成了虛擬域及使用者的配置以後才能開始本文的工作。要實現QMailadmin的功能,需要下載下面新的軟體包:
QMailadmin0.38.tar.gzhttp://WWW.inter7.com/QMailadmin/
autorespond-1.0.0.tar.gzhttp://WWW.vPOPmail.cx/autorespond-1.0.0.tar.gz
autorespond用來支援實現郵件的自動回複,例如您的電子郵件地址為ideal@com.cn,由於您最近出差,不能及時回複收到的郵件,則你可以使用該軟體包實現郵件的回複,當結合使用QMailadmin時,原理如下:
當使用Web管理介面指定對某個使用者(如ideal)指定郵件自動回複,則在該使用者所在的域內,建立一個檔案名稱字為.QMail-ideal.
下面我們首先討論QMail的郵件投遞機制:
QMail的投遞機製為:當接受到一個信件後,由QMail-lspawn控制郵件投遞機制;它首先察看QMail-users機制(QMail-users是一個給使用者指派-assign-地址的系統),若收信人地址沒有定義在assign檔案中(/var/QMail/assign參閱LifewithQMail的3.6QMail-users)則啟用QMail-getpw程式,然後調用QMail-local來實現本地郵件投遞。QMail-local首先試著投遞郵件到localpart@host的地址,其中localpart為本機使用者名。若沒有找到,則進一步察看/var/QMail/alias中定義的別名,若存在對應的別名則投遞郵件到別名對應的使用者目錄下,否則退回的郵件。
若按照QMail-users機制在assign中找到對應於郵件目的地址的規則,則從users/assign得到相關資訊,然後進行標準的.QMail檔案操作。一般來說,.QMail-檔案被用來完成郵件轉寄、別名或調用其他程式如ezmlm等進行處理。若沒有找到匹配,則QMail-local尋找.QMail-default檔案,這是QMail-local郵件投遞機制中最後一步。VPOPmail利用該檔案來調啟用vdelivermail程式,該程式以兩個參數被調用,第一個當前沒有作用,主要是用作向後相容的;第二個參數是用來在一個虛擬域使用者沒有被找到時的預設投遞,一般來說,預設投遞可以是將郵件投遞到某個目錄或某個郵件地址或返回無此使用者的返回信件(第二個參數若為bounce-no-mailbox,則返回無此使用者的信件;若第二個參數為/home/vPOPmail/domains/domain.com.cn/0/test,則當沒有對應於郵件投遞目的地址時,該郵件將被投遞到test@com.cn的使用者)。
從上面的機制中可以看到,通過QMailadmin為ideal使用者建立郵件自動回複時會在使用者所在的域目錄中(如:/home/vPOPmail/domains/domains.com.cn中建立.QMail-ideal檔案,當.QMail-local進入assign處理以後將會首先進行標準的.QMail檔案操作,所以將會根據該檔案進行郵件自動回複。現在我們看看.QMail-ideal的檔案內容:
|/usr/local/bin/autorespond100005/home/vPOPmail/domains/domain.com.cn/AU
TORESPONGDING/message/home/vPOPmail/domains/domain.com.cn/AUTORESPONGDING-&ideal@net.cn
其中|表示調用一個程式來處理該郵件這裡是調用autorespond來處理;10000表示允許處理信件的總時間;5表示在這段時間內的最大郵件數;
/home/vPOPmail/domains/domain.com.cn/AU
TORESPONGDING/message指示自動回複的郵件內容的訊息檔案;
/home/vPOPmail/domains/domain.com.cn/AUTORESPONGDING指定log檔案位置。其中&ideal@nte.cn表示同時將郵件轉寄給&ideal@net.cn,也可以在添加自動回複時不指定轉寄。
ezmlm-0.53.tar.gzhttp://WWW.ezmlm.org/
ezmlm-0.53是一個由DanJ.Bernstein編寫的基於QMail的郵件清單管理軟體,它具有郵寄清單管理員所應該具有的所有準系統,例如訂閱者地址清單管理、自動訊息退回處理和訊息發布和歸檔等等。
2、QMailadmin的安裝配置選項
在編譯該軟體包以前,需要根據自己的需要對軟體包進行編譯配置,下面我們就討論所有的配置選項含義如下(配置選項的使用方法為:./configure
conf_option=chosen):
若您的伺服器的cgi-bin不在標準的位置,則使用該配置選項指定正確的cgi-bin目錄的位置:
--enable-cgibindir={dir}WWW伺服器的cgi-bin目錄路徑
若您不希望郵件管理介面的HTML模版存放在/usr/local/share/QMailadmin,則使用該選項:
--with-htmllibdir={dir}QMailadminHTML模版存放目錄路徑
若您的QMail路徑不是預設的/var/QMail,則使用該選項指定正確的QMail安裝路徑:
--enable-QMaildir={dir}QMail的安裝路徑
若訪問WWW伺服器時的cgi-bin路徑不是/cgi-bin/cgi_program則需要指定該配置選項:
--enable-cgipath={/cgi-bin/QMailadmin}
若vPOP使用者不是預設的vchkpw使用者,則使用該選項指定正確的使用者名稱:
--enable-vPOPuser={vPOPuser}
若autorespond安裝路徑不是預設的/user/local/bin,則使用該選項指定路徑:
--enable-autoresponder-bin={path}
若ezmlm安裝路徑不是預設的/user/local/bin/ezmlm,則使用該選項指定路徑:
--enable-ezmlmdir={dir}
若希望限定系統的最大POP使用者數量則使用該選項指定:
--enable-maxPOPusers=unlimited-1為沒有限制,0則是關閉該功能使用該選項指定系統的最大別名(alias)數:
--enable-maxaliases=unlimited-1為沒有限制,0則是關閉該功能使用該選項指定系統的最大郵件轉寄(forward)數:
--enable-maxforwards=unlimited-1為沒有限制,0則是關閉該功能使用該選項指定系統的最大郵件自動回複(autoresponder)數:
--enable-maxautorepsonders=unlimited-1為沒有限制,0則是關閉該功能使用該選項來設定系統最大的郵件清單數量:
--enable-maxmailinglists=unlimited預設為沒有限制。
3、QMailadmin及相關軟體包的編譯
以下為引用的內容:
autorespond的編譯產生: [root@mailsrc]#tarxvfzautorespond-1.0.0.tar.gz [root@mailsrc]#[root@WWWsrc]#cdautorespond-1.0.0 [root@mailautorespond-1.0.0]#gcc-Wall-oautorespondautorespond.c [root@mailautorespond-1.0.0]#cpautorespond/usr/local/bin/ ezmlm的編譯產生: [root@mailsrc]#tarxvfzezmlm-0.53.tar.gz [root@mailsrc]#cdezmlm-0.53 [root@mailezmlm-0.53]#make [root@mailezmlm-0.53]#makeman [root@mailezmlm-0.53]#makeseup QMailadmin的編譯產生(這裡是按照前兩篇文章的預設安裝進行配置的): 1 [root@WWWQMailadmin-0.38]#./configure--enable-cgibindir=/usr/local/Apache/cgi -bin/--enable-cgipath=/cgi-bin/QMailadmin 2 [root@WWWQMailadmin-0.38]#makeclean 3 [root@WWWQMailadmin-0.38]#make 在進行make這一步時,可能會出現如下的錯誤: gcc-g-O2-oQMailadminQMailadmin.oalias.oautorespond.oforward.omailinglist.osysadmin.ouser.outi-l.oauth.otemplate.ocommand.oshow.ocgi.olimits. odotQMail.o-L/home/vPOPmail/lib-lvPOPmail-lnsl-lm-lcrypt /home/vPOPmail/lib/libvPOPmail.a(vauth.o):Infunction`vauth_open': /usr/src/vPOPmail-4.9.4/vauth.c:59:undefinedreferenceto`MySQL_init' /usr/src/vPOPmail-4.9.4/vauth.c:61:undefinedreferenceto`MySQL_real_connect' ...... 你需要使用vi修改/usr/src/QMailadmin-0.38/Makefile檔案,將: COMMONLDADD=-L/home/vPOPmail/lib-lvPOPmail 修改為: COMMONLDADD=-L/usr/local/lib/MySQL/-lMySQLclient-L/home/vPOPmail/lib-lvPOPmail 註:"/usr/local/lib/MySQL/"為你按照預設路徑安裝MySQL時的路徑,若你的系統將MySQL安裝在別的路徑,則需要在這裡指定正確的MySQL庫的安裝路徑,即尋找libMySQLclient.a的路徑 4 [root@WWWQMailadmin-0.38]#makeinstall-strip
|