環境: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 >