藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 網絡通訊


    

藍森林 http://www.lslnet.com 2006年7月26日 13:28

在ideal文章基礎上我的qmail安裝不完全手冊!

安裝環境:
軟件:紅旗Linux桌面版2.0、
網絡設置:
主機基本信息
主機名(hostname+domain):localhost.localdomain
配置模式:DHCP
網絡設備:eth0
核心模塊:3c59x

要安裝qmail,首先,需要一個Linux環境(也可以為Unix環境),本部分內容都在紅旗Linux桌面版2.0環境下進行完整的測試;其次,需要一個DNS系統,配置qmail的主機必須具有一個DNS可解析的正式域名;第三,系統必須安裝編譯器gcc。

要完成安裝一個高效的qmail,需要下載以下這些軟件包:

qmail
ftp://koobera.math.uic.edu/www/qmail.html

release-18.tar.gz
http://em.ca/~bruceg/qmail+patches/

ucspi-tcp
http://cr.yp.to/ucspi-tcp.html

daemontools
http://cr.yp.to/daemontools.html

checkpassword
http://pobox.com/~djb/checkpwd.html

解壓qmail包:

[root@localhost /tmp]# tar vzxf qmail-1.03.tar.gz

解開qmail包以後,在正式安裝以前應該首先閱讀qmail目錄下所有的INSTALL的文件和qmail的FAQ (www.qmail.org/qmail-manual-html/misc/FAQ.html)。

對qmail打補丁

release-18使一個很好的補丁包,裡面有若干針對Qmail的補丁。我們主要使用的是:qmail-1.03-big-dns.patches 這個補丁主要是處理有些DNS響應不完全遵從RFC標準,返回大於512字節的DNS應答包時可能出現的問題。補丁實施如下:

首先將這個補丁包解壓縮:
[root@localhost /tmp]tar vzxf release-18.tar.gz
然後進入qmail解壓縮文件所在目錄
[root@localhost /tmp]cd qmail-1.03
開始打補丁
[root@localhost /tmp/qmail-1.03]# patch -p1 < /tmp/qmail-103-big-dns.patch

創建qmail主目錄及添加必須的系統用戶

由於qmail不是以root身份運行,而且qmail是同時由多個程序處理不同的工作,如接收郵件,發送郵件,本地投遞等等,所以需要多個用戶身份:


[root@localhost /tmp]# mkdir /var/qmail
[root@localhost /tmp]# groupadd nofiles
[root@localhost /tmp]# useradd -g nofiles -d /home/nofiles nofiles
[root@localhost /tmp]# passwd nofiles
[root@localhost /tmp]# useradd -g nofiles -d /home/qmaild qmaild
[root@localhost /tmp]# passwd qmaild
[root@localhost /tmp]# useradd -g nofiles -d /home/qmaill qmaill
[root@localhost /tmp]# passwd qmaill
[root@localhost /tmp]# useradd -g nofiles -d /home/qmailp qmailp
[root@localhost /tmp]# passwd qmailp
[root@localhost /tmp]# groupadd qmail
[root@localhost /tmp]# useradd -g qmail -d /home/qmailq qmailq
[root@localhost /tmp]# passwd qmailq
[root@localhost /tmp]# useradd -g qmail -d /home/qmailr qmailr
[root@localhost /tmp]# passwd qmailr
[root@localhost /tmp]# useradd -g qmail -d /home/qmails qmails
[root@localhost /tmp]# passwd qmails

編譯

[root@localhost /tmp/qmail-1.03]# make setup check

這個命令將會完成所有的編譯工作,生成所有的二進製程序,並將其拷貝到相應的目錄,缺省qmail是安裝在/var/qmail目錄下。

三、 qmail配置

qmail編譯成功以後就應該開始對其進行配置,最簡單的實現配置的方法是使用命令config:

[root@localhost /tmp/qmail-1.03]# ./config

config程序將試圖對本地地址進行反向解析,以確定本機域名;若反向解析失敗,則配置也就失敗。可以參考INSTALL.ctl文件內容。也可以在運行config程序時指定本機域名信息:

[root@localhost /tmp/qmail-1.03]# ./config-fast your.full.host.name

下一步 需要對某些不能接收郵件的系統帳戶添加別名:

[root@mail /usr/local/src/qmail-1.03]# cd /var/qmail/alias
[root@mail /var/qmail/alias]# echo adam > .qmail-root
[root@mail /var/qmail/alias]# echo bob > .qmail-postmaster
[root@mail /var/qmail/alias]# echo bob > .qmail-mailer-daemon

