歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux業界

分布式的Qmail郵件系統

一、設計目的

  適應多用戶、大容量的郵件系統,易擴展,提供mail服務冗余特性。

二、配置環境

  我的測試環境采用了三台PC Server,均采用RedHat 6.2,openldap2.0.7和qmail-1.03
以及qmail-ldap,分別運行smtp/pop3服務,具體配置如下。

  192.168.0.19 omni1.i100.com.cn 主smtp/pop3 server,dns MX記錄,
郵件存儲主機,qmqp server
  192.168.0.5 cocoon.i100.com.cn LDAP server,郵件存儲主機
  192.168.0.2 gw2.i100.com.cn 郵件存儲主機,qmqp server,同時是次smtp/pop3 server
  在192.168.0.19的/data/vuser/目錄下,存儲johnny的郵件。
  在192.168.0.5的/data/vuser/目錄下,存儲jacky的郵件。
  在192.168.0.2的/var/qmail/vuser/目錄下,存儲denny的郵件。
  以上配置在實踐中,可以配置成郵件存儲和ldap以及smtp server分別位於不同機器。

三、軟件

  openldap-2.0.7.tgz
qmail-1.03.tar.gz
  qmail-ldap-1.03-20010301.patch
  ucspi-tcp-0.84.tar.gz

編譯qmail的時候,記得把對cluster的支持編譯進去。
Edit the Makefile to reflect your setup. You can change the following values:
  QLDAP-CLUSTER
Compiles the clustering code in. Note: this doesn't mean clustering is
on, it just means you _can_ turn on clustering.
  缺省qmail是支持cluster結構的。

四、關於LDAP和qmail的安裝,請查看論壇相應的文章,在這裡,我給出我的LDAP的ldif文件

dn: dc=i100, dc=com, dc=cn
objectclass: top
objectclass: orgnization

dn: cn=Manager, dc=i100, dc=com, dc=cn
uid: Manager
objectclass: qmailUser
mail: [email protected]

dn: cn=johnny, dc=i100, dc=com, dc=cn
cn: johnny
sn: johnny
objectclass: top
objectclass: person
objectclass: inetOrgPerson
objectclass: qmailUser
mail: [email protected]
mailhost: omni1.i100.com.cn
mailalternateaddress: [email protected]
mailmessagestore: /data/vuser/johnny/
mailquota: 51200
uid: johnny
userpassword: hSAMdaZcsdAOI

dn: cn=jacky, dc=i100, dc=com, dc=cn
cn: jacky
sn: jacky
objectclass: top
objectclass: person
objectclass: inetOrgPerson
objectclass: qmailUser
mail: [email protected]
mailhost: cocoon.i100.com.cn
mailalternateaddress: [email protected]
mailmessagestore: /data/vuser/jacky/
mailquota: 51200
uid: jacky
userpassword: hSAMdaZcsdAOI

dn: cn=denny, dc=i100, dc=com, dc=cn
cn: denny
sn: denny
objectclass: top
objectclass: person
objectclass: inetOrgPerson
objectclass: qmailUser
mail: [email protected]
mailhost: gw2.i100.com.cn
mailalternateaddress: [email protected]
mailmessagestore: /var/qmail/vuser/denny/
mailquota: 51200
uid: denny
userpassword: hSAMdaZcsdAOI

以上大家可以看到,我把三個用戶的郵件分別存到了不同的機器上。如果用戶多,可以
把a-n和o-z開頭的用戶分別存儲到不同的機器上。

五、基本系統配置

  在三台機器上分別install qmail with qmail-ldap patch.
  需要特別配置的是/var/qmail/control下的相關文件。

ldapuid ldapgid 這是可以讀寫用戶郵件目錄的系統用戶的uid和gid,在不同的
機器上,會有不同的配置;確保此用戶有讀寫用戶郵件目錄的權限。

ldapserver 此文件指定LDAP服務器的ip地址;如果您想ldap有冗余作用,在主
LDAP server down了的時候,啟用次LDAP server,可以在該文件中指定。
如:ldap1.i100.com.cn:389 ldap2.i100.com.cn:389        :)

  ldapserver 此文件內容是0或者1,表示是否啟動qmail cluster模式。我們當然要啟動了。
  echo 1 > /var/qmail/control/ldapserver

六、Qmail Cluster工作原理

  在允許cluster的郵件環境中,每台主機都可以處理該cluster聲明的域的郵件;當一個
mail到達主smtp server的時候,Qmail查詢LDAP server中有關該用戶的mailhost屬性,
如果mailhost屬性指定的不是此server的/var/qmail/control/me中定義的的主機,此
郵件被通過qmqp協議轉發到mailhost定義的主機上。

  注:所有主機名必須是合法的dns主機名。

七、詳細配置

  在每台運行qmail的系統上運行qmail-qmqpd進程,才可實現郵件轉發。需要設置tcp.qmqp
文件,此文件中定義可信任的mailhost.

如: 192.168.0.:allow
    :deny
然後用tcprules生成tcp.qmqp.cdb文件。
運行 /usr/local/bin/tcpserver -v -x /var/qmail/control/tcp.qmqp.cdb
-u 502 -g 501 0 628 /var/qmail/bin/qmail-qmqpd 2>&1 | /var/qmail/bin/splogger qmqpd &

  啟動qmail-qmqpd進程,監聽在628 port。

  在客戶端,使用oe將pop3 server設置為主smtp/pop3 server地址(這裡是192.168.0.19),
就可以收到存儲在192.168.0.5和192.168.0.2上用戶的郵件。 :)

八、有關qmail-qmqpd server

  以上實現了郵件的分布式存儲,但是隨著用戶的增加,主smtp/pop3 server會成為整個
系統的瓶頸;而且一旦主smtp/pop3 server down機,整個系統將不再有效。

  解決辦法是增加qmqpd server。
  現在主smtp/pop3 server是192.168.0.19,我測試環境是把192.168.0.2同時也作為
qmqpd server;由此,一旦192.168.0.19 down機,192.168.0.2仍然可以繼續提供
smtp/pop3服務。
  我簡單的采用手工down掉192.168.0.19,而把pop3和smtp server設置成192.168.0.2
的方式,以證實此方法的可行性;並且192.168.0.2並不是此域聲明的MX記錄。

以上需要在兩台qmqpd server的/var/qmail/control目錄中,增加qmqpservers文件,
在其中每行寫入一台qmqpd server的ip地址。             :)

九、其他

  如果需要webmail功能,可以和sqwebmail進行整合。
  此方案不提供對pop3存儲的冗余措施,如果可能,可以采用Raid、NFS或者SAN的解決方案。
  本文只是簡單介紹了配置過程,更多的原理性的介紹,大家可以參考我後面給出的鏈接。
  

http://www.lifewithqmail.org/ldap/
http://cr.yp.to/qmail/mini.html

十、聲明

小弟對郵件系統也不是很精通,如果有錯誤之處,請大家原諒。
  轉發此文章,請注明出自www.linuxforum.net和作者。
  [email protected]




Copyright © Linux教程網 All Rights Reserved