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

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

  • <strong id="5koa6"></strong>
  • Postfix + Cyrus-SASL + Cyrus-IMAPD + PgSQL HOWTO

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    [附言] 該附言或許不成其為什么許可證,但還是希望您尊重作者的愿望。 如果您發現有什么錯誤,請及時通知我,我將盡快作出修改。如果您在網上轉載,那將是免費,但希望您附上本附言,并且注明出處的鏈接。如果您要把它用印刷物形式出版,請通過www.cnfug.org

    [附言]
    該附言或許不成其為什么許可證,但還是希望您尊重作者的愿望。
    如果您發現有什么錯誤,請及時通知我,我將盡快作出修改。如果您在網上轉載,那將是免費,但希望您附上本附言,并且注明出處的鏈接。如果您要把它用印刷物形式出版,請通過www.cnfug.org跟本人接洽。
    您在以本文作為根據配置電腦的時候,若出現任何故障,后果自負,與本作者無關。


    目標
    本文的目的是在于說明如何在FreeBSD的環境下面搭建一個郵件系統。這個郵件系統支持虛擬用戶,提供IMAP服務,可以成為構成WebMail系統的基礎。
    支持IMAP服務的Webmail有著名的IMP和SquirrelMail等等。
    本文雖然是用PgSQL作為后臺數據庫,但是仍然對使用MySQL,LDAP數據庫的作為后臺的類似郵件系統有啟發作用。如果仔細閱讀本文,一定會有所收貨的。使用其他后臺數據庫的話,要修改的地方有兩處:pam服務和main.cf的virtual_mailbox_maps項。
    本文所有的調試是在FreeBSD-4.8 release上通過的,也對FreeBSD-5作了額外的說明,主要的差異是集中在pam服務的配置不同而已,希望能有所幫助。
    Linux的用戶也能可以參考本文的配置,您只需要留意路徑和pam服務的配置。pam服務配置跟FreeBSD-5類似。

    零、閱讀準備

    1)閱讀本文需要一定基礎,我假設你已經清楚以下的東西:
    郵件系統的基本原理,郵件系統的相關協議的作用,例如smtp,pop3,imap。

    2)什么是SASL:
    SASL的英文全稱是Simple Authentication and Security Layer,簡單驗證和安全層。
    SMTP協議并沒有提供用戶驗證功能,很容易匿名中轉郵件。即使限制了可以轉發的網段,也不安全。他的定義是: a method for adding authentication support to connection-based protocols,為基于連接的協議提供認證功能。

    3)軟件的角色:

    Postfix:充當MTA,就是smtpd,作為郵件轉發用。

    Cyrus-SASL:分成兩部分
    a)Cyrus項目的SASL lib,Postfix使用SASL需要用到的lib。
    b)Cyrus-saslauthd,一個SASL的驗證后臺程序。

    Cyrus-IMAPD:
    提供IMAP服務,提供郵件讀取和管理郵箱的作用。

    cyradm:
    這個不是一個獨立的軟件,安裝Cyrus-IMAP的時候會自動安裝上去的。它的作用是創建和管理郵箱。

    PgSQL:后臺數據庫,存放用戶的密碼等等。

    總的來講,Postfix充當轉送郵件的服務;Cyrus-IMAP充當提供郵件讀取、管理的服務;SASL使用驗證服務。

    4、Cyrus-SASL和Cyrus-IMAPD不是同一樣東西
    就跟Microsoft Visual C++和Microsoft Office不是同一個東西一樣

    一、本系統的工作原理和結構
    注意是本系統。實現一個郵件系統有很多種方式,即使你用的都是跟本系統完全一樣的軟件,也有不同的實現方式。
    本系統的郵件主機是:
    f4.room
    f4是因為fbsd-4,域為room:是因為電腦放在房間里頭。您要看不順眼,就把本文的f4.room都換成example.com算了。

    I、Postfix的擔任的工作的部分:
    1、這個是投遞郵件的時候的用戶驗證的部分:

    |------------------------| | Postfix | | | | |-------------| | |-| Cy-SASL-lib |--------| | | |-------------| | | |--------------| | Cy-saslauthd | |--------------| | | |-------| | PAM | |-------| | | |-----------------------| | PostgreSQL | |-----------------------|
    圖例說明:
    當有程序訪問smtp服務(TCP端口25)的時候,Postfix會給出220 ESMTP的回應,提示是要驗證的smtp服務。密碼和用戶名提交給Postfix以后,Postfix會把密碼和用戶名通過調用Cy-SASL lib提交給一個后臺驗證程序:Cy-saslauthd。Cy-saslauthd會調用PAM模塊進行驗證。PAM模塊會調用名為smtp的PAM服務名進行驗證。在本系統中,PAM服務是調用pam_pgsql訪問PostgreSQL進行驗證的。然后結果再Return回去。

    2、郵件轉送:
    分成三種情況:
    1)如果郵件是給非本域用戶的,例如是21cn.com的,馬上就轉發過去了。

    2)如果郵件是給本域虛擬用戶的,Postfix要訪問PgSQL,來看看本域是否有這個虛擬用戶。有就轉發到他的虛擬郵箱,沒有就把郵件defered掉。(什么是defered?待查,估計是砍掉的意思)
    Postfix <--> PostgreSQL

    3)如果是本域的本地用戶,就轉發到本地用戶的郵箱,就是/var/mail/username那里。
    Postfix <--> /etc/passwd

    II、Cyrus-IMAP擔任的工作部分
    1、郵件的獲?。?BR>Cyrus-IMAPD有他自己的一套管理郵件的方法,不是用傳統的unix郵箱方法(/var/mail/username),但是郵箱的讀取十分高效。當Postfix獲得目的地是本域的虛擬用戶的時候,我們設置Postfix內置支持的一個功能:調用Cyrus-IMAP的一個程序,將郵件“拿”過來放到由Cyrus-IMAPD管理的郵箱里頭。

    2、用戶的驗證。
    當用戶要讀取自己的郵件的時候,要通過IMAP服務。本系統配置了Cyrus-IMAP通過Cyrus-saslauthd進行驗證。其原理大概同Postfix驗證用戶的原理一樣。

    |------------------------| | Cyrus-IMAPD | | | | |-------------| | |-| Cy-SASL-lib |--------| | | |-------------| | | |--------------| | Cy-saslauthd | |--------------| | | |-------| | PAM | |-------| | | |-----------------------| | PostgreSQL | |-----------------------|


    III、PgSQL存儲的數據
    現在把PgSQL存儲的數據再總結一下。
    PgSQL主要存儲兩部分數據:
    1)虛擬用戶的用戶名和密碼。這部分是提供驗證用,從saslauthd通過PAM服務訪問。

    ID | usr | pass | expired | newtok ----+-------+-------+---------+-------- 1 | test1 | pass1 | f | f 2 | test2 | pass2 | f | f


    2)用戶的地址和對應的信箱。這部分是Postfix訪問的,從中獲得郵件地址和郵箱的映射關系,然后根據郵件地址轉發到相應的郵箱。

    ID | addr | box ----+----------------+------------ 1 | test1@f4.room | test1 2 | test2@f4.room | test2 在本系統中,實際上是兩個表,為了方便大家看,就將他拆分成兩個表。
    其實使用兩個表來存儲這些數據的做法從安全角度是可取的。我們比如說我們分別建立兩個數據庫用戶:postfix和saslauthd,他們只是對自己可以訪問的表有讀權限。另外我們再建立一個視圖,把兩個表關聯起來,超級用戶對這個視圖有讀取使用的權限,來進行管理。
    本文為了方便調試,只是建立一個表。

    二、安裝軟件
    請務必使用port來安裝,因為這不僅影響到你編譯成功率,更影響到以后的配置。因為你直接下載源碼包編譯安裝的路徑可能不一樣

    0.PostgreSQL
    路徑/usr/ports/databases/postgresql7
    make install
    注意,這個路徑下的是pgsql 7.3

    1.Postfix:
    路徑 /usr/ports/mail/postfix
    make install,然后會出現一個編譯選項的菜單,選擇Cyrus-SASL2和PgSQL的支持。PgSQL的支持可能有兩種,一個是7.3,一個是7.2,請根據的PgSQL服務器選擇。

    2.Cyrus-SASL2:
    由于上面安裝Postfix的時候,選擇了Cyrus-SASL2支持,編譯Postfix的時候,會自動下載Cyrus-SASL2進行編譯安裝,所以Cyrus-SASL2不需要安裝。

    3. Cyrus-sasl-saslauthd
    路徑:/usr/ports/security/cyrus-sasl2-saslauthd/
    make install

    4. Cyrus-imapd-2.1.14
    路徑:/usr/ports/mail/cyrus-imapd2/
    make install

    三、配置軟件
    零、配置PgSQL和pam服務
    1、建立一個叫做mail的數據庫。
    2、建立一個叫做mailuser的表。
    結構如下 ID | usr | pass | expired | newtok | addr | box ----+-------+-------+---------+--------+---------------+-------- 1 | test1 | pass1 | f | f | test1@f4.room | test1 2 | test2 | pass2 | f | f | test2@f4.room | test2 3、在PgSQL里頭建立一個數據庫用戶mail,密碼mail
    4、創建一個/etc/pam_pgsql.conf

    #host = 127.0.0.1
    database = mail
    user = mail
    password = mail
    table = mailuser
    user_column = usr
    pwd_column = pass
    expired_column = expired
    newtok_column = newtok

    原文轉自: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>