這裡的bob或adam是系統管理員的普通用戶帳號。qmail在接收到一個發給用戶user1的信件,qmail-local則首先尋找名為user1的用戶,若沒有找到,qmail-local將去查詢是否有名字為user1的別名用戶,若有則發信給user1對應的真正用戶。其中別名是通過在/var/qmail/alias中定義的。例如希望為用戶tom創建一個名為info的匿名,則需要在/var/qmail/alias:

[root@mail /usr/local/src/qmail-1.03]# echo tom > /var/qmail/alias/.qmail-info

但是一個別名用戶不能和一個真實用戶重名。若重名,則別名就不會發生作用。

四、設置daemontools

首先安裝daemontools:
[root@localhost /tmp]# tar xvfz daemontools-0.70.tar.gz
[root@localhost /tmp]# cd daemontools-0.7
[root@localhost /tmp/daemontools-0.70]# make setup check
即可實現daemontools的安裝。

下面設置當系統啟動時自動啟動qmail。這裡要使用daemontool裡面的svcan工具,這些第三方的工具的使用和含義參見附錄A。按照前面的步驟,現在daemontools應該已經安裝在/usr/local/bin目錄下。

首先,需要創建daemontools服務工作目錄,該工具的作者推薦/service,這裡我們就使用缺省目錄:

[root@localhost /tmp]# mkdir /service
[root@localhost /tmp]# mkdir /var/qmail/supervise
[root@localhost /tmp]# mkdir /var/qmail/supervise/qmail-send
[root@localhost /tmp]# chmod +t /var/qmail/supervise/qmail-send
[root@localhost /tmp]# mkdir /var/qmail/supervise/qmail-send/log
[root@localhost /tmp]# mkdir /var/qmail/supervise/qmail-smtpd
[root@localhost /tmp]# chmod +t /var/qmail/supervise/qmail-smtpd
[root@localhost /tmp]# mkdir /var/qmail/supervise/qmail-smtpd/log
[root@localhost /tmp]# mkdir /var/log/qmail
[root@localhost /tmp]# mkdir /var/log/qmail/qmail-send
[root@localhost /tmp]# mkdir /var/log/qmail/qmail-smtpd
[root@localhost /tmp]# chown qmaill /var/log/qmail
[root@localhost /tmp]# chown qmaill /var/log/qmail/*

由於svscan的工作方式,我們這裡不在/service內創建真正的目錄,而是創建符號連接/var/qmail/supervise下的真正目錄。

下面創建系統啟動時自動啟動svscan的script文件,保存為/etc/rc.d/init.d/qmail。該script內容如下。

****************************************************************************
#!/bin/sh -e
# /etc/init.d/svscan : start or stop svscan.
# borrowed from http://Web.InfoAve.Net/~dsill/lwq.html
# start-qmail
# modified by Adam McKenna
case "$1" in
start)
echo -n "Starting djb services: svscan "
env - PATH="/usr/local/bin:$PATH" svscan /service &
echo $! > /var/run/svscan.pid
echo "."
;;
stop)
echo -n "Stopping djb services: svscan "
kill `cat /var/run/svscan.pid`
echo -n "services "
/usr/local/bin/svc -dx /service/*
echo -n " logging "
/usr/local/bin/svc -dx /service/*/log
echo "."
;;
restart|reload|force-reload)
$0 stop
$0 start
;;
*)
echo 'Usage: /etc/init.d/svscan {start|stop|restart}'
exit 1
esac
exit 0

*******************************************************************************

*注意:要用vi編輯器編輯該script,去掉其中可能會出現的亂碼。
然後為該script添加可執行屬性:
[root@localhost /tmp]# chmod +x /etc/rc.d/init.d/qmail

在紅旗Linux下,為了在啟動時自動運行該script,需要分別在/etc/rc.d/rc3.d和/etc/rc.d/rc5.d下創建符號鏈接如下:

[root@localhost /tmp]# ln –s /etc/rc.d/init.d/qmail /etc/rc.d/rc3.d/S98qmail
[root@localhost /tmp]# ln –s /etc/rc.d/init.d/qmail /etc/rc.d/rc5.d/S98qmail

這時候,當系統啟動時,qmail就會被自動運行。

下來,需要創建/var/qmail/supervise目錄下的內容:

[root@mail rc5.d]# cd /var/qmail/supervise/qmail-send

在該目錄下創建名為run的script內容如下:

#!/bin/bash
exec /var/qmail/rc

在目錄/var/qmail/supervise/qmail-send/log下創建run文件,內容如下:

#!/bin/bash
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 \
/var/log/qmail/qmail-send

