• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 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.chinaunix.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永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>