Extmail搭建html
目錄node
1、背景介紹............1mysql
2、實戰演練............1linux
2.1 操做系統安裝............1web
2.2 製做YUM倉庫............1sql
2.3 配置MTA-postfix............1數據庫
2.3.1 安裝postfix............1apache
2.3.2 配置postfix............1centos
2.4 配置Courier-Authlib............2安全
2.4.1 安裝Courier-Authlib............2
2.4.2 配置Courier-Authlib............2
2.5 配置Maildrop............3
2.5.1 安裝Maildrop............3
2.5.2 配置Maildrop............3
2.5.3 測試maildrop對authlib支持............4
2.6 配置Apache............4
2.7 配置Webmail-ExtMail............5
2.7.1 安裝ExtMail............5
2.7.2 編輯webmail.cf............5
2.8 配置管理後臺-ExtMan............5
2.8.1 yum安裝ExtMan............5
2.8.2 數據庫初始化............5
2.8.3 設置虛擬域和虛擬用戶的配置文件............6
2.8.4 測試authlib............6
2.8.5 配置圖形化日誌............7
2.9 配置Cyrus-SASL............7
2.9.1 安裝cyrus-sasl............7
2.9.2 配置main.cf文件............8
2.9.3 編輯smtpd.conf文件............8
2.9.4 測試SMTP認證............9
2.10 配置Courier-IMAP............9
2.10.1 安裝Courier-imap............9
2.10.2 測試POP3工做是否正常............10
3、注意事項............10
ExtMail Solution 是一個基於優秀開源軟件的電子郵件系統解決方案,核心部件包括了Postfix、Amavisd-new、ClamAV、ExtMail、ExtMan、Courier系列軟件。是一個功能相對比較齊全的免費電子郵件系統。本次環境中使用的是CentOS。
採用系統光盤進行安裝,而後按照平常安裝步驟依次進行是否校驗介質、安裝界面語言等選項……注意必須安裝MYSQL數據庫。
使用EMOS光盤製做本地 yum倉庫,CentOS系統安裝完成以後在/etc/yum.repos.d/下會生成4個配置文件。其中CentOS-Media.repo是本地YUM源的配置文件,能夠在該配置文件中把EMOS光盤的路徑進行添加完成本地YUM源的配置。
# yum install postfix
# rpm -e sendmail
# 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
# vi /etc/postfix/main.cf(編輯main.cf文件,將文件中標紅的字體替換成本身的域名)
增長以下內容,最後保存退出:
# hostname
mynetworks = 127.0.0.1
myhostname = (mail.extmail.orgàmail.test.com)
mydestination = $mynetworks $myhostname
# banner
mail_name = Postfix - by (extmail.orgàtest.com)
smtpd_banner = $myhostname ESMTP $mail_name
# response immediately
smtpd_error_sleep_time = 0s
# Message and return code 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
設置postfix啓動及開機自啓:
#service postfix restart
#chkconfig postfix on
# yum install courier-authlib
# yum install courier-authlib-mysql
# vi /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 SELECTusername,password,"",uidnumber,gidnumber,\
CONCAT('/home/domains/',homedir), \
CONCAT('/home/domains/',maildir), \
quota, \ name \
FROM mailbox \
WHERE username ='$(local_part)@$(domain)'
# vi /etc/authlib/authdaemonrc
修改以下內容:
authmodulelist="authmysql"
authmodulelistorig="authmysql"
啓動courier-authlib:
# service courier-authlib start
如一切正常,命令行將返回以下信息:
Starting Courier authentication services:authdaemond
修改authdaemon socket目錄權限,若是該目錄權限不正確修改,maildrop及postfix等將沒法正確獲取用戶的信息及密碼認證:
# chmod 755 /var/spool/authdaemon/
# yum install maildrop
配置master.cf 爲了使Postfix支持Maildrop,必須修改/etc/postfix/master.cf文件,註釋掉maildrop中和圖例1結構相似的配置內容,將該語句添加到maildrop配置文件中,注意:flags前面有「兩個空格」。
配置main.cf,因爲maildrop不支持一次接收多個收件人,所以必須在main.cf裏增長以下參數:
maildrop_destination_recipient_limit = 1
# maildrop –v
看是否出現如下內容:
maildrop 2.1.0 Copyright 1998-2005 DoublePrecision, Inc.
GDBM/DB extensions enabled.
Courier Authentication Library extensionenabled.
Maildir quota extension enabled.
This program is distributed under the termsof the GNU General Public
License. See COPYING for additionalinformation.
注意事項:
1、如需從新編譯Maildrop軟件包,必須先得到其源碼rpm包,而且必須先行安裝courier-authlib及其devel軟件包,不然編譯後的maildrop將沒法打開authlib支持。
2、maildrop RPM包安裝時,會自動建立vuser用戶及vgroup用戶組,專門用於郵件的存儲,vuser:vgroup的uid/gid都是1000,這與通常的郵件文檔中說起用postfix用戶存郵件不同。由於postfix用戶的uid通常都低於500,而Suexec模塊編譯時對UID/GID的要求是要大於500,所以使用postfix用戶不能知足要求。其次,若是用Maildrop做爲投遞代理(MDA),以postfix身份投遞的話,會致使postfix MTA錯誤。
# vi /etc/httpd/conf/httpd.conf
在最後一行加上:
NameVirtualHost *:80
Include conf/vhost_*.conf
# vi /etc/httpd/conf/vhost_extmail.conf
裏面定義虛擬主機的相關內容(將文件中標紅的字體替換成本身的域名):
# VirtualHost for ExtMail Solution
<VirtualHost *:80>
ServerName (mail.extmail.orgàmail.test.com)
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重啓及開機自啓
#service httpd restart
# chkconfig httpd on
# yum install extsuite-webmail
# cd /var/www/extsuite/extmail
# cp webmail.cf.default webmail.cf
# vi webmail.cf
主要變更的內容見下:
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
更新cgi目錄權限因爲SuEXEC的須要,必須將extmail的cgi目錄修改爲vuser:vgroup權限:
# chown -R vuser:vgroup/var/www/extsuite/extmail/cgi/
# yum install extsuite-webman
更新cgi目錄權限因爲SuEXEC的須要,必須將extman的cgi目錄修改爲vuser:vgroup權限:
# chown -R vuser:vgroup/var/www/extsuite/extman/cgi/
連接基本庫到Extmail
# mkdir /tmp/extman
# chown -R vuser:vgroup /tmp/extman
啓動Mysql且開機自啓動
# service mysqld start
# chkconfig mysqld on
導入mysql數據庫結構及初始化數據,root密碼默認爲空
# mysql -u root -p </var/www/extsuite/extman/docs/extmail.sql
# mysql -u root -p </var/www/extsuite/extman/docs/init.sql
備註1:上述導入初始化SQL時,默認的uidnumber/gidnumber都是1000,這和vuser:vgroup 的uid/gid一致,是由於maildrop投遞時會從數據庫裏取uidnumber/gidnumber,而在master.cf裏已經定義好了投遞時的運行身份(vuser:vgroup),因此這兩個字段的內容必須爲1000,不然將出現投遞錯誤,例如報0x06等錯誤。
注意:因爲公網上的文檔資料是以mail.extmail.org爲域名,因此須要將數據庫中的全部extmail.org替換成本身本地的域名(test.com),能夠用linux下的Vi編輯器打開數據庫文件,該文件的位置是/var/www/extsuite/extman/docs。而後依次打開init.sql和extmail.sql將全部的extmail.org替換成test.com。如圖例2所示已經替換完成。最後使用update命令將數據庫extmail中的全部表數據記錄均完成extmail.org到test.com的替換。
# cd /var/www/extsuite/extman/docs
# 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/
# vi /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:
# service postfix restart
# cd /var/www/extsuite/extman/tools
# ./maildirmake.pl/home/domains/extmail.org/postmaster/Maildir
# chown -R vuser:vgroup/home/domains/extmail.org
# /usr/sbin/authtest -s login postmaster@(extmail.org-->test.com) extmail
結果以下:
Authentication succeeded.
Authenticated: postmaster@test.com (uid 1000, gid 1000)
Home Directory: /home/domains/test.com/postmaster
Maildir: /home/domains/test.com/postmaster/Maildir/
Quota: 104857600S
Encrypted Password:$1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0
Cleartext Password: extmail
Options: (none)
這樣代表ExtMan的正確安裝,數據庫也正確導入,courier-authlib能正確鏈接到mysql數據庫
最後訪問http://mail.test.com/extmail/,如無心外,將看到webmail的登錄頁,不過此時尚未加正式的用戶,因此不能登錄,包括postmaster@test.com也不行。必需要登錄到http://mail.test.com/extman/ 裏增長一個新賬戶才能登錄。
ExtMan的默認超級管理員賬戶:root@test.com,初始密碼:extmail*123*,登錄成功後,建議將密碼修改,以確保安全。
啓動mailgraph_ext
# /usr/local/mailgraph_ext/mailgraph-initstart
啓動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
刪除系統的cyrus-sasl:
# rpm -e cyrus-sasl –nodeps
安裝新的支持authdaemon的軟件包
# yum install cyrus-sasl
Postfix的SMTP認證須要透過Cyrus-SASL,鏈接到authdaemon獲取認證信息。
# 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 =
permit_mynetworks,
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
# vi /usr/lib/sasl2/smtpd.conf
確保其內容爲:
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket
從新啓動postfix:
# service postfix start
經過如下命令得到postmaster@test.com的用戶名及密碼的BASE64編碼:
# perl -e 'use MIME::Base64; print encode_base64("postmaster\@test.com")'
內容以下結構:
cG9zdG1hc3RlckBleHRtYWlsLm9yZw==
# perl -e 'use MIME::Base64; printencode_base64("extmail")'
內容以下結構:
ZXh0bWFpbA==
# telnet localhost 25(須要本機安裝telnet軟件包)
過程以下:
Trying 127.0.0.1...
Connected to localhost.localdomain(127.0.0.1).
Escape character is '^]'.
220 mail.test.com ESMTP Postfix - by test.com
ehlo demo.domain.tld << 輸入內容
250-mail.test.com
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== << 輸入內容(經過per命令獲取的用戶名)
334 UGFzc3dvcmQ6
ZXh0bWFpbA== << 輸入內容(經過per命令獲取的用戶名密碼)
235 2.0.0 Authentication successful
quit << 輸入內容
221 2.0.0 Bye
最後出現235 Authentication Successful 代表認證成功了。
默認的courier-authlib及courier-imap都會增長系統自啓動設置,所以下一次服務器啓動將自動啓動相應的authlib及POP3服務
# yum install courier-imap
因爲Courier-imap的IMAP目錄是按UTF-7編碼的,ExtMail目前尚未正式支持IMAP目錄,所以須要屏蔽IMAP,只提供pop3服務。
# vi /usr/lib/courier-imap/etc/imapd
修改內容以下:
IMAPDSTART=NO
# vi /usr/lib/courier-imap/etc/imapd-ssl
修改內容以下:
IMAPDSSLSTART=NO
而後從新啓動courier-imap:
# service courier-imap start
測試POP3 請按以下步驟輸入pop3命令測試其是否正常工做,注意藍色的信息是咱們輸入到POP3服務器的(請首先登陸extman自行創建test@test.com用戶,密碼:123qaz!)
# telnet localhost 110
其過程以下:
Trying 127.0.0.1...
Connected to localhost.localdomain(127.0.0.1).
Escape character is '^]'.
+OK Hello there.
user test@test.com << 輸入內容
+OK Password required.
pass 123qaz! << 輸入內容
+OK logged in.
list << 輸入內容
+OK POP3 clients that break here, theyviolate STD53.
.
quit << 輸入內容
+OK Bye-bye.
Connection closed by foreign host.
出現以上內容說明配置正確。
以上手冊內容的結構體系引自http://wiki.extmail.org/extmail_solution_for_centos-5,但因爲官網編寫較粗略,其中個別細節問題須要注意。
在2.9.4測試SMTP認證時會出現錯誤,經過查看錯誤信息/var/log/messages,執行#cp -f /usr/lib/sasl2/smtpd.conf /usr/lib64/sasl2/ #/etc/init.d/saslauthd restart完成以上兩步操做以後就能夠成功經過SMTP測試。
在2.10.2測試POP3工做是否正常以前須要提早在mail.test.com/extman後臺管理端添加用戶,不然會出現錯誤。