在目錄/var/qmail/supervise/qmail-mtpd下創建run文件,內容如下:

#!/bin/sh
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -p -x /etc/tcp.smtp.cdb \
-u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

*注意!請將$QMAILDUID換為您的系統中qmaild的用戶UID,
$NOFILESGID換為您的系統中qmaild的用戶GID。

在目錄/var/qmail/supervise/qmail-smtpd/log/下創建run文件,內容如下:

#!/bin/bash
/usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t s2500000 \
/var/log/qmail/qmial-smtpd

將這幾個script的屬性均修改為可執行。

五、 防止Mail Relay


這裡就要使用ucspi-tcp軟件包,請先安裝該軟件包:
[root@localhost /tmp]tar vxzf ucspi-tcp-XXX.tar.gz
[root@localhost /tmp]cd ucspo-tcp-XXX
[root@localhost /tmp]make setup check

在這裡我們要使用該軟件包的tcpserver程序。該程序的功能類似於inetd—監聽進入的連接請求,為要啟動的服務設置各種環境變量,然後啟動指定的服務。
tcpserver的配置文件是/etc/tcp.smtp,該文件定義了是否對某個網絡設置RELAYCLIENT環境變量。例如,本地網絡是地址為192.168.10.0/24的C類地址,則tcp.smtp的內容應該設置如下:
127.0.0.1:allow,RELAYCLIENT=""
192.168.10.:allow,RELAYCLIENT=""
:allow
這幾個規則的含義是指若連接來自127.0.0.1和192.168.10則允許,並且為其設置環境變量RELAYCLIENT,否則允許其他連接,但是不設置RELAYCLIENT環境變量。這樣當從其他地方到本地的25號連接將會被允許,但是由於沒有被設置環境變量,所以其連接將會被qmail-smptd所拒絕。
但是tcopserver並不直接使用/etc/tcp.smtp文件,而是需要先將該文件轉化為cbd文件:

[root@localhost /tmp]$ # /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.temp < /etc/tcp.smtp

若本地有多個網絡,則需要這些網絡都出現在/etc/tcp.smtp文件中。
這樣就實現了允許本地客戶relay郵件,而防止relay被濫用。


六、 Maildir vs. mbox 和 .qmail文件

mbox是Unix系統下標準的郵箱格式,在這種格式下,多個郵件存儲在同一個文件中,每個郵件消息都以」From」開頭的行開始。

而qmail提供了一種新的選擇?/FONT>Maildir格式,這種郵箱格式將每個郵件消息存儲在用戶的$HOME/Maildir/目錄下的單個文件中,其具有可靠,安全的特點,起唯一的缺點就是每個郵件存儲在單個文件中,從而很多的小文件浪費了磁盤空間。

在啟動qmail時需要指示qmail使用哪一種郵箱格式,這樣當qmail收到一個郵件以後就會存儲在相應的目錄中。這裡推薦使用Maildir格式。

為了讓用戶使用Maildir格式的信箱,就需要在該用戶登陸後,在其主目錄下創建郵件目錄:

[LOGINNAME@localhost /]$ /var/qmail/bin/maildirmake ./Maildir

這裡應該注意的是,~/Maildir目錄權限必須屬於所在用戶,如果該目錄是管理員以root身份創建,則需要使用命令:

chown -R $userid.$usergid /home/$LOGIN/Maildir

修改該目錄屬於該用戶,這裡$userid和$usergid則分別是用戶的用戶ID號和用戶組ID號。Maildir目錄下將會有三個子目錄new、cur和tmp,其中new目錄存放新接收到的信件,cur保存的已經看過了的郵件,tmp存放的是正在投遞的郵件,等投遞結束以後郵件就會被拷貝到new目錄下。

而每個用戶的主目錄下都應該有一個」.qmail」文件,該文件控制該用戶的郵件應該如何被處理。當遇到一個Maildir指示,則qmail將消息按照Maidldir的格式傳遞到指定的目錄,如:

./Maildir/

要注意的是,每個用戶的必須有.qmail文件,並且必須指定mailbox或者Maildir格式中的一種。這樣qmail才能順利的投遞信件,所以為了讓用戶使用Maildir格式的信箱,必須在用戶的主目錄下運行下面的命令(例如對於用戶qmaill) :

[qmaill@localhost qmaill/]$echo ./Maildir/ >/home/qmaill/.qmail

當遇到一個轉發指示則將該郵件轉發給指定的信箱,如:


七、啟動qmail

再啟動qmail之前,應先刪除sendmail 。

