.qmail
chown $1 Maildir
chown $1 Maildir/*
chown $1 .qmail
echo "Please input $1's email password"
passwd $1
echo "$1's account has been created!!!"
else
echo "Please input the user'name!"
fi
系統管理員可以使用emuadd email_user_name (此腳本的文件名,並將此文件存放在/bin下)來傳建email_user_name的郵箱
過程四:Qmail系統的使用
當上述過程結束后重新啟動計算機。
在郵件客戶端程序中設置如下:(假如E-mail伺服器的主機名為your,name,DNS中設置的郵件交換管理的域為mail.domain,注意:通常mail.domain與.name相同,以E-mail用戶user為例)
SMTP伺服器地址:yourname
POP3伺服器地址:yourname
POP3賬號:user
POP3賬號密碼:(由管理員給你,可以自己修改)
Qmail 運行有兩種方式。tcpserver,xinet。當域名解析有問題的時候,tcpserver運行會有問題。
qmail1.0.8,ucspi-tcp-0.88
(1) tcpserver方式
# pop3 設置
/usr/local/bin/tcpserver -P -H -R 0 pop-3 /var/qmail/bin/qmail-popup /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger &
# smtpd 設置
/usr/local/bin/tcpserver -H -R -t 1 -v -P -x/etc/qmail/tcp.smtp.cdb -u 511 -g 506 smtp /var/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /bin/true | /var/qmail/bin/splogger &
(2) xinetd方式
/etc/xinetd.d/pop3-3
service pop-3
{
disable = no
socket_type = stream
wait = no
user = root
server = /var/qmail/bin/qmail-popup
nice = 10
server_args = home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir &
}
/etc/xinetd.d/smtp
service smtp
{
disable = no
socket_type = stream
wait = no
user = vpopmail
server = /var/qmail/bin/qmail-smtpd
nice = 10
server_args = /home/vpopmail/bin/vchkpw /bin/true
}
qmail是一個模塊化設計的郵件系統,每一個子功能都是由一個運行程序來實現的,而每個程序的屬性以及運行方式由一個或多個配置文件和環境變數來控制的。在qmail安裝成功和啟動以後,qmail的相關進程一直在內存中駐留,qmail會不斷掃描郵件隊列,並且把郵件投遞到正確的目的地址。
運行ps命令可以查看到qmail的相關進程:
#ps –ax | grep qmail
0:00.00 grep qmail
23282 con- I 0:00.77 qmail-send
23289 con- I 0:00.21 splogger qmail
23290 con- I 0:00.13 qmail-lspawn ./Mialdir/
23291 con- I 0:00.03 qmail-rspawn
23292 con- I 0:00.05 qmail-clean
qmail所有的運行程序都安裝在/var/qmail/bin目錄下。比較重要的運行程序如下:
1.qmail-smtpd
它的作用是接收遠端主機投遞的郵件,然後將郵件傳遞給qmail-queue進行處理。qmail-smtpd是通過SMTP協議和遠端主機驚醒通訊的。qmail-smtpd並不是常駐內存的,他需要一個外部程序來激活,本文所做的系統是使用tcpserver來激活的。Tcpserver監視著系統的IP連接請求,如果檢測到有SMTP的連接請求,tcpserver就會自動的激活qmail-smtpd,然後將IP連接的控制權交給qmail-smtpd,一旦qmail-smtpd和遠端主機建立起SMTP連接后,遠端主機就可以將郵件投遞到本地的郵件伺服器了。
2.qmail-inject
它的作用是接收本地生成並投遞的郵件,並把郵件傳遞給qmail-queue來處理。在郵件傳遞給qmail-queue之前,qmail-inject先掃面郵件的郵件頭,來查看郵件頭是否符合RFC822標準,如果不符合它將會自動的更改和修正這個郵件的郵件頭。
3.qmail-send
當一個郵件被放入郵件隊列之後,qmail-send就開始對該郵件進行處理,。它會檢查郵件隊列中的每一個郵件的狀態,對於沒有投遞過的和投遞暫時失敗的郵件,對於沒有投遞過和投遞暫時失敗的郵件,qmail-send會將目標地址是本地主機的傳遞給qmail-lspawn,目標地址是遠端主機的傳遞給qmail-rspawn,對於投遞永久失敗的郵件,qmail-send將會把該郵件傳遞給qmail-clear,讓這個程序永久刪除這個郵件。qmail-send是一個常駐內存進程程序,如果qmail-send中止,qmail的其他進程將會自動中止。
4.qmail-clean
它的作用是從郵件隊列中刪除投遞永久失敗的郵件。qmail使用多種狀態標示來標記郵件,每個郵件在每一次被處理后它的狀態表示都會被改變。如果系統當機,系統重新啟動以後,qmail-send仍然可以找到郵件隊列中上次最後一次成功處理過的郵件的位置,並且從這裡重新開始處理郵件隊列。如果由於其他原因造成qmail-send不能處理的郵件隊列,qmail-send會調用qmail-clean從郵件隊列中刪除郵件。qmail-clean也是常駐內存的進程。
5.qmail-rspawn
當qmail-send判明郵件目標地址是遠端郵件伺服器時,qmail-send就會將郵件交給qmail-rspawn,qmail-rspawn的作用是調度郵件的投遞時間和順序,然後激活qmail-remote來進行投遞。qmail-rspawn還有一個作用是決定每一個郵件的目標郵件伺服器,每次和遠端郵件伺服器的連接都會調用qmail-remote一次。qmail-rspawn也是常駐內存的進程。
6.qmail-lspawn
功能和qmail-rspawn類似,qmail-lspawn也是被qmail-send調度來投遞郵件的,不過qmail-lspawn是負責目標地址是為本地郵件伺服器的郵件。
7.qmail-remote
它的作用是通過SMTP協議將郵件投遞到遠端的用戶。郵件是通過qmail-rspawn傳遞過來的,qmail-remote每次只可以同一個遠端主機連接,不過在連接時qmail-remote可以投遞這個遠端主機上的多個接收者的郵件。投遞當中的調度是由qmail-rspamwn來負責的。
8.qmail-local
它的作用是投遞本地郵件伺服器的郵件。這個程序通常是用來檢測因為轉發命令使用不當造成的郵件循環故障。
9.qmail-queue
他處理從qmail-inject和qmail-smtpd傳遞過來的郵件,並把這些郵件傳遞到郵件隊列中,它會掃描每個郵件的發送者和接收者的地址,一般傳遞給qmail-queue的郵件的標示都是為0,如果為1時,它會認為這個郵件的發送者和接收者的地址要經過特殊格式的處理。