天天看點

搭建web郵箱extmail

環境:Centos5,extmail的依賴包很多,對環境要求比較苛刻,是以建議在Centos5上安裝。

本次主機名為:centos.mail.com      域名:jinnicat.com 

官方參考文檔:http://http://wiki.extmail.org/extmail_solution_for_centos-5

視訊參考:http://www.tudou.com/programs/view/Zct0ANsC0UI/

1、制作EMOS yum源。

#vim  /etc/yum.repos.d/emos.repo

[EMOS-base]

name=EMOS-Base

baseurl=http://mirror.extmail.org/yum/emos/1.5/os/$basearch/

gpgcheck=0

priority=0

protect=0

[EMOS-update]

name=EMOS-Updates

baseurl=http://mirror.extmail.org/yum/emos/1.5/updates/$basearch/

2、配置MTA-Postfix

準備工作:

# yum install -y httpd mysql-server php-mysql

安裝postfix

2.1安裝postfix

# yum install -y postfix

# rpm -e sendmail(注:sendmail會對後面smtp驗證産生影響)

2.2、配置postfix

# postconf -n >/etc/postfix/main2.cf

# mv /etc/postfix/main.cf /etc/postfix/main.cf.old

# mv /etc/postfix/main2.cf /etc/postfix/main.cf

編輯main.cf:

# vim /etc/postfix/main.cf

增加如下内容:

# hostname

mynetworks = 127.0.0.1

myhostname = centos.mail.com

mydestination = $mynetworks $myhostname

# banner

mail_name = Postfix - by mail.com

smtpd_banner = $myhostname ESMTP $mail_name

# response immediately

smtpd_error_sleep_time = 0s

#Message and return coolcode control

message_size_limit = 5242880

mailbox_size_limit = 5242880

show_user_unknown_table_name = no

#Queue lifetime control

bounce_queue_lifetime = 1d

maximal_queue_lifetime = 1d

maildrop_destination_recipient_limit = 1(由于maildrop不支援一次接收多個收件人,是以需要參數

)

(注:myhostname改為自己的。)

設定postfix開機自啟:

#chkconfig postfix on

3、配置courier-authlib

3.1、安裝Courier-Authlib

# yum -y install courier-authlib

# yum -y install courier-authlib-mysql

删除并編輯/etc/authlib/authmysqlrc檔案:

# cat /dev/null >/etc/authlib/authmysqlrc

# vim /etc/authlib/authmysqlrc

增加如下内容:

MYSQL_SERVER localhost

MYSQL_USERNAME extmail

MYSQL_PASSWORD extmail

MYSQL_SOCKET /var/lib/mysql/mysql.sock

MYSQL_PORT 3306

MYSQL_OPT 0

MYSQL_DATABASE extmail

MYSQL_USER_TABLE mailbox

MYSQL_CRYPT_PWFIELD password

MYSQL_UID_FIELD uidnumber

MYSQL_GID_FIELD gidnumber

MYSQL_LOGIN_FIELD username

MYSQL_HOME_FIELD homedir

MYSQL_NAME_FIELD name

MYSQL_MAILDIR_FIELD maildir

MYSQL_QUOTA_FIELD quota

MYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,\

CONCAT('/home/domains/',homedir), \

CONCAT('/home/domains/',maildir), \

quota,\

name \

FROM mailbox \

WHERE username = '$(local_part)@$(domain)'

修改authdaemonrc檔案

# vim /etc/authlib/authdaemonrc

修改如下内容:

authmodulelist="authmysql"

authmodulelistorig="authmysql"

3.2、啟動courier-authlib:

# service courier-authlib start

如一切正常,指令行将傳回如下資訊:

Starting Courier authentication services: authdaemond

修改authdaemon socket目錄權限:

(注:如果該目錄權限不正确修改,maildrop及postfix等将無法正确擷取使用者的資訊及密碼認證)

# chmod 755 /var/spool/authdaemon/

4、配置maildrop

4.1、安裝maildrop

# yum install maildrop

配置master.cf 為了使Postfix支援Maildrop,必須修改vim /etc/postfix/master.cf檔案,注釋掉原來的maildrop的配置内容,并改為:

maildrop  unix        -      n        n        -        -        pipe

flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}

(注:flags前面有“兩個空格”,“key”  =  ”value“)

4.2、測試maildrop對authlib支援

# maildrop -v

看是否出現以下内容:

maildrop 2.1.0 Copyright 1998-2005 Double Precision, Inc.

GDBM/DB extensions enabled.

Courier Authentication Library extension enabled.

Maildir quota extension enabled.

This program is distributed under the terms of the GNU General Public

License. See COPYING for additional information.

5、配置Apache

5.1、虛拟主機設定

編輯httpd.conf檔案:

# vim /etc/httpd/conf/httpd.conf

在最後一行加上:

NameVirtualHost *:80

Include conf/vhost_*.conf