停止sendmail服務:
[root@localhost /tmp]# killall -TERM sendmail (Linux)
接著用qmail的sendmail liberaby代替原來的sendmail。
  [root@localhost /tmp]# mv /usr/lib/sendmail /usr/lib/sendmail.old
  [root@localhost /tmp]# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
  [root@localhost /tmp]# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
  [root@localhost /tmp]# ln -s /var/qmail/sbin/sendmail /usr/sbin/sendmail
將sendmail從啟動程序中刪除:
把/etc/rc.d/init.d 目錄下的sendmail文件刪除即可。
[root@localhost /tmp]# rm /etc/rc.d/init.d/sendmail

如果決定使用Maildir格式以後,就需要編輯/var/qmail/rc文件,內容如下:

#!/bin/sh

exec env - PATH="/var/qmail/bin:$PATH"
qmail-start ./Maildir/ splogger qmail

需要設置rc文件為可執行:

[root@localhost /tmp]# chmod +x /var/qmail/rc

之後就需要在/service下創建到/var/qmail/supervise下各個目錄的的符號鏈接

[root@localhost /tmp]# ln -s /var/qmail/supervise/* /service/

然後在命令行鍵入如下命令:

[root@localhost /tmp]# /etc/rc.d/init.d/qmail start

在一分鐘以內,svscan將啟動qmail,可以通過:

[root@localhost /tmp]# ps axu |grep qmail

可以查看到qmail進程已經啟動。

八、 測試qmail

1、啟動qmail以後,查看qmail的log文件/var/log/maillog,在log文件內應該有:

qmail: status: local 0/10 remote 0/20

的內容。

2、然後運行」ps ax」應該至少可以看到這幾個和qmail相關的進程:

以qmails用戶身份運行的qmail-send進程、
以root身份運行的qmail-lspawn進程、
以qmailr身份運行的qmail-rspawn進程
以qmailq身份運行的qmail-clean進程。
如果系統中沒有這些進程,則需要回頭查看上面的哪一個步驟出現了錯誤。

3、local-local測試,試著給自己發送一封郵件:
[qmaill@localhost qmaill/]$ echo to: qmaill| /var/qmail/bin/qmail-inject

在/home/qmaill/Maildir/new中馬上出現一封信,在記錄文件/var/log/maillog中應該出現下面的內容:

qmail: new msg 53
qmail: info msg 53: bytes 246 from qp 20345 uid 666
qmail: starting delivery 1: msg 53 to local me@domain
qmail: status: local 1/10 remote 0/20
qmail: delivery 1: success: did_1+0+0/
qmail: status: local 0/10 remote 0/20
qmail: end msg 53

的記錄信息。

4、local-eorrot測試,發送一封郵件給一個不存在的用戶
[qmaill@localhost qmaill/]$ echo to: nonexistent | /var/qmail/bin/qmail-inject

在記錄文件/var/log/maillog中應該出現下面的內容:

qmail: new msg 53
qmail: info msg 53: bytes 246 from qp 20351 uid 666
qmail: starting delivery 2: msg 53 to local nonexistent@localhost.localdomain
qmail: status: local 1/10 remote 0/20
qmail: delivery 2: failure: No_such_address.__#5.1.1_/
qmail: status: local 0/10 remote 0/20
qmail: bounce msg 53 qp 20357
qmail: end msg 53
qmail: new msg 54
qmail: info msg 54: bytes 743 from <> qp 20357 uid 666
qmail: starting delivery 3: msg 54 to local qmaill@localhost.localdomain
qmail: status: local 1/10 remote 0/20
qmail: delivery 3: success: did_1+0+0/
qmail: status: local 0/10 remote 0/20
qmail: end msg 54

同時,在你的信箱裡應該有一個被返回的信件。

5、local-remote測試:發送一封空信件到遠程郵件帳戶:

[qmaill@localhost qmaill/]$ echo to: naturalboy@eyou.com | /var/qmail/bin/qmail-inject

在記錄文件/var/log/maillog中應該出現下面的內容:

qmail: new msg 53
qmail: info msg 53: bytes 246 from qp 20372 uid 666
qmail: starting delivery 4: msg 53 to remote naturalboy@eyou.com
qmail: status: local 0/10 remote 1/20
qmail: delivery 4: success: 1.2.3.4_accepted_message./...
qmail: status: local 0/10 remote 0/20
qmail: end msg 53

九、設置pop郵件

在本例中,我使用vpopmail來驗證用戶的登陸信息,並實現對郵件賬戶的管理。為了簡單起見,我沒有使用mysql存儲數據庫用戶資料,而是把他們放在了傳統的passwd文件裡。

1、安裝vpopmail

