qmail郵件系統(四)ucspi-tcp的原理和設置
發表于:2007-05-25來源:作者:點擊數:
標簽:
(四)ucspi-tcp的原理和設置。 作者:peng 論壇ID:pengwww.china unix .net QQ:螃蟹16360544 Qmail的 開發 者danBernstein開發了ucspi-tcp( UNIX 客戶- 服務器 程序端口)包來取代inetd程序。Ucspi格式定義了一種程序來交換數據的方法,主要體現出三個優
(四)ucspi-tcp的原理和設置。
作者:peng
論壇ID:peng www.china
unix.net
QQ: 螃蟹 16360544
Qmail的
開發者dan Bernstein 開發了ucspi-tcp(
UNIX客戶-
服務器程序端口)包來取代inetd程序。Ucspi格式定義了一種程序來交換數據的方法,主要體現出三個優點:
1、 ucspi端口獨立于底層的通訊介質。
2、 ucspi允許shell腳本程序利用
網絡的互聯。
3、 ucspi程序建立了unix環境變量,這些變量定義了可以被程序和用戶使用的網絡信息。
Ucspi-tcp使用稱為tool的程序在應用程序之間建立連接。有兩種類型的ucspi tool ---客戶tool(tcpclient)和服務器tool(tcpserver)。
Ucspi-tcp的tcpserver程序就是替代unix的inetd程序的,有如下優點:
1、他能夠把來自服務器端的所有輸入和輸出都記到一個文件中。
2、他能提供訪問控制特征,拒絕或者允許來自客戶端的連接。
3、它包含了并發限制,防止使unix系統過載。
Tcpserver程序通過使用管理員配置的一個hash規則庫提供對訪問的控制。
Tcpserver 命令行的格式是:
tcpserver options host port application
host和prot參數制定了將要運行應用程序的本地服務器的主機名和端口號。Host參數可以是localhos、主機ip address、或者是主機的完整域名。Port參數可以是一個數字或者是/etc/services文件中的一個tcp端口的名字,例如:smtp。Application是連接建立后要傳輸給的應用程序。
Options參數定義了tcpserver程序的行為。有三種類型的選項:
常規選項------定義用于ucspi tool的選項。
連接選項-----處理到達的連接請求。
數據收集選項-----如何獲得在傳給應用程序的unix環境變量中使用信息。
Tcpserver連接選項(1)
---------------------------------------------------------------------------
選項 描述
-------------------------------------------------------------------------
-b n 允許n個連接請求的存儲
-B banner 在連接建立后將banner寫到網絡連接上
-c n 不接受多于n個同時連接
-d 當主機相應較慢時延遲向遠程主機發送數據
-D 從不延遲向遠程主機發送數據
-g gid 當接受連接準備完成后改變活動組ID為gid
-l 打印本地端口號到stdout
-o 在連接的分組中不改變ip選項
-u uid 當接受連接準備完成后改變活動用戶ID為uid
-O 刪除ip選項為分組尋找路徑
-U 相當于-g $GID –u UID
-x db 使用hash
數據庫db中的規則來接受或拒絕遠程客戶端的訪問
-X 當由-x選項指定的數據庫不存在時允許連接
-------------------------------------------------------------------
tcpserver程序可以使用的數據收集選項(2)
----------------------------------------------------------------
選項 描述
--------------------------------------------------------------------
-h 使用dns查找遠程主機
-H 不使用dns查找遠程主機名。你必須對端口53使用此選項
-l localhost 不使用dns查找本地服務器主機名,而使用localhost
-p 懷疑。使用反向dns 查找遠程主機ip地址,將其與主機名相比較。如果不匹配,刪除環境變量$tcpremotehost
-r 試圖從遠程主機獲得$tcpremoteinfi (默認)
-R 不試圖從遠程主機獲得$tcpremoteinfo數據。你必須為端口53和端口113使用這一選項
-t n 在n秒之后停止試圖連接到$tcpremoteinfo數據。默認26
------------------------------------------------------------------------------
有幾個unix環境變量tcpserver試圖為其接受數據。這些環境變量幫助應用程序處理有關的網絡間接信息。
Tcpserver的unix環境變量(3)
------------------------------------------------------------------------------
變量 描述
----------------------------------------------------------------------------
$PROTO 使用的協議(默認為TCP)
$TCPLOCALIP 本機的IP地址
$TCPLOCALPORT 本地TCP端口號
$TCPLOCALHOST 本地主機的DNS查詢值
$TCPREMOTEIP 遠程客戶端的IP地址
$TCPREMOTEPROT 遠程客戶端的TCP端口號
$TCPREMOTEHOST 遠程主機的DNS查詢值
$TCPREMOTEINFO 遠程客戶端的用戶名
------------------------------------------------------------------------------
當接受了一個遠程客戶端的連接,tcpserver就是圖為應用程序提供環境變量,當他不能為一個特定的變量接受信息時,tcpserver不設置變量。
Tcprules程序
tcprules程序是創建可以限制與應用程序連接的規則。是手工創建規則,來制定接受和拒絕單個地址、多個ip地址、全部網絡地址的訪問。規則在一個文本中創建,每行一條規則。文本建立后,使用cdb數據庫格式將其轉變成一個hash數據庫。這使得tcpserver程序能夠在遠程客戶向服務器請求連接時動態處理規則。
規則以這樣的格式創建:
address :action,varible
address是和到達連接的值相匹配的。此參數的幾種格式都是基于表(3)環境變量的,可以使用這些變量的組合來創建有效的地址。下面列出了tcpserver能識別的不同地址:
tcpserver規則的地址格式
-----------------------------------------------------------------------------
地址 示例
------------------------------------------------------------------------------
$tcpremoteinfo@tcpremteip peng@[192.168.3.11]
$tcpremoteinfo@=$tcpremotehost peng@96633.net
$tcpremoteip 192.168.3.11
=$tcpremotehost mail.chinaunix.net
部分$tcpremoteip 192.168
部分$tcpremotehost chinaunix.net
空 任何地址
-------------------------------------------------------------------------------
action有兩個選項:allow and deny。
除了動作以外,其他的以逗號分開的環境變量可以添加到action中,實現tcpserver在特定的遠程客戶連接請求時設置環境變量。這一特性可以實現選擇轉發等功能。
舉幾個例子吧:
---------------------------------------------------------------------------------
規則 描述
-------------------------------------------------------------------------------
192.168.0.1:deny 拒絕192.168.0.1的任何連接
192.168.3:allow 允許192.168.3.0上的客戶任何連接
192.168.4.1-11:allow 允許192.168.4.1-192.168.44.11上的客戶任何連接
:deny 拒絕任何連接
peng@chinaunix.net 允許peng@chinaunix.net 的連接
192.168.3:allow,RELAYCLIENT=” “ 接受192.168.3.0網絡上的任何連接,設置環境變量RELAYCLIENT為空字符串。
-------------------------------------------------------------------------------------
本文建立SMTP轉信規則[除本機外拒絕任何主機轉發郵件,但不限制連接。]
#vi /etc/tcp.smtp
127.0.0.1:allow,RELAYCLIENT=""
:allow
建立完文本文件,就用tcprules命令生成庫文件,格式如下:
tcprules database tmpfile
本文中是這樣的:
# /usr/local/bin/tcprules /etc/qmail/tcp.smtp.cdb /etc/qmail/tcp.smtp.tmp
這樣,就生成了/etc/qmail/tcp.smtp.cdb文件了。tcp.smtp.cd表示適用于tcp協議,專用于smtp
協議,文件是cdb數據庫格式。
下一步,就是告訴tcpserver如何應用它,本文的如下啟動smtp服務:
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -c 100 -v -p -x
/etc/qmail/tcp.smtp.cdb -u QMAILDUID -g NOFILESGID 0 smtp
/usr/local/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /usr/bin/true
| /usr/local/qmail/bin/splogger &
# /usr/local/qmail/bin/tcpserver -c 100 -v -l $_DOMAIN -U -H -R 0 pop3 /usr/local/qmail/bin/qmail-popup domain /home/vpopmail/bin/vchkpw /usr/local/qmail/bin/qmail-pop3d Maildir 2>&1 | /usr/local/qmail/bin/splogger &
相信看完以上的內容,應該能看懂本文的啟動腳本了。當這里,ucspi-tcp的tcpserver就設制完成了。
關于本文擋的聲明:
這份文檔,是我參考了大量的網友的文章和書籍而寫成的。自己經過反復安裝和
測試,均安裝成功。但由于本人水平有限,文檔難免有一些遺漏。如果你在安裝的時候發現有什么地方有錯誤的話,請去www.chinaunix.net 的mail論壇討論,我盡快回復的。
對于這片文檔,網友可以任意轉貼。但出于對作者的尊重,轉貼時請注明作者姓名。
大麻 回復于:2003-05-12 15:56:37
|
如果有時間,能夠為 qmail 寫一個集成管理環境,搞成 web 的就好了。
|
wolf1980 回復于:2003-05-12 18:37:49
|
今天才知道什么叫崇拜!
peng你太棒了!!!!!!!!!
|
jlfzx 回復于:2003-05-12 20:46:56
|
那還不如說絕望式崇拜
|
IPphone 回復于:2003-05-13 11:25:59
|
如果我在“/usr/local/bin/tcpserver -H -R -l 0 -t 1 -c 100 -v -p -x
/etc/qmail/tcp.smtp.cdb -u QMAILDUID -g NOFILESGID 0 smtp
/usr/local/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /usr/bin/true
| /usr/local/qmail/bin/splogger &”的 /usr/local/qmail/bin/qmail-smtpd 后面插入一個域名如 mydomain.com 會有什么效果阿?、??
|
peng 回復于:2003-05-13 12:27:30
|
沒有必要,我沒有添加你這個選項。
因為環境變量不指定,就會找控制文件me的信息。
|
一缽 回復于:2003-07-14 10:03:11
|
正需要,全文收藏!我為peng的無私奉獻而感動!在此深表感謝及全力支持!
|
zhangweibo 回復于:2003-07-14 19:48:55
|
請問
/usr/local/bin/tcpserver -H -R -l [color=red:6clearcase/" target="_blank" >cc21ef486]0[/color:6cc21ef486] -t 1 -c 100 [color=red:6cc21ef486]-v[/color:6cc21ef486] -p -x
/etc/qmail/tcp.smtp.cdb -u QMAILDUID -g NOFILESGID 0 smtp
/usr/local/qmail/bin/qmail-smtpd /home/vpopmail/bin/vchkpw /usr/bin/true
| /usr/local/qmail/bin/splogger &
中的0和-v這兩個參數代表什么?
|
gadfly 回復于:2003-07-14 21:09:17
|
0代表綁定所有的ip
-v應該是指verbose
|
原文轉自:http://www.kjueaiud.com
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
|