編輯 vhost_extmail.conf

/etc/httpd/conf/vhost_extmail.conf

裡面定義虛拟主機的相關内容:

# VirtualHost forExtMail Solution

<VirtualHost *:80>

ServerName mail.extmail.org

DocumentRoot /var/www/extsuite/extmail/html/

ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/

Alias /extmail /var/www/extsuite/extmail/html/

ScriptAlias /extman/cgi/ /var/www/extsuite/extman/cgi/

Alias /extman /var/www/extsuite/extman/html/

# Suexec config

SuexecUserGroup vuser vgroup

</VirtualHost>

設定apache開機啟動

# chkconfig httpd on

6、配置Webmail-ExtMail

6.1、安裝ExtMail

# yum install extsuite-webmail

6.2、編輯webmail.cf

# cd /var/www/extsuite/extmail

# cp webmail.cf.default webmail.cf

# vim webmail.cf

主要變動的内容見下:

SYS_PERMIT_NOQUOTA = 1(登入使用者是不需要驗證碼)

SYS_SESS_DIR = /var/www/tmp

SYS_MYSQL_USER = extmail

SYS_MYSQL_PASS = extmail

SYS_MYSQL_DB = extmail

注意事項:(預設設定在/tmp/extman下面)

由于RedHat發行版中包含了一個叫tmpwatch的工具,該工具會定期掃描/tmp/下的檔案,如果這些檔案很久都沒被使用,将被删除,是以如果背景長期不使用,/tmp/extman目錄有可能被tmpwatch删除,是以要修改webman.cf将臨時目錄修改到另一個地方。

# mkdir /var/www/tmp

修改權限:

# chown -R vuser:vgroup /var/www/tmp

更新cgi目錄權限 由于SuEXEC的需要,必須将extmail和extman的cgi目錄修改成vuser:vgroup權限:

# chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/

# chown -R vuser:vgroup /var/www/extsuite/extman/cgi/

7、配置管理背景-ExtMan

7.1、yum安裝ExtMan

# yum install extsuite-webman

7.2、資料庫初始化

啟動Mysql

# service mysqld start

# chkconfig mysqld on

# cd /var/www/extsuite/extman/docs

# sed -i s/extmail\.org/jinnicat\.com/g extmail.sql

# sed -i s/extmail\.org/jinnicat\.com/g init.sql

導入mysql資料庫結構及初始化資料,root密碼預設為空

# mysql -u root -p < /var/www/extsuite/extman/docs/extmail.sql

# mysql -u root -p < /var/www/extsuite/extman/docs/init.sql

7.3、設定虛拟域和虛拟使用者的配置檔案

# cp mysql_virtual_alias_maps.cf /etc/postfix/

# cp mysql_virtual_domains_maps.cf /etc/postfix/

# cp mysql_virtual_mailbox_maps.cf /etc/postfix/

# cp mysql_virtual_sender_maps.cf /etc/postfix/

配置main.cf:

增加以下内容:

# extmail config here

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_transport = maildrop:

重新開機postfix :

# service postfix restart

7.4、測試authlib

建立剛才導入mysql的[email protected]帳戶的Maildir,請輸入如下指令:

# cd /var/www/extsuite/extman/tools

# ./maildirmake.pl /home/domains/jinnicat.com/postmaster/Maildir

# chown -R vuser:vgroup /home/domains/jinnicatl.com

在指令行下執行:

# /usr/sbin/authtest -s login [email protected] extmail

結果如下:

Authentication succeeded.

Authenticated: [email protected]  (uid 1000, gid 1000)

Home Directory: /home/domains/jinnicat.com/postmaster

Maildir: /home/domains/jinnicat.com/postmaster/Maildir/

Quota: 104857600S

Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0

Cleartext Password: extmail

Options: (none)

7.5、配置圖形化日志

啟動mailgraph_ext

# /usr/local/mailgraph_ext/mailgraph-init start

啟動cmdserver(在背景顯示系統資訊)

# /var/www/extsuite/extman/daemon/cmdserver --daemon

加入開機自啟動:

# echo "/usr/local/mailgraph_ext/mailgraph-init start" >> /etc/rc.d/rc.local

# echo "/var/www/extsuite/extman/daemon/cmdserver -v -d" >> /etc/rc.d/rc.local

使用方法: 等待大約15分鐘左右,如果郵件系統有一定的流量,即可登陸到extman裡,點“圖形日志”即可看到圖形化的日志。具體每天,周,月,年的則點選相應的圖檔進入即可。

添加定時任務:

# crontab -e

添加以下内容:

0 4 * * * /var/www/extsuite/extman/tools/expireusers.pl -all [email protected]

30 4 * * * /var/www/extsuite/extman/tools/reportusage.pl -all /home/domains [email protected]

8、配置Cyrus-SASL

8.1、安裝cyrus-sasl

删除系統的cyrus-sasl:

# rpm -e cyrus-sasl --nodeps