[root@localhost /tmp]# tar vxzf vpopmail-4.9.4.tar.gz
2、添加必需的組和用戶:

[root@localhost /tmp]# groupadd vchkpw
[root@localhost /tmp]# useradd -g vchkpw vpopmail

若希望將vpopmail用戶的主目錄存放在其他目錄,則需要使用下面的命令:

[root@localhost /tmp]# useradd -g vchkpw -d /path/to/where/you/want vpopmail
3、創建~vpopmail/etc/tcp.smtp文件

若你具有192.168.0的一個c類地址,則在該文件中應該包含內容:

127.0.0.:allow,RELAYCLIENT=""
192.168.0.:allow,RELAYCLIENT=""
:allow

若具有多個C地址,則需要在文件中分別包含對應各個C的地址的條目。

4、配置編譯vpopmail

vpopmail的詳細配置選項

--enable-roaming-users=n|y 當pop3認證通過以後,是否打開對該用戶的郵件轉發(mail relay),缺省是關閉的。若設置該方法為yes,則當某個用戶通過了pop3認證,則將其ip地址 加入到允許通過該郵件服務器的進行郵件relay的列表中。一個名為clearopensmtp的 cronjob程序可以用來實現在一段時間以後從允許轉發郵件地址列表中將該ip地址去除。這 個選項要求以-x /etc/tcp.smtp.cdb選項來使用tcpserver運行smtp服務器。

--enable-hardquota=#|n 設置或打開磁盤限額,NOQUOTA為沒有限制為沒有郵件賬號設置磁 盤限額,缺省為50M,這裡=後面的數字單位為字節,也就是為了限制磁盤限額為10M就需 要使用配置參數:--enable-hardquota=10000000。若磁盤限額超出,則將拒絕接收該用戶 的新郵件,並返回一封拒絕信息信件,其中的信息可以定制。

--enable-default-domain=name 設定缺省域名推薦將所有的域都設置為虛擬域,並且挑選 一個作為缺省域。對於缺省域的用戶,其通過接收郵件時,只需要在用戶名中設置其郵件 用戶名即可,而對於其他非缺省用戶,則需要將用戶名設置為 %的 格式才能通過pop3收取信件。

--enable-ip-alias-domains=y|n 允許通過反向解析來察看虛擬域.缺省情況下,每個域使 用基於虛擬域的名字,也就是用戶必需在pop用戶名中提供相應的域信息,也就是 %。當然可以是用enable-default-domain配置選項來覆蓋該要求。
Vpopmail同樣支持基於IP地址的虛擬域,若該選項打開則用戶不需要在pop用戶名中提供%,則vpopmai自動對用戶連接的服務器的IP地址進行反向解析,若解析得到一個域名,則vpopmail使用該名字作為域,例如:IP w.x.y.z 對應於域名test.com,用戶設置pop服務器的IP地址為w.x.y.z,然後連pop服務器,vpopmail1得到連接請求,並察看連接的服務器端的IP,然後進行反向DNS查詢,得到test.com的域名,用戶使用joe作為pop用戶名,vpopmail使用test.com。

--enable-relay-clear-minutes=360 允許漫遊用戶通過郵件服務器的轉發郵件的時間段。若--enable-roamin-users=y,則該選項設置clearopensmtp應該保持該IP在允許列表中的 時間,缺省是3小時。

有關Mysql的選項

--enable-mysql=n|y 使用mysql,缺省是no允許通過將賬號存放在mysql數據庫中來認證
用戶。注意:在配置和編譯以前需要修改文件vmysql.h,正確的設置mysql服務器的 name/ip, mysql用戶和mysql用戶密碼。該用戶必需要擁有創建數據庫和在其中創建表
格的權限。

--enable-sqlincdir= sql頭文件的目錄,缺省為/usr/local/mysql.

--enable-sqllibdir=/usr/lib/mysql庫文件libmysqlclient.a的目錄,缺省為/usr/lib/mysql

--enable-sqllibs=mysqlclient mysql庫名,缺省為libmysqlclient.a.

--enable-large-site=n|y 缺省值為no,使用該選項是為了適應大量用戶的情況。缺省的 vpopmail將所有的域信息存放在同一個table-vpopmail中,這對於一般情況下具有很好的 效率。但是對於大量用戶的系統,則需要將該選項設置為yes。這時候,vpoomail將為每個 域創建一個table。最主要的區別是域名不存放在數據庫中,因為表格包含了域名。對於大 於500,000+的用戶,這可以節省大量的磁盤空間。但是對於有大量虛擬域的系統可能會影 響mysql的性能。

