本文参考http://wiki.extmail.org/extmail_solution_for_linux_centos-5,内容和病毒过滤不在本文之内,如需配置请参考官方文档。下面是在CentOS-5 32位系统的安装实录。
制作_yum_仓库
编译CentOS-Base.repo文件
- vi /etc/yum.repos.d/CentOS-Base.repo
加入如下内容:
- # EMOS-Base.repo
- #
- # Created by ExtMail Dev Team: http://www.extmail.org/
- #
- # $Id$
-
- [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/
- gpgcheck=0
- priority=0
- protect=0
保存后,然后尝试执行一下yum list 等操作,看看是否已经成功;
关闭防火墙:/etc/init.d/iptables stop
关闭selinux:/usr/sbin/setenforce 0
配置mta-postfix
1、安装postfix
- # yum -y install postfix
- # yum remove sendmail
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:
- # vi /etc/postfix/main.cf
增加如下内容:
- # hostname
- mynetworks = 127.0.0.1
- myhostname = mail.centos.bz
- mydestination = $mynetworks $myhostname
-
- # banner
- mail_name = Postfix - by extmail.org
- 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
注:myhostname改为自己的。
设置postfix开机自启:
配置courier-authlib
1、安装Courier-Authlib
安装以下软件包:
- # yum -y install courier-authlib
- # yum -y install courier-authlib-mysql
删除并编辑/etc/authlib/authmysqlrc文件:
- # cat /dev/null >/etc/authlib/authmysqlrc
- # 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 SELECT username,password,"",uidnumber,gidnumber,\
- CONCAT('/home/domains/',homedir), \
- CONCAT('/home/domains/',maildir), \
- quota, \
- name \
- FROM mailbox \
- WHERE username = '$(local_part)@$(domain)'
修改authdaemonrc文件
- # vi /etc/authlib/authdaemonrc
修改如下内容:
- authmodulelist="authmysql"
- authmodulelistorig="authmysql"
或者使用如下命令直接修改:
- sed -i 's/authmodulelist=.*/authmodulelist="authmysql"/g' /etc/authlib/authdaemonrc
- sed -i 's/authmodulelistorig=.*/authmodulelistorig="authmysql"/g' /etc/authlib/authdaemonrc
2、启动courier-authlib:
- # service courier-authlib start
修改authdaemon socket目录权限
- # chmod 755 /var/spool/authdaemon/
配置maildrop
1、安装maildrop
- # yum -y install maildrop
配置master.cf 为了使Postfix支持Maildrop,必须修改/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前面有“两个空格”
配置main.cf 由于maildrop不支持一次接收多个收件人,因此必须在main.cf里增加如下参数:
- # vi /etc/postfix/main.cf
- maildrop_destination_recipient_limit = 1
2、测试maildrop对authlib支持
看是否出现以下内容:
- 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.
配置apache
1、安装httpd
2、虚拟主机设置
编辑httpd.conf文件:
- # vi /etc/httpd/conf/httpd.conf
在最后一行加上:
- NameVirtualHost *:80
- Include conf/vhost_*.conf
编辑 vhost_extmail.conf
- # vi /etc/httpd/conf/vhost_extmail.conf
里面定义虚拟主机的相关内容:
- # VirtualHost for ExtMail Solution
- <VirtualHost *:80>
- ServerName mail.centos.bz
- 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>
注意:把ServerName修改成自己的。
设置apache开机启动并重启apache
- # chkconfig httpd on
- # service httpd restart
配置webmail-extmail
1、安装ExtMail
- # yum -y install extsuite-webmail
2、编辑webmail.cf
- # 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
extmail连接mysql数据库的用户名、密码及库名,如果需要修改请在此处修改,除了这里我们还需要在数据库处修改
更新cgi目录权限 由于SuEXEC的需要,必须将extmail的cgi目录修改成vuser:vgroup权限:
- # chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/
配置管理后台-extman
1、yum安装ExtMan
- # yum -y 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
注意事项:
由于RedHat发行版中包含了一个叫tmpwatch的工具,该工具会定期扫描/tmp/下的文件,如果这些文件很久都没被使用,将被删除,因此如果后台长期不使用,/tmp/extman目录有可能被tmpwatch删除,所以要么定期登陆后台,要么修改 webman.cf将临时目录修改到另一个地方。此处暂以/tmp/extman默认值为例。
2、安装mysql数据库
- # yum -y install mysql mysql-server
3、数据库初始化
启动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
建议及时修改mysql用户root密码,并限制远程登录,相关命令请上网查询。
如果需要修改extmail数据库默认的库名、用户名及密码须在导入前修改extmail.sql文件
如extmail用户名密码的修改须修改这句:
INSERT INTO user (Host, User, Password) VALUES ('localhost','extmail',password('extmail'));
如果需要修改extmail默认的域名后缀等信息,须修改init.sql,将其中的@extmail.org全部修改为你的域名。
注意事项:
上述导入初始化SQL时,默认的uidnumber/gidnumber都是1000,这和vuser:vgroup 的uid/gid一致,是因为maildrop投递时会从数据库里取uidnumber/gidnumber,而在master.cf里已经定义好了投递时的运行身份(vuser:vgroup),所以这两个字段的内容必须为1000,否则将出现投递错误,例如报0×06等错误。
4、设置虚拟域和虚拟用户的配置文件
- # 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/
配置main.cf:
- # 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:
重启postfix :
- # service postfix restart
5、测试authlib
结果如下:
Authentication succeeded.
Authenticated: [email protected] (uid 1000, gid 1000)
Home Directory: /home/domains/extmail.org/postmaster
Maildir: /home/domains/extmail.org/postmaster/Maildir/
Quota: 104857600S
Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0
Cleartext Password: extmail
Options: (none)
这样表明ExtMan的正确安装,数据库也正确导入,courier-authlib能正确连接到mysql数据库
最后访问http://mail.centos.bz/extmail/,如无意外,将看到webmail的登陆页,不过此时还没有加正式的用户,所以不能登陆,包括[email protected]也不行。必须要登陆到http://mail.centos.bz/extman/ 里增加一个新帐户才能登陆。
ExtMan的默认超级管理员帐户:[email protected],初始密码:extmail*123*,登陆成功后,建议将密码修改,以确保安全。
6、配置图形化日志
启动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里,点“图形日志”即可看到图形化的日志。具体每天,周,月,年的则点击相应的图片进入即可。
配置cyrus-sasl
1、安装cyrus-sasl
删除系统的cyrus-sasl:
- # rpm -e cyrus-sasl --nodeps
安装新的支持authdaemon的软件包
- # yum -y install cyrus-sasl cyrus-sasl-plain
这里注意删除cyrus-sasl的时候须附带着删除cyrus-sasl-lib,否则在重新安装cyrus-sasl的时候会报下面的错误
Error: Missing Dependency: cyrus-sasl-lib = 2.1.22-5.el5_4.3 is needed by package cyrus-sasl-md5-2.1.22-5.el5_
4.3.i386 (installed)
因此这里的操作为
#rpm –e cyrus-sasl –nodeps
#rpm –e cyrus-sasl-lib –nodeps
#yum install cyrus-sasl
#yum install cyrus-sasl-lib
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 =
- 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
3、编辑smtpd.conf文件
- # vi /usr/lib/sasl2/smtpd.conf(64位路径在/usr/lib64/sasl2/smtpd.conf)
确保其内容为:
- pwcheck_method: authdaemond
- log_level: 3
- mech_list: PLAIN LOGIN
- authdaemond_path:/var/spool/authdaemon/socket
重新启动postfix:
- # service postfix restart
4、测试SMTP认证
(smtp认证,容易过不去,纠结很长时间,主要原因还是smtpd.conf文件,看着不错,建议手工打一边,字数不多,或者先保存在一个txt文档中,在贴到配置文件中,不要直接从网页上复制粘贴,很可能会出现各种吐血的问题。)
通过以下命令获得[email protected]的用户名及密码的BASE64编码:
- # perl -e 'use MIME::Base64; print encoolcode_base64("postmaster\@extmail.org")'
- (命令有错误:应该为encode_base64)
内容如下:
cG9zdG1hc3RlckBleHRtYWlsLm9yZw==
- # perl -e 'use MIME::Base64; print encoolcode_base64("extmail")'
内容如下:
ZXh0bWFpbA==
然后本机测试:
其过程如下:
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-ENHANCEDSTATUScoolcodeS
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 表明认证成功了。
留个纪念,这个successful可是纠结我了好长时间- -
配置courier-imap
1、安装Courier-imap
默认的courier-authlib及courier-imap都会增加系统自启动设置,因此下一次服务器启动将自动启动相应的authlib及POP3服务
- # yum -y 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
修改内容如下:
- # vi /usr/lib/courier-imap/etc/imapd-ssl
修改内容如下:
然后重新启动courier-imap:
- # service courier-imap start
测试POP3 请按如下步骤输入pop3命令测试其是否正常工作,注意蓝色的信息是我们输入到POP3服务器的(请首先登录extman自行建立[email protected]用户,密码:extmail)
其过程如下:
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
+OK Hello there.
user [email protected] << 输入内容
+OK Password required.
pass extmail << 输入内容
+OK logged in.
list << 输入内容
+OK POP3 clients that break here, they violate STD53.
.
quit << 输入内容
+OK Bye-bye.
Connection closed by foreign host.
最后说明
至此,ExtMail的安装配置基本完成,如想配置内容,病毒过滤请到官方网站学习配置。登录extmail系统后台后,请及时修改密码或者用户名。最后需要确认的是,是否已经设置好邮件域名的MX记录或者A记录,这样才能正常收取邮件。
FAQ
1、64位系统可能安装不上courier-imap。请参考http://hahayong.blog.51cto.com/231965/530016
取消后台登录的验证码:
vim /var/www/extsuite/extman/webman.cf
SYS_CAPTCHA_ON = 0 验证码开关,0关闭验证码,1打开验证码
SYS_CAPTCHA_LEN = 2 后台验证码长度
文章原地址:http://www.centos.bz/2011/10/centos-5-install-extmail-webmail/