安裝新的支援authdaemon的軟體包

# yum install cyrus-sasl

8.2、配置main.cf檔案

Postfix的SMTP認證需要透過Cyrus-SASL,連接配接到authdaemon擷取認證資訊。

編輯main.cf

# vi /etc/postfix/main.cf

# smtpd related config

smtpd_recipient_restrictions =

permit_mynetworks,

permit_sasl_authenticated,

reject_non_fqdn_hostname,

reject_non_fqdn_sender,

reject_non_fqdn_recipient,

reject_unauth_destination,

reject_unauth_pipelining,

reject_invalid_hostname,

# SMTP sender login matching config

smtpd_sender_restrictions =

reject_sender_login_mismatch,

reject_authenticated_sender_login_mismatch,

reject_unauthenticated_sender_login_mismatch

smtpd_sender_login_maps =

mysql:/etc/postfix/mysql_virtual_sender_maps.cf,

mysql:/etc/postfix/mysql_virtual_alias_maps.cf

# SMTP AUTH config here

broken_sasl_auth_clients = yes

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $myhostname

smtpd_sasl_security_options = noanonymous

8.3、編輯smtpd.conf檔案

# vi /usr/lib/sasl2/smtpd.conf

確定其内容為:

pwcheck_method: authdaemond

log_level: 3

mech_list: PLAIN LOGIN

authdaemond_path:/var/spool/authdaemon/socket

重新開機所有服務:

service httpd restart

service courier-authlib restart

service courier-imap restart

service postfix restart

service mysqld restart

添加個使用者:通路http://192.168.217.134/extman/ 裡增加一個新帳戶,ExtMan的預設超級管理者帳戶:[email protected],初始密碼:extmail*123*,登陸成功後,建議将密碼修改,以確定安全。

之後建立使用者test,測試。

重新啟動postfix:

# service postfix start

8.4、測試SMTP認證

通過以下指令獲得[email protected]的使用者名及密碼的BASE64編碼:

# perl -e 'use MIME::Base64; print encode_base64("test\@jinnicat.com")'

内容如下:

cG9zdG1hc3RlckBleHRtYWlsLm9yZw==

# perl -e 'use MIME::Base64; print encode_base64("123456")'

ZXh0bWFpbA==

然後本機測試:

# telnet localhost 25

其過程如下:

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 mail.extmail.org ESMTP Postfix - by extmail.org

ehlo demo.domain.tld    << 輸入内容

250-mail.extmail.org

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

auth login    << 輸入内容

334 VXNlcm5hbWU6

cG9zdG1hc3RlckBleHRtYWlsLm9yZw==    << 輸入内容

334 UGFzc3dvcmQ6

ZXh0bWFpbA==    << 輸入内容

235 2.0.0 Authentication successful

quit    << 輸入内容

221 2.0.0 Bye

最後出現235 Authentication Successful 表明認證成功了。

9、配置Courier-IMAP

9.1、安裝Courier-imap

預設的courier-authlib及courier-imap都會增加系統自啟動設定,是以下一次伺服器啟動将自動啟動相應的authlib及POP3服務

# yum install courier-imap

配置courier-imap

由于Courier-imap的IMAP目錄是按UTF-7編碼的,ExtMail目前還沒有正式支援IMAP目錄,是以需要屏蔽IMAP,隻提供pop3服務。而就目前的使用情況來看,IMAP使用的非常少,絕大部分OutLook/Foxmail使用者都習慣使用POP3而非IMAP。

# vi /usr/lib/courier-imap/etc/imapd

修改内容如下:(關閉IPAM)

IMAPDSTART=NO

# vi /usr/lib/courier-imap/etc/imapd-ssl

修改内容如下:

IMAPDSSLSTART=NO

然後重新啟動courier-imap:

# service courier-imap start

測試POP3 請按如下步驟輸入pop3指令測試其是否正常工作。依然是test使用者測試。

# telnet localhost 110

+OK Hello there.

user [email protected]    << 輸入内容

+OK Password required.

pass 123456   << 輸入内容

+OK logged in.

list    << 輸入内容

+OK POP3 clients that break here, they violate STD53.

.

+OK Bye-bye.

Connection closed by foreign host.

##至此:extmail配置完成。

附1:hostname的設定:

安裝extmail時,hostname的準确性十分重要!

我們可以在實驗開始之前先設定hostname:

#vim  /etc/sysconfig/network

#vim /etc/hosts

附2:去除登陸時的驗證碼:

Extmail登陸時的驗證碼十分煩人,我們可以去除它。

#vim /var/www/extsuite/extman/webman.cf

SYS_CAPTCHA_ON = 0

附3修改web頁面預設的域名:

vim /var/www/extsuite/extmail/html/default/index.html

162  < TD >< INPUT TYPE="text" class="input_n" NAME="domain" value="jinnicat.com" >< /TD >

繼續閱讀