有關Vpasswd/cdb的選項

--enable-ucspi-dir=dir 編譯好ucspi包的目錄位置使用該目錄來設定ucspi-tcp軟件包的 路徑,缺省為../ucspi-tcp-0.84。vpopmail需要使用該目錄中的頭文件和兩個.a文件。

有關Logging的選項

--enable-logging=e|y|n 打開(y)或關閉(n)使用syslog進行log,或e僅僅log錯誤信息。
設置log級別,缺省僅僅記錄pop認證錯誤信息。

--enable-log-name=vpopmail 設置log名

有關User/group的選項

--enable-vpopuser=vpopmail若使用其他的用戶來安裝該軟件包,則在該選項中指定組名。

--enable-vpopgroup=vchkpw若使用其他的組來安裝該軟件包,則在該選項中指定組名。

--enable-admin-email=email-address 系統管理員的電子郵件地址。

有關Directory and file location地選項

--enable-tcpserver-file=/etc/tcp.smtp tcpserver -x使用的郵件轉發配置文件的存放目 錄,缺省為/etc

--enable-qmaildir=dir qmail的安裝目錄指定,缺省為/var/qmail。

--enable-tcprules-prog=/usr/local/bin/tcprules tcprules程序的安裝位置,缺省為/usr/local/bin

--enable-apop-file=/etc/apop-secrets apop密鑰存放目錄

其它選項

--enable-apop=y|n 允許或禁止apop認證,缺省是yes

--enable-passwd=y|n 允許或禁止/etc/passwd(或shadow)認證。覆蓋自動配置,缺省的配 置程序將自動檢測系統是使用passwd或shadow密碼,通過設置該選項為no,可以禁止所有的/etc/passwd賬號認證。

我使用的配置命令及選項如下:

[root@localhost vpopmail-4.9.4]# ./configure --enable-roaming-users=y --enable-hardquota =1000000 --enable-default-domain=naturalboy.com --enable-mysql=n --enable-ucspi-dir =../ucspi-tcp-0.88 --enable-passwd=y

其含義是:
允許通過pop3認證的遠程用戶使用smtp來轉發郵件;
每個用戶的目錄空間是10M;
默認域名是:naturalboy.com ;
不使用mysql數據庫;
使用passwd密碼認證。


[root@localhost vpopmail-4.9.4]# make
[root@localhost vpopmail-4.9.4]# make install-strip

設置crontab,運行:

[root@localhost vpopmail-4.9.4]# crontab -e

添加如下內容(注意星號間的空格):

40 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null

5、添加虛擬域

[root@localhost vpopmail-4.9.4]# cd /home/vpopmail/bin
[root@localhost vpopmail-4.9.4]# ./vadddomain naturalboy.com
[root@localhost vpopmail-4.9.4]# ./vadddomain test.com
該命令將會修改一下幾個qmail的配置文件:

/var/qmail/control/locals
/var/qmail/control/rcpthosts
/var/qmail/control/morercpthosts (if rcpthosts > than 50 lines)
/var/qmail/control/virtualdomains
/var/qmail/users/assign
/var/qmail/users/cdb

同時,將創建以下目錄或文件:

~vpopmail/domains/naturalboy.com
~vpopmail/domains/test.com
~vpopmail/domains/naturalboy.com/postmaster/Maildir...
~vpopmail/domains/test.com/posttmaster/Maildir ...
~vpopmail/domains/naturalboy.com/vpasswd
~vpopmail/domains/test.com/vpasswd
~vpopmail/domains/naturalboy.com/vpasswd.cdb
~vpopmail/domains/test.com/vpasswd.cdb

6、添加新的郵件POP用戶

[root@localhost vpopmail-4.9.4]# /home/vpopmail/bin/vadduser newuser@naturalboy.com
[root@localhost vpopmail-4.9.4]# /home/vpopmail/bin/vadduser newuser1@test.com

在這種情況下,用戶郵件域需要被指定相應的域,這兩個用戶分別被添加到
~vpopmail/domains/naturalboy.com
~vpopmail/domains/test.com

7、刪除郵件pop用戶

[root@localhost vpopmail-4.9.4]# /home/vpopmail/bin/vdeluser newuser@test.com

8、修改一個POP用戶密碼:

[root@localhost vpopmail-4.9.4]# /home/vpopmail/bin/vpasswd newuser@test.com

9、結合vchkpw與qmail-pop3d

當使用vpopmail時,則需要將在/var/qmail/supervice目錄下建立qmail-pop3d目錄,並在此目錄下建立的運行腳本run:

