(postfix+dovecot+mysql+extmail)
理论基础:
配置:
系统环境:Rhel6 x86_64 selinux and iptables disabled
主机: 192.168.122.186 server86.example.com mail.extmail.org
相关网址:rpm.pbone.net www.eicar.org
所需的包:
extmail-1.2.tar.gz extman-1.1.tar.gz Unix-Syslog-1.1.tar.gz perl-GD-2.45-1.el6.rfx.x86_64.rpm rrdtool-perl-1.3.8-6.el6.x86_64.rpm perl-File-Tail-0.99.3-8.el6.noarch.rpm cyrus-sasl-sql-2.1.23-13.el6.x86_64.rpm postfix-2.10.0.tar.gz thunderbird-17.0.2-1.el6.remi.x86_64.rpm clamav-0.97.6-1.el6.rf.x86_64.rpm clamav-db-0.97.6-1.el6.rf.x86_64.rpm clamav-milter-0.97.6-1.el6.rf.x86_64.rpm clamd-0.97.6-1.el6.rf.x86_64.rpm sendmail-milter-8.14.4-8.el6.x86_64.rpm MailScanner-4.84.5-3.rpm.tar.gz
rarlinux-3.8.0.tar.gz
1.配置mysql
[root@server86 ~]# yum install mysql-server -y
[root@server86 ~]# vim /etc/hosts
192.168.122.186 server86.example.com
[root@server86 ~]# /etc/init.d/mysqld start
[root@server86 ~]# chkconfig mysqld on
[root@server86 ~]# mkdir -p /var/www/extsuite
[root@server86 kernel]# tar zxf extmail-1.2.tar.gz -C /var/www/extsuite/
[root@server86 kernel]# tar zxf extman-1.1.tar.gz -C /var/www/extsuite/
[root@server86 kernel]# cd /var/www/extsuite/
[root@server86 extsuite]# mv extmail-1.2/ extmail
[root@server86 extsuite]# mv extman-1.1/ extman
[root@server86 extsuite]# cd /var/www/extsuite/extman/docs/
[root@server86 docs]# mysql < extmail.sql (导入extmail自带数据库)
[root@server86 docs]# mysql < init.sql (导入extmail测试用户)
至此mysql配置完毕!!!
2.配置postfix
[root@server86 ~]# yum install postfix -y
[root@server86 ~]# /etc/init.d/postfix start
[root@server86 ~]# chkconfig postfix on
[root@server86 ~]# useradd -u 600 -s /sbin/nologin vmail
[root@server86 ~]# cp /var/www/extsuite/extman/docs/mysql_virtual_alias_maps.cf /var/www/extsuite/extman/docs/mysql_virtual_domains_maps.cf /var/www/extsuite/extman/docs/mysql_virtual_mailbox_maps.cf /etc/postfix/
[root@server86 ~]# postconf -e inet_interfaces=all
[root@server86 ~]# postconf -e virtual_mailbox_base=/home/vmail/
[root@server86 ~]# postconf -e virtual_uid_maps=static:600
[root@server86 ~]# postconf -e virtual_gid_maps=static:600
[root@server86 ~]# postconf -e virtual_alias_maps=mysql:/etc/postfix/mysql_virtual_alias_maps.cf
[root@server86 ~]# postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql_virtual_domains_maps.cf
[root@server86 ~]# postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
[root@server86 ~]# /etc/init.d/postfix restart
[root@server86 new]# mail [email protected]
若配置成功会在/home/vmail/下建立extmail.org/postmaster/Maildir/目录,邮件存放在/Maildir/new/中。
至此postfix配置完毕!!!
3.配置extmail(前台)
[root@server86 ~]# yum install httpd -y
[root@server86 ~]# cd /var/www/extsuite/extmail/
[root@server86 extmail]# less INSTALL (查看如何配置)
[root@server86 extmail]# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<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
SuexecUserGroup vmail vmail
</VirtualHost>
[root@server86 ~]# /etc/init.d/httpd restart
[root@server86 ~]# chkconfig httpd on
[root@server86 ~]# vim /etc/hosts
192.168.122.186 mail.extmail.org
此时访问mail.extmail.org会出现如下错误:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
解决方法如下:
[root@server86 extmail]# chown -R vmail.vmail cgi/
此时访问mail.extmail.org会出现如下错误:
Can't locate CGI.pm in @INC (@INC contains: /var/www/extsuite/extmail/libs /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /var/www/extsuite/extmail/libs/Ext/CGI.pm line 20. BEGIN failed--compilation aborted at /var/www/extsuite/extmail/libs/Ext/CGI.pm line 20. Compilation failed in require at /var/www/extsuite/extmail/libs/Ext/App.pm line 23. BEGIN failed--compilation aborted at /var/www/extsuite/extmail/libs/Ext/App.pm line 23. Compilation failed in require at /var/www/extsuite/extmail/libs/Ext/App/Login.pm line 16. BEGIN failed--compilation aborted at /var/www/extsuite/extmail/libs/Ext/App/Login.pm line 16. Compilation failed in require at index.cgi line 20.
解决方法如下:
[root@server86 extmail]# yum install perl-CGI -y
此时访问mail.extmail.org会出现如下错误:
Can't locate /var/www/cgi-bin/extmail//lang//en_US in @INC (@INC contains: /var/www/extsuite/extmail/libs /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at /var/www/extsuite/extmail/libs/Ext/Lang.pm line 65.
解决方法如下:
[root@server86 extmail]# cp webmail.cf.default webmail.cf
此时访问mail.extmail.org会出现如下错误:
Unix::Syslog not found, please install it first! (in cleanup) Undefined subroutine &Ext::Logger::do_closelog called at /var/www/extsuite/extmail/libs/Ext/Logger.pm line 86.
解决方法如下:
方法一:
[root@server86 kernel]# vim /var/www/extsuite/extmail/webmail.cf
SYS_LOG_ON = 0 (不记录日志)
方法二:
[root@server86 kernel]# yum install perl-ExtUtils-MakeMaker make gcc -y
[root@server86 kernel]# tar zxf Unix-Syslog-1.1.tar.gz
[root@server86 kernel]# cd Unix-Syslog-1.1
[root@server86 Unix-Syslog-1.1]# perl Makefile.PL
[root@server86 Unix-Syslog-1.1]# make && make install
此时登录会出现如下错误:
connect('database=extmail;host=localhost;mysql_socket=/var/lib/mysql/mysql.sock','db_user',...) failed: Access denied for user 'db_user'@'localhost' (using password: YES) at /var/www/extsuite/extmail/libs/Ext/Auth/MySQL.pm line 45
解决方法如下:
[root@server86 extmail]# vim webmail.cf
SYS_MAILDIR_BASE = /home/vmail
SYS_CRYPT_TYPE = plain (如果之前在导入extmail测试用户前有将密码更改为明文密码的话才需修改次参数)
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
此时extmail配置完毕!!!
4.配置extman(后台)
[root@server86 ~]# cd /var/www/extsuite/extman/
[root@server86 extman]# less INSTALL (查看如何配置)
[root@server86 extman]# vim /etc/httpd/conf/httpd.conf
NameVirtualHost *:80
<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
SuexecUserGroup vmail vmail
</VirtualHost>
[root@server86 extman]# /etc/init.d/httpd restart
此时访问mail.extmail.org/extman会出现如下错误:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, root@localhost and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
解决方法如下:
[root@server86 extman]# chown vmail.vmail -R cgi/
此时访问mail.extmail.org/extman会出现如下错误:
Can't locate /var/www/cgi-bin/extman//lang//en_US in @INC (@INC contains: /var/www/extsuite/extman/libs /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at / var/www/extsuite/extman/libs/Ext/Lang.pm line 65.
解决方法如下:
[root@server86 extman]# cp webman.cf.default webman.cf
此时会出现登录界面无验证码图片的错误:
解决方法如下:
方法一:
[root@server86 kernel]# vim /var/www/extsuite/extman/webman.cf
SYS_CAPTCHA_ON = 0 (不进行校验码校验)
方法二:
[root@server86 kernel]# yum localinstall perl-GD-2.45-1.el6.rfx.x86_64.rpm -y
[root@server86 kernel]# vim /var/www/extsuite/extman/webman.cf
# sys_captcha_len
SYS_CAPTCHA_LEN = 4 ( 设置校验码长度)
此时即使你输入正确的密码和验证码也无法登录成功!!
解决方法如下:
[root@server86 extman]# vim webman.cf
SYS_MAILDIR_BASE = /home/vmail
SYS_SESS_DIR = /tmp/
SYS_CRYPT_TYPE = plain (如果之前在导入extmail测试用户前有将密码更改为明文密码的话才需修改次参数)
此时登录后System页面无法显示:
解决方法如下:
[root@server86 ~]# cd /var/www/extsuite/extman/daemon/
[root@server86 daemon]# ./cmdserver -d
此时点击System页面下的Graph Log会出现如下错误:
Can't locate RRDs.pm in @INC (@INC contains: /var/www/extsuite/extman/libs /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /var/www/extsuite/extman/libs/Ext/GraphLog.pm line 23. BEGIN failed--compilation aborted at /var/www/extsuite/extman/libs/Ext/GraphLog.pm line 23. Compilation failed in require at /var/www/extsuite/extman/libs/Ext/MgrApp/ViewLog.pm line 22. BEGIN failed--compilation aborted at /var/www/extsuite/extman/libs/Ext/MgrApp/ViewLog.pm line 22. Compilation failed in require at viewlog.cgi line 18.
解决方法如下:
[root@server86 kernel]# yum localinstall rrdtool-perl-1.3.8-6.el6.x86_64.rpm -y
[root@server86 kernel]# cd /var/www/extsuite/extman/addon/
[root@server86 addon]# cp -r mailgraph_ext/ /usr/local/
[root@server86 addon]# cd /usr/local/mailgraph_ext/
[root@server86 mailgraph_ext]# ./mailgraph-init start
启动时会出现如下错误:
Starting mail statistics grapher: mailgraph_ext
Can't locate File/Tail.pm in @INC (@INC contains: /usr/local/lib64/perl5 / usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/mailgraph_ext/mailgraph_ext.pl line 296.
BEGIN failed--compilation aborted at /usr/local/mailgraph_ext/mailgraph_ext.pl line 296.
Starting queue statistics grapher: qmonitor
解决方法如下:
[root@server86 kernel]# yum localinstall perl-File-Tail-0.99.3-8.el6.noarch.rpm -y
至此extman配置完毕!!!
5.配置dovecot
[root@server86 ~]# yum install dovecot -y
[root@server86 ~]# yum install dovecot-mysql.x86_64 -y
[root@server86 ~]# /etc/init.d/dovecot start
[root@server86 ~]# chkconfig dovecot on
[root@server86 ~]# cd /etc/dovecot/
[root@server86 dovecot]# vim dovecot.conf
protocols = imap pop3 lmtp
[root@server86 dovecot]# cd /etc/dovecot/conf.d/
[root@server86 conf.d]# vim 10-mail.conf
mail_location = maildir:/home/vmail/%d/%n/Maildir
first_valid_uid = 600 (/first)
[root@server86 conf.d]# vim 10-auth.conf
disable_plaintext_auth = no (如果之前在导入extmail测试用户前有将密码更改为明文密码的话才需修改次参数)
auth_mechanisms = plain (如果之前在导入extmail测试用户前有将密码更改为明文密码的话才需修改次参数)
!include auth-sql.conf.ext
[root@server86 conf.d]# rpm -ql dovecot | grep dovecot-sql
[root@server86 conf.d]# cp /usr/share/doc/dovecot-2.0.9/example-config/dovecot- sql.conf.ext /etc/dovecot/
[root@server86 conf.d]# vim /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=extmail user=extmail password=extmail
default_pass_scheme = plain
password_query = \
SELECT username, domain, password \
FROM mailbox WHERE username = '%u' AND domain = '%d'
user_query = SELECT maildir, 600 AS uid, 600 AS gid FROM mailbox WHERE username = '%u'
[root@server86 conf.d]# /etc/init.d/dovecot restart
[root@server86 dovecot]# telnet localhost 110 (测试收信)
Trying ::1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user [email protected]
+OK
pass westos
+OK Logged in. (出现此提示说明配置成功)
list
+OK 1 messages:
1 823
.
quit
+OK Logging out.
Connection closed by foreign host.
[root@server86 kernel]# yum localinstall thunderbird-17.0.2-1.el6.remi.x86_64.rpm -y
[root@server86 kernel]# thunderbird
按上图配置添加用户,用thunderbird进行收发邮件!
至此dovecot配置完毕!!!
6.配置postfix的sasl认证
[root@server86 ~]# yum list cyrus*
[root@server86 ~]# yum install cyrus-sasl-plain.x86_64 -y
[root@server86 kernel]# yum localinstall cyrus-sasl-sql-2.1.23-13.el6.x86_64.rpm -y
[root@server86 kernel]# cd /usr/share/doc/postfix-2.6.6/README_FILES/
[root@server86 README_FILES]# less SASL_README(查看如何配置postfix)
[root@server86 README_FILES]# postconf -e smtpd_sasl_auth_enable=yes
[root@server86 README_FILES]# postconf -e "smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination"
[root@server86 README_FILES]# postconf -e smtpd_sasl_authenticated_header=yes
[root@server86 kernel]# tar zxf postfix-2.10.0.tar.gz
[root@server86 kernel]# cd postfix-2.10.0/README_FILES/
[root@server86 README_FILES]# less SASL_README (查看如何配置postfix)
[root@server86 README_FILES]# vim /etc/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: extmail
sql_passwd: extmail
sql_database: extmail
sql_select: SELECT password FROM mailbox WHERE username = '%u@%r'
[root@server86 README_FILES]# /etc/init.d/postfix restart
[root@server86 dovecot]# perl -MMIME::Base64 -e 'print encode_base64("\0postmaster\@extmail.org\0westos");' (此条命令可以在SASL_README 中找到)
AHBvc3RtYXN0ZXJAZXh0bWFpbC5vcmcAd2VzdG9z (通过此命令得到一加密字符串)
[root@server86 dovecot]# telnet localhost 25 (测试)
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 server86.example.com ESMTP Postfix
auth plain AHBvc3RtYXN0ZXJAZXh0bWFpbC5vcmcAd2VzdG9z
235 2.7.0 Authentication successful (看到此提示则说明配置成功)
[root@server86 kernel]# thunderbird
按上图配置thunderbird
配置成功在发邮件时需要输入用户密码。
至此postfix的sasl认证配置完毕!!!
7.配置postfix的TLS认证
[root@server86 ~]# cd /usr/share/doc/postfix-2.6.6/README_FILES/
[root@server86 README_FILES]# less TLS_README (查看如何配置postfix)
[root@server86 README_FILES]# postconf -e smtpd_tls_security_level=may
[root@server86 README_FILES]# postconf -e smtpd_tls_session_cache_database=
btree:/var/lib/postfix/smtpd_scache
[root@server86 README_FILES]# vim /etc/postfix/main.cf
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,permit_tls_clientcerts,reject_unauth_destination
[root@server86 README_FILES]# cd /etc/pki/tls/certs/
[root@server86 certs]# make postfix.pem (证书名称可任意)
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:shanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:westos
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:server86.example.com
Email Address []:[email protected]
[root@server86 certs]# mv postfix.pem /etc/postfix/
[root@server86 certs]# postconf -e smtpd_tls_cert_file=/etc/postfix/postfix.pem
[root@server86 certs]# /etc/init.d/postfix restart
按上图配置thunderbird