实战部署Postfix+MySQL+Dovecot+Postfixadmin+Extmail邮件系统(3)
-----构建开源邮件系统系列
如果您对本系列文章感兴趣,可以通过点击以下链接查看全文:
点击 《实战部署MySQL用户认证的Postfix邮件系统(1)》 查看第一篇
点击 《实战部署MySQL用户认证的Postfix邮件系统(2)》 查看第二篇
点击 《实战部署MySQL用户认证的Postfix邮件系统(3)》 查看第三篇
六、
Dovecot
的安装与配置
Dovecot
是一个开源的
IMAP
、
POP3
服务器,它支持
MySQL
、
PostgreSQL
、
LDAP
、
PAM
等的认证,这方面基本上和
Courier-IMAP
是相同的。但是在设置上却比
Courier-IMAP
简单了许多。同时
Dovecot
可以做
imap/pop3
、
mda
角色的工作。执行如下命令完成
Dovecot
安装。
[root@mail html]# yum install dovecot
安装完成后,就开始配置工作,编辑
/etc/dovecot.conf
为以下内容
[root@mail html]# cat /etc/dovecot.conf
base_dir=/var/run/dovecot
protocols=imap pop3
listen=*
disable_plaintext_auth = no
ssl_disable = yes
mail_location = maildir:/var/spool/mail/%d/%n
auth default {
mechanisms = PLAIN LOGIN CRAM-MD5 DIGEST-MD5
passdb sql {
args = /etc/dovecot-mysql.conf
}
userdb sql {
args = /etc/dovecot-mysql.conf
}
socket listen {
client {
path = /var/run/dovecot/auth-client
mode = 0660
user = postfix
group = postfix
}
}
}
first_valid_uid = 1000
[root@mail html]#
base_dir=/var/run/dovecot
protocols=imap pop3
listen=*
disable_plaintext_auth = no
ssl_disable = yes
mail_location = maildir:/var/spool/mail/%d/%n
auth default {
mechanisms = PLAIN LOGIN CRAM-MD5 DIGEST-MD5
passdb sql {
args = /etc/dovecot-mysql.conf
}
userdb sql {
args = /etc/dovecot-mysql.conf
}
socket listen {
client {
path = /var/run/dovecot/auth-client
mode = 0660
user = postfix
group = postfix
}
}
}
first_valid_uid = 1000
[root@mail html]#
编辑
/etc/dovecot-mysql.conf
为以下内容,这个配置文件主要用于连接
MySQL
数据库。
[root@mail html]# cat /etc/dovecot-mysql.conf
driver = mysql
connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=postfix
default_pass_scheme = MD5
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1000 AS uid, 1000 AS gid FROM mailbox WHERE username = '%u'
[root@mail html]#
driver = mysql
connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=postfix
default_pass_scheme = MD5
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1000 AS uid, 1000 AS gid FROM mailbox WHERE username = '%u'
[root@mail html]#
启动
dovecot
服务,并设为开机自动运行。
[root@mail html]# /etc/init.d/dovecot start
Starting Dovecot Imap: [ OK ]
[root@mail html]# chkconfig --level 35 dovecot on
Starting Dovecot Imap: [ OK ]
[root@mail html]# chkconfig --level 35 dovecot on
七、
Extmail
的配置
通过上面的设置我们已经完成了一个基本的邮件服务器系统,它能够发送、接收邮件,能够对用户进行身份验证等工作。用户可以使用
Outlook
、
Foxmail
之类的工具来发送和接收邮件。
对于用户临时查看一下邮件,他们就不需要将邮件下载到本机查看。这个时候我们可以为用户搭建一个
Webmail
吧。
基于我们已经完成的邮件服务器,我们只需要给用户提供一个基于浏览器访问的
mail
工具就可以了。这类工具有很多:
OpenWebmail
、
Extmail
等。
Extmail
是一个以
perl
语言编写,面向大容量
/ISP
级应用,免费的高性能
Webmail
软件,
ExtMail
套件用于提供从浏览器中登录、使用邮件系统的
Web
操作界面,它以
GPL
版权释出,设计初衷是希望设计一个适应当前高速发展的
IT
应用环境,满足用户多变的需求,能快速进行开发、改进和升级,适应能力强的
webmail
系统。
对于国内的电子邮件系统来说,无论是从系统功能、易用性还是中文化等方面,
ExtMail
平台都是一个相当不错的选择。
Extmail
套件可以提供给普通邮件用户使用,而
Extman
套件可以提供给邮件系统的管理员使用。更多关于
Extmail
的介绍请
baidu
之。
Extmail
安装也比较简单先在
/var/www
先创建一个用于存放
Extmail
的目录
extsuite
,然后将下载回来的
extmail
解压到该目录下,并将解压后的目录修改为
extmail
。
[root@mail ~]# mkdir /var/www/extsuite
[root@mail ~]# tar -zxvf extmail-1.2.tar.gz -C /var/www/extsuite/
[root@mail extsuite]# mv extmail-1.2/ extmail
[root@mail ~]# tar -zxvf extmail-1.2.tar.gz -C /var/www/extsuite/
[root@mail extsuite]# mv extmail-1.2/ extmail
接下来编辑配置文件,使其能够和
Postfix
邮件服务器结合起来提供服务,修改部分配置信息如下:
[root@mail extsuite]# cp extmail/webmail.cf.
default extmail/webmail.cf
SYS_USER_LANG = en_US #默认语言,修改为zh_CN
SYS_USER_CHARSET = utf-8 #Web界面默认的字符集,修改为gb2312
SYS_MIN_PASS_LEN = 2 #最小的密码长度,修改为6
SYS_MFILTER_ON = 1 #打开过滤器
SYS_NETDISK_ON = 1 #打开网络硬盘
SYS_AUTH_TYPE = mysql #使用MySQL数据库的认证方式
SYS_MAILDIR_BASE = /home/domains #邮箱的存储路径,修改为实际路径/var/spool/mail
SYS_MYSQL_USER = db_user #访问MySQL数据库的用户名,改为postfix
SYS_MYSQL_PASS = db_pass #使用的密码,改为postfix
SYS_MYSQL_DB = extmail #访问的库,改为postfix
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
#SYS_MYSQL_ATTR_CLEARPW = clearpwd #修改密码相关行
SYS_MYSQL_ATTR_QUOTA = quota
SYS_MYSQL_ATTR_NDQUOTA = netdiskquota
SYS_MYSQL_ATTR_HOME = homedir
SYS_MYSQL_ATTR_MAILDIR = maildir
SYS_G_ABOOK_TYPE = file #使用文件方式来保存全局通讯录
SYS_G_ABOOK_FILE_PATH = /var/www/extsuite/extmail/globabook.cf
SYS_G_ABOOK_FILE_LOCK = 1
SYS_G_ABOOK_FILE_CONVERT = 0
SYS_G_ABOOK_FILE_CHARSET = utf-8 #全局通讯录的字符集,改为gb2312
SYS_USER_LANG = en_US #默认语言,修改为zh_CN
SYS_USER_CHARSET = utf-8 #Web界面默认的字符集,修改为gb2312
SYS_MIN_PASS_LEN = 2 #最小的密码长度,修改为6
SYS_MFILTER_ON = 1 #打开过滤器
SYS_NETDISK_ON = 1 #打开网络硬盘
SYS_AUTH_TYPE = mysql #使用MySQL数据库的认证方式
SYS_MAILDIR_BASE = /home/domains #邮箱的存储路径,修改为实际路径/var/spool/mail
SYS_MYSQL_USER = db_user #访问MySQL数据库的用户名,改为postfix
SYS_MYSQL_PASS = db_pass #使用的密码,改为postfix
SYS_MYSQL_DB = extmail #访问的库,改为postfix
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
#SYS_MYSQL_ATTR_CLEARPW = clearpwd #修改密码相关行
SYS_MYSQL_ATTR_QUOTA = quota
SYS_MYSQL_ATTR_NDQUOTA = netdiskquota
SYS_MYSQL_ATTR_HOME = homedir
SYS_MYSQL_ATTR_MAILDIR = maildir
SYS_G_ABOOK_TYPE = file #使用文件方式来保存全局通讯录
SYS_G_ABOOK_FILE_PATH = /var/www/extsuite/extmail/globabook.cf
SYS_G_ABOOK_FILE_LOCK = 1
SYS_G_ABOOK_FILE_CONVERT = 0
SYS_G_ABOOK_FILE_CHARSET = utf-8 #全局通讯录的字符集,改为gb2312
在
apache
主配置文件中添加如下内容:
[root@mail ~]# vim /etc/httpd/conf/httpd.conf
……
NameVirtualHost 10.1.1.120:80
ServerName mail.xifeng.com
ServerAdmin [email protected]
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html
Alias /postfixadmin /var/www/html/postfixadmin
SuexecUserGroup postfix postfix
"/var/www/extsuite/extmail/html">
Order allow,deny
Allow from all
……
NameVirtualHost 10.1.1.120:80
ServerName mail.xifeng.com
ServerAdmin [email protected]
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html
Alias /postfixadmin /var/www/html/postfixadmin
SuexecUserGroup postfix postfix
Order allow,deny
Allow from all
修改
extsuite
目录的用户和组的权限为
postfix
:
[root@mail ~]# chown -R postfix.postfix /var/www/extsuite/
编辑完成后保存重启
apache
服务:
[root@mail extsuite]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
安装
Extmail
所需的
perl
模块,如果你没有安装,通常使用
web
登录的过程中会有提示。
[root@mail ~]# rpm -ivh perl-Unix-Syslog-0.100-1.2.el5.rf.i386.rpm
warning: perl-Unix-Syslog-0.100-1.2.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing... ########################################### [100%]
1:perl-Unix-Syslog ########################################### [100%]
[root@mail ~]#
warning: perl-Unix-Syslog-0.100-1.2.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6
Preparing... ########################################### [100%]
1:perl-Unix-Syslog ########################################### [100%]
[root@mail ~]#
八、
客户端测试
Extmail
登录测试,直接使用
http://mail.xifeng.com/extmail
即可
输入邮件账户和密码点击“登录”后,如下图所示:
在
Windows
下可以配置
OE
或
formail
等客户端程序:
九、常见问题
报错1:
执行
rpm –i postfix-2.3.3-2.src.rpm
报
error: cannot create %sourcedir /usr/src/redhat/SOURCES
错误?
[root@localhost postfix]# rpm -i postfix-2.3.3-2.src.rpm
error: cannot create %sourcedir /usr/src/redhat/SOURCES
error: cannot create %sourcedir /usr/src/redhat/SOURCES
解决方法:
由于没有安装
rpm-build
执行
yum install rpm-build安装即可。
报错2:
执行
rpmbuild -ba SPECS/postfix.spec
报
error: Failed build dependencies: pcre-devel is needed by postfix-2.3.3-2.i386
错误?
[root@localhost redhat]# rpmbuild -ba SPECS/postfix.spec
error: Failed build dependencies:
pcre-devel is needed by postfix-2.3.3-2.i386
error: Failed build dependencies:
pcre-devel is needed by postfix-2.3.3-2.i386
解决方法:
由于
rpmbuild
编译过程中依赖的
pcre-devel
软件包没有安装,执行如下命令安装即可。
[root@localhost redhat]# yum install pcre-devel
报错3:
在使用
http://mail.xifeng.com/extmail
访问
extmail
过程中提示“
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
”
解决方法:下载perl-Unix-Syslog-这个rpm软件包安装即可。
报错4:
在使用http://mail.xifeng.com/extmail访问extmail,输入用户名和密码,选择登录后提示“Can't chdir to /var/spool/mail/xifeng.com/yujinlong/, Permission denied”
解决方法:
(
1
)按照错误提示由于权限的原因,使用
ll
命令检查,发现
postfix
用户有权限
[root@mail ~]# ll /var/spool/mail/
total 8
-rw-rw---- 1 rpc mail 0 Jan 19 00:07 rpc
drwx------ 3 postfix postfix 4096 Jan 21 23:07 xifeng.com
total 8
-rw-rw---- 1 rpc mail 0 Jan 19 00:07 rpc
drwx------ 3 postfix postfix 4096 Jan 21 23:07 xifeng.com
(
2
)使用
ps –ef|grep httpd
发现
apache
的程序运行用户是
apache
[root@mail ~]# ps -ef |grep httpd
root 1260 3676 0 07:55 pts/2 00:00:00 grep httpd
root 27239 1 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27241 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27242 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27243 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27244 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27245 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27246 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27247 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27248 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
root 1260 3676 0 07:55 pts/2 00:00:00 grep httpd
root 27239 1 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27241 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27242 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27243 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27244 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27245 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27246 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27247 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
apache 27248 27239 0 Jan21 ? 00:00:00 /usr/sbin/httpd
所以,可以将apache的user和group修改为postfix,或者使用apache的suexec模块。
报错5:
在使用postfixadmin管理工具添加超级管理员的时候,提示“管理员名不是一个合法的邮件地址!”如下图所示:
解决方法:
在postfixadmin配置文件config.inc.php中找到$CONF['emailcheck_resolve_domain']='YES';行将YES修改为NO。
由于老是提示文章篇幅超过8万字符,特分为几篇发布,
点击 《实战部署MySQL用户认证的Postfix邮件系统(1)》
查看第一篇
点击 《实战部署MySQL用户认证的Postfix邮件系统(2)》 查看第二篇
点击 《实战部署MySQL用户认证的Postfix邮件系统(3)》 查看第三篇