#!/bin/sh
exec /usr/local/bin/tcpserver -v -R 0 pop-3 /var/qmail/bin/qmail-popup \
naturalboy.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 |

/var/qmail/bin/splogger pop3d


至此,重新啟動Linux後,可以使用outlook,foxmail等軟件從遠程通過該郵件服務器收發Email了。

十、試驗用例

1、新建用戶:

[root@localhost vpopmail-4.9.4]# /home/vpopmail/bin/vadduser aaa@naturalboy.com
[root@localhost vpopmail-4.9.4]# /home/vpopmail/bin/vadduser newuser1@test.com

2、在一台運行win98的機器上,對outlook express設置如下:

新建郵件賬號:
電子郵件地址:aaa@naturalboy.com
smtp服務器:192.xx.xxx.111
pop3服務器:192.xx.xxx.111
用戶名:aaa

電子郵件地址:user1@test.com
smtp服務器:192.xx.xxx.111
pop3服務器:192.xx.xxx.111
用戶名:user1@test.com(因為默認域是naturalboy.com,所以這裡要加上域的標識。)


然後,可以通過這些用戶在outlook下往以下發送郵件:
user1@test.com
aaa@naturalboy.com
starney@oyou.com
而且可以使用outlook接受到aaa@naturalboy.com以及user1@test.com中的郵件。


\\\___///
@ @
@
( )

Re: 在ideal文章基礎上我的qmail安裝不完全手冊!

這麼好的文章竟然只有著幾個人看?
我kao!不公平!!!!!!!!


\\\___///
@ @
@
( )

Re: 在ideal文章基礎上我的qmail安裝不完全手冊!

1,qmail
ftp://koobera.math.uic.edu/www/qmail.html

鏈接明顯錯誤,想了我半天

2,
要安裝qmail,首先,需要一個Linux環境(也可以為Unix環境),本部分內容都在紅旗Linux桌面版2.0環境下進行完整的測試;其次,需要一個DNS系統,配置qmail的主機必須具有一個DNS可解析的正式域名;第三,系統必須安裝編譯器gcc。

這段看著眼熟,好像是……,是不是紅旗不太和一般的linux不一樣啊?

3,
passwd nofiles ??
這是什麼意思啊??設置密碼嗎?不會吧??
你看看你的/etc/shadow你就知道了,這些東東不是用來登錄的。
看樣子你的home目錄都有改變,未來可能的錯誤還不知道……

4,
;;
*)
echo 'Usage: /etc/init.d/svscan {start|stop|restart}'
exit 1
esac
exit 0
這段是至少是少了兩個; 不過的確是ideal原原本本的程序的拷貝

5,
qmail-start ./Maildir/ splogger qmail
這樣寫有可能引起出錯
如果這樣寫就好得多了
qmail-start "./Maildir"

6,
我沒有使用mysql存儲數據庫用戶資料,而是把他們放在了傳統的passwd文件裡
有關Mysql的選項

這又何必??

7,
--enable-hardquota =1000000

這個好像是1兆

8,

大蝦,你表現魚太強了些吧??



Re: 在ideal文章基礎上我的qmail安裝不完全手冊!

我還是先說 一下我貼這個貼子的目的吧。我是費了很大力氣才把qmail裝到貼子中的那個地步的,中間因為網絡上各種文檔的錯誤著實走了不少彎路。與此同時,我在論壇裡看到了一篇不知道到底原作者是誰的有關Qmail安裝的文章,那篇文章雖然寫得很好,但裡面錯誤眾多,而且還不太詳細,所以我就想把我的安裝經歷也拿出來和大家共享一番。但是因為我的安裝過程的的確確是一步一步照著ideal的文章做的,所以寫了這樣一個標題,而且在貼子中,我盡量把其中我在安裝是發現的錯誤,和想到的解決辦法寫了出來,希望給看的人一些幫助和方便。
但是,我貼這個貼子時,才接觸qmail不到三個星期,而且,我的linux知識是絕絕對對的不足的,所以其中不免有很多錯的地方,所以我也很高興有人能夠給我指出來,大家互相幫助,共同進步嘛。
因此呢,我很感謝jerryzhou回復的貼子,同時我針對他提出的幾個問題一一給於回答及更正。

1,qmail
ftp://koobera.math.uic.edu/www/qmail.html

鏈接明顯錯誤,想了我半天

RE:這個地址我是照抄ideal文章的,沒有去驗證。看到你的貼子後,我訪問過這個地址,的確,上面只有一些有關qmail及其相關軟件的介紹,並沒有實際的下載連接,現更正地址如下:
http://www.linuxbyte.net/showsoftd.php?ID=183
請大家原諒!

