文檔 :QMAIL控制文件詳解
做成日期 :2002.02.19
做成者 :姚遠方 (RainBow)
最終修正日 :2002.06.03
最終修正者 :姚遠方 (RainBow)
-----------------------------------------------------------------
目錄
<1.一些說明>
<2.修改檔案>
<3.設定方法>
[1.安裝 ]
[2.設定 ]
[3.試用 ]
<3.FAQ>
<4.備注>
-----------------------------------------------------------------
<1.一些說明>
這篇文檔沒有版權信息,可自由修改這份文檔
這份文件將永遠不會有完成的一天,請把你的問題以及成功的經驗寄給我
這可以使它成為一份更好的說明文件,并且幫助更多人很好的使用它
如果你利用這篇文檔實現了你期望的應用,請告訴大家,讓我們分享你的喜悅
尋找此文檔的最新版本或其他實用的技術文檔請到搜索引擎查詢關鍵字 "姚遠方"因為我的主頁總是搬來搬去的
如果你想發信給我詢問相關問題前請仔細再看一遍這篇文檔,因為他經過了無數人的努力到現在
如果你想發信給我詢問相關問題請表現相應的禮貌,并且我不能確定可以給你回復
瑾以此文獻給我最愛的女孩毛毛雪,雖然她可能永遠看不到這篇文檔,因為她不是這種類型的女孩
同時懷念帶我接觸這神奇的qmail的老師和上司,崗奇文彥
QMAIL的官方站點:
我的信箱: /
-----------------------------------------------------------------
<2.修改檔案>
[2002.06.03 姚遠方 RainBow]
更新
添加一些難解項目的例子
添加smtpgreeting的紀錄
寫了備注
[2002.02.19 姚遠方 RainBow]
做成
-----------------------------------------------------------------
<3.安裝設定方法>
[1.qmail全部控制文件列表(按照相關性排列) ]
qmail-inject
defaultdomain
defaulthost
idhost
plusdomain
qmail-qmqpc
qmqpservers
qmail-remote
helohost
smtproutes
timeoutconnect
timeoutremote
qmail-send
bouncefrom
bouncehost
concurrencylocal
concurrencyremote
doublebouncehost
doublebounceto
envnoathost
locals
me
percenthack
queuelifetime
virtualdomains
qmail-smtpd
badmailfrom
databytes
localiphost
rcpthosts
morercpthosts
timeoutsmtpd
smtpgreeting
-----------------------------------------------------------------
[2.各控制文件的作用 ]
2.1 qmail-inject
qmail-inject接受本地郵件消息后檢測郵件頭是否符合RFC822標準,并傳送給qmail-queue排進隊列
defaultdomain
用來向那些沒有使用正確的格式的郵件中增加郵件地址的,默認情況下,如果主機地址中沒有結束符".",qmail-inject將給主機名后添加defaultdomain的內容,如果該文件不存在,將使用me文件中的值代替.例如:defaultdomain值為linuxfane.com本地產生了一封發送給的郵件,那么qmail-inject將用linuxfane.com來補全這個后綴,變成
defaulthost
用來定義主機名,用來向地址中不含主機名的郵件補足郵件地址的。類似于defaultdomain。例如:defaulthost值為linuxfane.com那么發送給 rainbow的消息,將被qmail-inject用defaulthost的值來補足為,以便于qmail-send快速分辨是否屬于本地地址。
idhost
用來指定郵件中Message-ID:頭字段的主機名例如:idhost值為linuxfane.com那么郵件頭中如下:
Message-ID:<>
如果idhost值為rainbow.linuxfane.com 那么郵件頭中如下:
Message-ID:<>
plusdomain
用來將其值添加在任何一個以一個+號結尾的地址
_________________________________________________________________
2.2 qmail-qmqpc
qmail-qmqpc是快速郵件排隊協議(QMQP)使用的程序,QMQP是一個QMAIL專用協議,用在工作站級QMAIL服務器向中心服務器發送隊列。
qmqpservers
用來指定qmail-qmqpc使用的上級服務器
通常該功能應用很少,我認為qmail-qmqpc用法就是代替qmail-queue來直接傳給上級服務器。
_________________________________________________________________
2.3 qmail-remote
qmail-remote通過SMTP協議向遠程主機傳送郵件。
helohost
該文件用來指定qmail-remote程序與遠程郵件主機SMTP會話中的主機名。
smtproutes
用來指定到固定目的的靜態SMTP路線。
例子:smtproutes內容如下
rainbow.linuxfane.com:mail8.rainbow.jp
:fw.rainbow.linuxfane.com:8088
第一行的存在會將發給rainbow.linuxfane.com的郵件重定向到mail8.rainbow.jp主機
第二行的存在會將任何不符合之前行條件的郵件重定向到fw.rainbow.linuxfane.com的8088端口,讓郵件安全的穿越防火墻
qmmail-remote將按照smtproutes中的行序來進行處理
timeoutconnect
用來指定qmail-remote嘗試同一個遠程郵件主機建立一個SMTP會話的時間。默認值狀態下如果超出60秒沒有得到遠程郵件主機的回應,那么將斷開連接。
timeoutremote
用來指定qmail-remote在一個SMTP連接已經建立后,遠程郵件主機的每一個回應的時間數。默認值為1200秒。
_________________________________________________________________
2.4 qmail-send
qmail-send用來檢測隊列中每一個郵件的狀態,并調用相應的程序進行處理。例如一個目的為本地的郵件將會被qmail-send調用qmail-lspawn處理。
bouncefrom | bouncehost
默認情況下,退回給原始發送方的郵件的發件人地址為,如果你想修改MAILER-DAEMON這段,那么就修改bouncefrom文件吧。如果想修改中HOSTNAME這段,那么就修改bouncehost文件。例如:bouncefrom內容為SERVER-MANAGER | bouncehost文件內容為mail8.rainbow.jp那么一封因為郵件地址不存在而被退回的通知郵件的發件人將是
concurrencylocal
用來決定qmail可以同時運行的本地投遞進程的數目,默認值是10,標準安裝的qmail最大可設值是120。安裝的時候可以通過修改conf-spawn來將其變為255以下任何數目。
concurrencyremote
用來決定qmail可以同時運行的遠程投遞進程的數目,默認值是20,就是說,qmail可以在同一時間內同時發送20封郵件,標準安裝的qmail最大可設值是120。安裝的時候可以通過修改conf-spawn來將其變為255以下任何數目。
doublebouncehost | doublebounceto
這兩個控制文件類似于bouncefrom和bouncehost的關系,也是doublebouncehost指定主機名,doublebounceto指定用戶名。
他們的功能是為一個被退回兩次的郵件制定一條出路。例如:doublebouncehost內容為rainbow.linuxfane.com | doublebounceto內容為rainbow那么一個被退回2次的郵件將被發送給
沒有這兩個文件的時候,那么發送給文件中的域名
envnoathost
qmail-send用來給沒有主機名的郵件收件人制定一個主機名的,通常這個文件并沒有必要,qmail-send總是使用me文件中的域名。
locals
用來為qmail指明位于本地的郵件地址。qmail-send利用此文件來判斷收件人地址是否是一個本地地址。
例如:locals文件中寫有rainbow.linuxfane.com
那么qmail-send檢測到隊列中有發送給@rainbow.linuxfane.com的郵件的時候,就會調用qmail-lspawn來進行本地投送。
me
如果沒有me文件,那么你的qmail將拒絕執行。me文件用來指定本地郵件服務器的主機名。以上列出的許多控制文件在沒有被創建的時候,qmail都會用me中的值來代替。
percenthack
在UUCP協議中帶有%并在該文件中列出的地址將會被轉換為一個標準的DNS格式主機名。
queuelifetime
用來指定一個郵件在隊列中的最大存活時間,默認是604800秒,當一個郵件達到這個時間線后,qmail將最后一次嘗試發送這封郵件,如果依然失敗,會將其從隊列中刪除。
virtualdomains
讓qmail接受本地郵件以外,還接受該文件中指定的域或者郵件地址,就是常說的虛擬域支持。
_________________________________________________________________
2.5 qmail-smtpd
qmail-smtpd接受遠程主機的郵件并轉交給隊列處理程序qmail-queue來處理。
badmailfrom
用來指定不喜歡的發件人的郵件地址或者是域名
例如:badmailfrom中寫有
@hotmail.com
如果給該郵件主機送信時,將得到code 553,告知其是一個不受歡迎的發件人。而所有來自hotmail.com的發件人也將得到同樣的code 553。
databytes
用來指定該郵件服務器可以接受郵件的最大字節數。
例如:databytes指定為8000000
那么如果有人給該主機發送的郵件字節數超過了這個商業上默認的最大容忍限度,將得到code 552,告知其郵件大小超出了該郵件主機所能容忍的限度??植赖氖?,默認狀態下,這個文件并沒有,如果有人用你服務器上的兩個不存在的地址作為FROM/TO發一個100M的郵件 :o
localiphost
用來為使用ip來標示目的主機的郵件消息指定本地主機名的例如:rainbow.linuxfane.com的ip地址為198.17.1.2 | localiphost內容為rainbow.linuxfane.com那么一封發送給]的郵件的地址會被轉換為
rcpthosts | morercpthosts
這兩個文件用來指定qmail可以接收的除本地主機名外的其他域名他們的作用是相同的,不過因為rcpthosts中的域名不能超過50行,所以才出現了morercpthosts文件
timeoutsmtpd
用來指定qmail-smtpd等待遠程SMTP主機發送數據的時間線。默認的情況下,如果連接建立后1200秒內沒有接受到遠程SMTP主機的任何信息,那么將關閉這個連接。
smtpgreeting
用來指定SMTP連接的歡迎標志
例如:smtpgreeting值為 welcome connect to out open relay mail server - ad.rainbow.linuxfane.com那么建立一個smtp連接的時候將會看到如下信息:
Trying 198.17.x.x...
Connected to ad.rainbow.linuxfane.com.
Escape characteris ^].
220 welcome connect to out open relay mail server - ad.rainbow.linuxfane.com ESMTP
-----------------------------------------------------------------
<3.FAQ>
No data
-----------------------------------------------------------------
<4.備注>
去年NTP服務器,今年QMAIL。嘿嘿
也許是受到的傳統教育那種條理分明的影響,也許是因為不是開發出身而對sendmail邏輯性極強的配置方法望而生畏,我喜歡qmail這種各種設定都清晰明了的分別獨立設定方式。在多種可以免費得到的MTA中,模塊化的qmail我認為應該有很多人喜歡,可惜實際看起來并不是這樣;也許和相關資料和支持難尋有關吧。畢竟網絡界的前輩們都習慣了sendmail。而經驗就是網絡界的能力。像我這種書童級的既然英文識不了幾個的,如果想搞通這些就更是難上加難吧。接觸qmail大概有2年時間了,這些資料都是慢慢的收集和運用中記錄下來的,希望對那些也在用qmail做應用的朋友們當作一個速查手冊吧。
希望前輩們對其中的某些地方做一些詳細的說明,畢竟如localiphost這種久遠的郵件方式沒有經驗。希望有人可以進行完善的項目還有percenthack等項目,因為UUCP我沒有仔細研習過。還有qmqpservers這項目以及QMQP協議也沒有經驗。
我準備做qmail.linuxfane.com的站點,一方面mirror qmail.org,一方面作qmail知識經驗的傳承和匯總。
文中一定錯誤百出,請不吝賜教。