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

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

  • <strong id="5koa6"></strong>
  • vpopmail實現qmail賬戶的數據庫管理

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    摘要:本文在“qmail使用系統用戶作為郵件賬戶的安裝與配置”一文的基礎上討論如何通過vpopmail實現qmail郵件賬戶與系統賬戶分離,郵件賬戶存放在 數據庫 文件中的 解決方案 。 硬件環境:HP Netserver E60 128M內存 單網卡 軟件環境:redhat6.2 vpopmail4.9

    摘要:本文在“qmail使用系統用戶作為郵件賬戶的安裝與配置”一文的基礎上討論如何通過vpopmail實現qmail郵件賬戶與系統賬戶分離,郵件賬戶存放在數據庫文件中的解決方案。


    硬件環境:HP Netserver E60 128M內存 單網卡


    軟件環境:redhat6.2 vpopmail4.9.4 qmail1.3 Mysql-3.23.22-beta ucspi-tcp-0.88


    前言

    1、mysql安裝

    2、vpopmail安裝過程

    3、vpopmail的詳細配置選項

    4、Qmail和虛擬域

    5、筆者安裝過程


    前言

    在一臺郵件服務器的上實現多個域的郵件系統是qmail用戶非常關心的問題之一,為了解決這個問題,Inter7開發了遵從GPL版權的vpopmail(vchkpw)來使用戶方便地在一臺qmail郵件服務器上實現郵件虛擬域和非系統賬號。其具有一下特點:


    所有的qmail配置及數據文件都提供了具有詳細說明的修改的命令。


    僅僅占用一個系統賬號,所有的相關進程運行在單個UID/GID之下。

    支持基于named和IP的虛擬域。

    安全的使用NFS之上。通過使用三級平衡樹填充技術實現動態的為十個到一千萬用戶創建郵件目錄。

    根據真實世界的管理需求提供了可配置的記錄功能。

    支持Oracle, Sybase, Mysql, LDAP, /etc/passwd, /etc/shadow和缺省的cdb用戶認證信息存儲方式。

    直接傳遞數據到Maildir,來和qmail-pop3d, .qmail文件或其他任何Maildir程序。

    不需要為虛擬域提供很多.qmail文件,每個域在vpopmail用戶主目錄下擁有自己的目錄,每個域有獨立的密碼文件。

    詳細說明的命令程序能被用在腳本文件及遠程管理。

    所有的vpopmail特性的C庫都有詳細的說明文檔。

    而且提供了下面的軟件包來增強qmail+vpopmail的特性:


    QmailAdmin 基于web的vpopmail管理工具。

    vqsignup一個基于vpopmail管理工具的cgi程序,其允許用戶自己申請email賬號。

    Courier IMAP IMAP服務器。

    SqWebMail 基于web的email客戶程序。

    1、Mysql的安裝;

    筆者使用的rpm包方式的源代碼,因此首先要解開rpm包:


    [root@radiusd ideal]# rpm -ivh MySQL-3.23.22-1.src.rpm

    MySQL ##################################################


    然后:


    [root@radiusd ideal]# cd /usr/src/redhat/SOURCES/

    [root@radiusd SOURCES]# ls -al

    total 6432

    drwxr-xr-x 2 root root 4096 Oct 29 14:07 .

    drwxr-xr-x 7 root root 4096 Oct 30 2000 ..

    -rw-r--r-- 1 root root 6560696 Jul 30 11:23 mysql-3.23.22-beta.tar.gz

    -rw-rw-r-- 1 root root 3082 Jul 30 11:23 mysql.gif

     

    [root@radiusd SOURCES]# tar xvgz mysql-3.23.22-beta.tar.gz


    解壓源代碼包,就會在當前目錄下生成mysql-3.23.22-beta的子目錄,其中包含了mysql的源代碼,然后使用下面的命令進行安裝:


    ./configure

    make

    make install

    scripts/mysql_install_db


    就實現了Mysql數據庫服務器安裝,其中啟動mysql服務器的命令為:

    /usr/local/mysql/bin/safe_mysqld &


    現在就實現了mysql數據庫服務器的安裝和運行,下面我們應當設立基本的用戶權限信息。缺省的,mysql擁有一個缺省的具有對數據庫完全訪問可控制的用戶,名字為root,所以首先應當為該用戶添加訪問密碼:


    [root@radiusd src]# mysql -u root mysql

    Reading table information for completion of table and column names

    You can turn off this feature to get a quicker startup with -A


    Welcome to the MySQL monitor. Commands end with ; or \g.

    Your MySQL connection id is 183 to server version: 3.23.22-beta


    Type help for help.


    mysql>

    這樣就進入了mysql服務器的客戶程序,然后發出sql語句命令:


    UPDATE user SET Password = PASSWORD (new_password) WHERE user = root;

    FLUSH PRIVILEGES;


    這里的new_password是為mysql的root用戶設立的密碼。但是一般推薦再創建一個權限和root完全相同的用戶,命令如下:


    INSERT INTO user

    VALUES (host,user,passwd,

    y,y,y,y,y,y,y,y,y,y,y,y,y,y);


    一般,mysql與icradius服務器都是運行在同一個服務器上,這時候,host為localhost,若你的icradius服務器運行在另外一臺服務器上,則你需要在這里設定host為你的icradius服務器的名字。用戶為你設定的用戶名,密碼為該用戶的密碼。


    當前位置 > 技術首頁 > 操作系統 > Unix/Linux

     

    通過vpopmail實現qmail郵件賬戶的數據庫管理

    時間:2001/01/06 13:43 Linux伊甸園

     

     

    2、vpopmail的安裝過程

    1、解壓軟件包:


    [root@www src]# tar xvfz vpopmail-4.9.4.tar.gz


    2、添加必需的組和用戶:


    [root@www vpopmail-4.9.4]# /usr/sbin/groupadd vchkpw

    [root@www vpopmail-4.9.4]# /usr/sbin/useradd -g vchkpw vpopmail


    若希望將vpopmail用戶的主目錄存放在其他目錄,則需要使用下面的命令:


    [root@www vpopmail-4.9.4]# /usr/sbin/useradd -g vchkpw -d /path/to/where/you/want vpopmail

    3、創建~vpopmail/etc/tcp.smtp文件


    若你具有192.168.0的一個c類地址,則在該文件中應該包含內容:


    127.0.0.:allow,RELAYCLIENT=""

    10.1.1.:allow,RELAYCLIENT=""

    :allow


    若具有多個C地址,則需要在文件中分別包含對應各個C的地址的條目。


    4、配置編譯vpopmail:


    [root@www vpopmail-4.9.4]# ./configure

    [root@www vpopmail-4.9.4]# make

    [root@www vpopmail-4.9.4]# make install-strip


    5、支持漫游用戶


    若希望支持漫游用戶通過郵件服務器的轉發郵件(mail relay),則需要使用如下配置選項:


    [root@www vpopmail-4.9.4]# ./configure --enable-roaming-users=y


    設置crontab,運行:


    [root@www etc]# crontab -e


    添加如下內容:

    40 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null


    支持漫游用戶的原理是當某個漫游用戶使用pop3取信以后,則在某斷時間內允許該地址通過郵件服務器的轉發信件。


    6、添加虛擬域


    [root@www /]# cd /home/vpopmail/bin

    [root@www /]# ./vadddomain test.com

    或:

    [root@www /]# ./vadddomain test.com password-for-postmaster


    該命令將會修改一下幾個qmail的配置文件:


    /var/qmail/control/locals

    /var/qmail/control/rcpthosts

    /var/qmail/control/morercpthosts (if rcpthosts > than 50 lines)

    /var/qmail/control/virtualdomains

    /var/qmail/users/assign

    /var/qmail/users/cdb


    同時,將創建以下目錄或文件:


    ~vpopmail/domains/test.com

    ~vpopmail/domains/test.com/postmaster/Maildir ...

    ~vpopmail/domains/test.com/vpasswd

    ~vpopmail/domains/test.com/vpasswd.cdb


    然后需要重新啟動qmail進程來更新配置:/etc/rc.d/init.d/qmailstartup restart


    6、添加新的郵件POP用戶


    [root@www /]# cd /home/vpopmail/bin/

    [root@www bin/]#./vadduser

    or

    [root@www bin/]]#./vadduser


    在這種情況下,用戶郵件域需要被指定test.com,這個用戶被添加到

    ~vpopmail/domains/test.com。


    7、刪除郵件pop用戶


    [root@www bin/]]# /home/vpopmail/bin/vdeluser


    8、修改一個POP用戶密碼:


    [root@www bin/]]# /home/vpopmail/bin/vpasswd


    9、結合vchkpw與qmail-pop3d


    當使用vpopmail時,則需要將pop的運行腳本run修改為:


    #!/bin/sh

    exec /usr/local/bin/tcpserver -v -H -R 0 pop-3 -u vpopmail -g vchkpw /var/qmail/bin/qmail-popup domain1.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2

    >&1 | \

    /var/qmail/bin/splogger pop3d

     

    注:從exec到"| \"都是同一行的內容。


    3、vpopmail的詳細配置選項

    --enable-roaming-users=n|y 當pop3認證通過以后,是否打開對該用戶的郵件轉發(mail relay),缺省是關閉的。


    若設置該方法為yes,則當某個用戶通過了pop3認證,則將其ip地址加入到允許通過該郵件服務器的進行郵件relay的列表中。一個名為clearopensmtp的cronjob程序可以用來實現在一段時間以后從允許轉發郵件地址列表中將該ip地址去除。這個選項要求以-x /etc/tcp.smtp.cdb選項來使用tcpserver運行smtp服務器。

    --enable-hardquota=#|n 設置或打開磁盤限額,NOQUOTA為沒有限制


    為沒有郵件賬號設置磁盤限額,缺省為50M,這里=后面的數字單位為字節,也就是為了限制磁盤限額為10M就需要使用配置參數:--enable-hardquota=10000000。若磁盤限額超出,則將拒絕接收該用戶的新郵件,并返回一封拒絕信息信件,其中的信息可以定制。

    --enable-default-domain=name 設定缺省域名


    推薦將所有的域都設置為虛擬域,并且挑選一個作為缺省域。對于缺省域的用戶,其通過接收郵件時,只需要在用戶名中設置其郵件用戶名即可,而對于其他非缺省用戶,則需要將用戶名設置為 %的格式才能通過pop3收取信件。

    --enable-ip-alias-domains=y|n 允許通過反向解析來察看虛擬域.


    缺省情況下,每個域使用基于虛擬域的名字,也就是用戶必需在pop用戶名中提供相應的域信息,也就是%。當然可以是用enable-default-domain配置選項來覆蓋該要求。


    Vpopmail同樣支持基于IP地址的虛擬域,若該選項打開則用戶不需要在pop用戶名中提供

    %,則vpopmai自動對用戶連接的服務器的IP地址進行反向解析,若解析得到一個域名,則vpopmail使用該名字作為域,例如:


    IP w.x.y.z 對應于域名test.com,用戶設置pop服務器的IP地址為w.x.y.z,然后連接pop服務器,vpopmail1得到連接請求,并察看連接的服務器端的IP,然后進行反向DNS查詢,得到test.com的域名,用戶使用joe作為pop用戶名,vpopmail使用test.com。

    --enable-relay-clear-minutes=360 允許漫游用戶通過郵件服務器的轉發郵件的時間段。


    若--enable-roamin-users=y,則該選項設置clearopensmtp應該保持該IP在允許列表中的時間,缺省是3小時。

    Mysql options

    --enable-mysql=n|y 使用mysql,缺省是no


    允許通過將賬號存放在mysql數據庫中來認證用戶。

     

    注意:在配置和編譯以前需要修改文件vmysql.h,正確的設置mysql服務器的name/ip, mysql用戶和mysql用戶密碼。該用戶必需要擁有創建數據庫和在其中創建表格的權限。

    --enable-sqlincdir= sql頭文件的目錄,缺省為/usr/local/mysql.


    --enable-sqllibdir=/usr/lib/mysql 庫文件libmysqlclient.a的目錄,缺省為/usr/lib/mysql


    --enable-sqllibs=mysqlclient mysql庫名,缺省為libmysqlclient.a.


    --enable-large-site=n|y 缺省值為no,使用該選項是為了適應大量用戶的情況。


    缺省的vpopmail將所有的域信息存放在同一個table-vpopmail中,這對于一般情況下具有很好的效率。但是對于大量用戶的系統,則需要將該選項設置為yes。這時候,vpoomail將為每個域創建一個table。最主要的區別是域名不存放在數據庫中,因為表格包含了域名。對于大于500,000+的用戶,這可以節省大量的磁盤空間。但是對于有大量虛擬域的系統可能會影響mysql的性能。

    Vpasswd/cdb options

    --enable-ucspi-dir=dir 編譯好ucspi包的目錄位置


    使用該目錄來設定ucspi-tcp軟件包的路徑,缺省為../ucspi-tcp-0.84。vpopmail需要使用該目錄中的頭文件和兩個.a文件。

    Logging options

    --enable-logging=e|y|n 打開(y)或關閉(n)使用syslog進行log,或e僅僅log錯誤信息。


    設置log級別,缺省僅僅記錄pop認證錯誤信息。

    --enable-log-name=vpopmail 設置log名


    User/group options

    --enable-vpopuser=vpopmail


    若使用其他的用戶來安裝該軟件包,則在該選項中指定組名。

    --enable-vpopgroup=vchkpw


    若使用其他的組來安裝該軟件包,則在該選項中指定組名。

    --enable-admin-email=email-address 系統管理員的電子郵件地址。


    Directory and file location options

    --enable-tcpserver-file=/etc/tcp.smtp tcpserver -x使用的郵件轉發配置文件的存放目錄,缺省為/etc


    --enable-qmaildir=dir qmail的安裝目錄指定,缺省為/var/qmail。


    --enable-tcprules-prog=/usr/local/bin/tcprules tcprules程序的安裝位置,缺省為/usr/local/bin


    --enable-apop-file=/etc/apop-secrets apop密鑰存放目錄


    Other options

    --enable-apop=y|n 允許或禁止apop認證,缺省是yes


    --enable-passwd=y|n 允許或禁止/etc/passwd(或shadow)認證。


    覆蓋自動配置,缺省的配置程序將自動檢測系統是使用passwd或shadow密碼,通過設置該選項為no,可以禁止所有的/etc/passwd賬號認證。

    4、Qmail和虛擬域

    Qmail對于郵件域有"local"和"virtual"的概念。local域是實現匹配/etc/passwd賬號;而虛擬域則匹配于羅列在qmail的控制文件"virtualdomains"的各個域。Vpopmail則利用qmail的users/assign和virtualdomains文件。users/assign文件(該文件的含義可以參考Life with qmail中的qmail-users 3.6的說明)被編譯為users/cdb的形式,它是一個哈希數據庫來加快查找速度。若任意一個模式得到匹配,則qmail使用文件中定義的uid和gid傳送該郵件到文件中定義的目錄。Vpopmail利用該方法來實現使qmail以單一的vpopmail/vchkpw身份來傳輸所有的虛擬域的郵件,從而實現將郵件傳輸到vpopmail/domains/目錄下的不同用戶。


    對于qmail來說,qmail-local程序一旦從users/assign得到相關信息,則其進行標準的.qmail文件操作。一般來說,.qmail-文件被用來完成郵件轉發、別名或調用其他程序如ezmlm等。若沒有找到匹配,則qmail-local查找.qmail-default文件,這是qmail-local郵件投遞機制中最后一步。 Vpopmail利用該文件來調激活vdelivermail 程序,該程序以兩個參數被調用,第一個當前沒有作用,主要是用作向后兼容的;第二個參數是用來在一個虛擬域用戶沒有被找到時的缺省投遞,一般來說,缺省投遞可以是將郵件投遞到某個目錄或某個郵件地址或返回無此用戶的返回信件。


    5、筆者安裝過程

    筆者是在安裝成功了真實用戶qmail系統的基礎上進一步實現將賬號存放在mysql數據庫中。這里支持漫游用戶,用戶磁盤限額為10M,系統具有多個域:domain1.com和domain2.com,并且這兩個域是完全等同的,即:用戶一旦擁有了系統信箱,將擁同時有和兩個地址。筆者的mysql服務器按照缺省配置已經安裝成功,運行正常。并且將所有的郵件賬號都放進虛擬域中,不允許通過/etc/passwd進行認證。


    第一步:修改文件/usr/src/vpopmail-4.9.4/vmysql.h,修改


    /* Edit to match your set up */

    #define MYSQL_SERVER "localhost"

    #define MYSQL_USER "root"

    #define MYSQL_PASSWD "passwoerd"

    /* End of setup section*/


    中mysql服務器的地址,若你的mysql服務器存放在其他機器上,則將localhost修改為你的mysql服務器的ip地址;若你希望使用其他具有對數據庫讀寫及創建庫和表格的用戶來訪問數據庫,則將root為你希望的用戶名;將passwoerd修改為你的mysql數據庫對應的訪問密碼。


    拷貝//usr/local/lib/mysql下的所有內容到/lib/中


    第二步:創建需要的用戶和組:


    /usr/sbin/groupadd vchkpw

    /usr/sbin/useradd -g vchkpw vpopmail


    第三步:配置編輯vpopmail:


    ./configure --enable-roaming-users=y --enable-hardquota=10000000 --enable-default-domain=secfocus.com --enable-mysql=y --enable-sqlincdir=/usr/local/include/mysql/ --enable-sqllibdir=/usr/local/lib/mysql --enable-ucspi-dir=../ucspi-tcp-0.88 --enable-passwd=n


    make


    make install


    第四步:添加虛擬域


    /home/vpopmail/bin/vadddomain domain1.com


    /home/vpopmail/bin/vaddaliasdomain domain2.com


    第五步:添加用戶


    /home/vpopmail/bin/vadduser


    第六步:支持pop3


    當使用vpopmail時,則需要將pop的運行腳本run修改為:


    #!/bin/sh

    exec /usr/local/bin/tcpserver -v -H -R 0 pop-3 -u vpopmail -g vchkpw /var/qmail/bin/qmail-popup domain1.com /home/vpopmail/bin/vchkpw /var/qmail/bin/qmail-pop3d Maildir 2

    >&1 | \

    /var/qmail/bin/splogger pop3d

     

    注:在這里筆者在dns的設置中,有如下的紅色標示得內容:


    @ IN SOA ns.domain1.com. root.ns.domian1.com. (

    2000103001 ; serial

    0 ; refresh

    0 ; retry

    0 ; expire

    0 ; default_ttl

    )

    @ IN NS ns.domian1.com.

    @ IN MX 10 mail.domian1.com.

    @ IN A 210.112.11.200


    ...


    ...

    mail IN A 210.112.11.200


    @ IN A 210.112.11.200表示當按照一般的域名查詢(非MX查詢,而是A查詢)domain1.com時,返回解析地址為210.112.11.200,而mail.doamin1.com也解析為210.112.11.200。

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