2,
要安裝qmail,首先,需要一個Linux環境(也可以為Unix環境),本部分內容都在紅旗Linux桌面版2.0環境下進行完整的測試;
這段看著眼熟,好像是……,是不是紅旗不太和一般的linux不一樣啊?

RE:jerryzhou啊,這點你可是冤枉我了,我之所以說是在紅旗linux下安裝成功原因很簡單——我覺得在介紹自己的安裝經驗時應該把所用機器的基本軟硬件環境說清楚,可惜我的硬件……唉!真的是難以啟齒。 :)

3,
passwd nofiles ??
這是什麼意思啊??設置密碼嗎?不會吧??
你看看你的/etc/shadow你就知道了,這些東東不是用來登錄的。
看樣子你的home目錄都有改變,未來可能的錯誤還不知道……

RE:
這一點的確是我當時所知有限了,我為了測試方便,懶了一下,沒有新增用戶,只是給這幾個用戶都修改了密碼,以便能通過他們登陸,測試一下安裝的效果。既然jerryzhou已經指出這樣不好了,那希望大家不要學我了,不好意思,請原諒。

4,
;;
*)
echo 'Usage: /etc/init.d/svscan {start|stop|restart}'
exit 1
esac
exit 0
這段是至少是少了兩個; 不過的確是ideal原原本本的程序的拷貝

RE:
這個地方的exit 1後面好像不用加兩個「;」號吧,前面每一種情況結束後加「;;」的作用就像c語言裡的case語句中的break一樣,最後一句已經是結束了,不需要了吧?我參考過/etc/rc.d/init.d目錄底下的其他的腳本,好像都是這個格式的。我說的也不一定對,回去之後我會再好好看看書的,咱們以後再研究,好吧?

5,
qmail-start ./Maildir/ splogger qmail
這樣寫有可能引起出錯
如果這樣寫就好得多了
qmail-start "./Maildir"

RE:
這個我真的不懂了,能將將這樣寫法具體的好處嘛?還有,原先的寫法會引起什麼錯誤呢?

6,
我沒有使用mysql存儲數據庫用戶資料,而是把他們放在了傳統的passwd文件裡
有關Mysql的選項

這又何必??

RE:
說錯了,口誤,不是使用了傳統的passwd文件,而是允許該文件中的用戶遠程連接收發信。
對於不使用mysql我是這樣認為的:剛一開始入門的時候應本著越簡單越好的原則,使用mysql可能會因為配置的問題產生很多不變的地方。我在不使用mysql的情況下,在機器上創建了一萬用戶,用另外兩台機器模擬三百用戶同時收信的情景(局域網內),時間是一分鐘十一秒,估計實際三百用戶同時收信的過程應該會更快一些。
效率還可以吧?是不是可以湊合一下,等以後熟悉了在換成mysql(用如此一個大功能的數據庫只做用戶名和密碼存放,浪費吧?)也可以的。

7,
--enable-hardquota =1000000

這個好像是1兆

RE:
你真是一個細心的人,這的確是一個筆誤,排版時造成的,不好意思。謝謝你了。

8,

大蝦,你表現魚太強了些吧??

RE:
的確很差,絕對的菜鳥一隻,希望以後能多多交流,再次感謝你的貼子。

\\\___///
@ @
@
( )

Re: 在ideal文章基礎上我的qmail安裝不完全手冊!

哈哈哈,你真得很誠心啊,
好啊好啊
以後一起探討
加「 」的做法是life with qmail裡面提到的,我改過不加的
當時系統立刻出飽,所以這裡建議大家用引號,也是在不知道確切情況下的小心為上

;;標示一個選擇的結尾,最後一個也是一個選擇,?
我也是看了life with qmail以後覺得有理才做的
按照tcpserver的方式啟動的確有很多的好處,不過功能太強大了,一點點不對,都可能造成系統的錯亂,我也是受苦頗多才這樣警示大家的啊

還有,就是對於數據庫,我覺得一般的應用根本永不上這個,不過對於自己開發php,cgi,perl等等的東西有數據庫方便的多了,也安全,對於郵件的存儲,一些大型系統都是用ldap作的,數據庫的在針對於郵件系統的情況下,運作方式在某些方面還比不上它。

我也覺得壞貼誤人,其實我學這個,裝這個,也至比你多了一個星期而已,看到了人家的東西就想拿來做,走了很多彎路。。。
學習無長幼,大家一起交流吧。



Re: 在ideal文章基礎上我的qmail安裝不完全手冊!

就是以後不要再cao
人家不回文章的了,
呵呵





Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com