摘要:本文在“通過vpopmail實現qmail郵件賬戶的數據庫管理”一文的基礎上討論如何通過qmailadmin實現對存放在數據庫中的虛擬域郵件用戶賬號進行web管理。通過qmailadmin管理員可以通過web方式實現添加刪除用戶及修改用戶密碼等郵件用戶的管理,而用戶可以自行修改自己的密碼。 硬件環境:HP Netserver E60 128M內存 單網卡 軟件環境: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.gz ezmlm-idx 前言 1、mysql安裝 2、vpopmail安裝過程 3、vpopmail的詳細配置選項 4、Qmail和虛擬域 5、筆者安裝過程 前言 在閱讀了“通過vpopmail實現qmail郵件賬戶的數據庫管理”一文以後,大家下一個關心的問題就是如何采用web方式實現對郵件用戶的管理,而避免了每次添加用戶都需要登錄到郵件服務器的麻煩。Inter7開發了遵從GPL版權的qmailadmin來實現這個功能。 要使用該軟件,郵件服務器的上必需運行有apache的www服務器。 1、下載必需的軟件包 qmailadmin提供的功能必須在實現了虛擬域及虛擬用戶的賬號的web方式以後,才能進行,如果你在服務器上還沒有實現“通過vpopmail實現qmail郵件賬戶的數據庫管理”,則請閱讀該文章,並完成了虛擬域及用戶的配置以後才能開始本文的工作。要實現qmailadmin的功能,需要下載下面新的軟件包: qmailadmin0.38.tar.gz http://www.inter7.com/qmailadmin/ autorespond-1.0.0.tar.gz http://www.vpopmail.cx/autorespond-1.0.0.tar.gz autorespond用來支持實現郵件的自動回復,例如您的電子郵件地址為
[email protected],由於您最近出差,不能及時回復收到的郵件,則你可以使用該軟件包實現郵件的回復,當結合使用qmailadmin時,原理如下: 當使用web管理界面指定對某個用戶(如ideal)指定郵件自動回復,則在該用戶所在的域內,創建一個文件名字為.qmail-ideal. 下面我們首先討論qmail的郵件投遞機制: qmail的投遞機制為:當接受到一個信件後,由qmail-lspawn控制郵件投遞機制;它首先察看qmail-users機制(qmail-users是一個給用戶指派-assign-地址的系統),若收信人地址沒有定義在assign文件中(/var/qmail/assign參閱Life with qmail 的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,則當沒有對應於郵件投遞目的地址時,該郵件將被投遞到
[email protected]的用戶)。 從上面的機制中可以看到,通過qmailadmin為ideal用戶創建郵件自動回復時會在用戶所在的域目錄中(如:/home/vpopmail/domains/domains.com.cn中創建.qmail-ideal文件,當.qmail-local進入assign處理以後將會首先進行標准的.qmail文件操作,所以將會根據該文件進行郵件自動回復。現在我們看看.qmail-ideal的文件內容: /usr/local/bin/autorespond 10000 5 /home/vpopmail/domains/domain.com.cn/AU TORESPONGDING/message /home/vpopmail/domains/domain.com.cn/AUTORESPONGDING
[email protected] 其中表示調用一個程序來處理該郵件這裡是調用autorespond來處理;10000表示允許處理信件的總時間;5表示在這段時間內的最大郵件數;/home/vpopmail/domains/domain.com.cn/AU TORESPONGDING/message指示自動回復的郵件內容的消息文件;/home/vpopmail/domains/domain.com.cn/AUTORESPONGDING指定log文件位置。其中
[email protected]表示同時將郵件轉發給
[email protected],也可以在添加自動回復時不指定轉發。 ezmlm-0.53.tar.gz http://www.ezmlm.org/ ezmlm-0.53是一個由Dan J. 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} qmailadmin HTML 模版存放目錄路徑 若您的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@mail src]# tar xvfz autorespond-1.0.0.tar.gz [root@mail src]# [root@www src]# cd autorespond-1.0.0 [root@mail autorespond-1.0.0]# gcc -Wall -o autorespond autorespond.c [root@mail autorespond-1.0.0]# cp autorespond /usr/local/bin/ ezmlm的編譯生成: [root@mail src]# tar xvfz ezmlm-0.53.tar.gz [root@mail src]# cd ezmlm-0.53 [root@mail ezmlm-0.53]# make [root@mail ezmlm-0.53]# make man [root@mail ezmlm-0.53]# make seup qmailadmin的編譯生成(這裡是按照前兩篇文章的缺省安裝進行配置的): 1 [root@www qmailadmin-0.38]# ./configure --enable-cgibindir=/usr/local/apache/cgi -bin/ --enable-cgipath=/cgi-bin/qmailadmin 2 [root@www qmailadmin-0.38]# make clean 3 [root@www qmailadmin-0.38]# make 在進行make這一步時,可能會出現如下的錯誤, gcc -g -O2 -o qmailadmin qmailadmin.o alias.o autorespond.o forward.o mailing list.o sysadmin.o user.o util.o auth.o template.o command.o show.o cgi.o limits. o dotqmail.o -L/home/vpopmail/lib -lvpopmail -lnsl -lm -lcrypt /home/vpopmail/lib/libvpopmail.a(vauth.o): In function `vauth_open': /usr/src/vpopmail-4.9.4/vauth.c:59: undefined reference to `mysql_init' /usr/src/vpopmail-4.9.4/vauth.c:61: undefined reference to `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時的