博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实战部署MySQL用户认证的Postfix邮件系统(3)
阅读量:7057 次
发布时间:2019-06-28

本文共 6703 字,大约阅读时间需要 22 分钟。

实战部署Postfix+MySQL+Dovecot+Postfixadmin+Extmail邮件系统(3)

-----
构建开源邮件系统系列

如果您对本系列文章感兴趣,可以通过点击以下链接查看全文:
点击   查看第一篇
点击   查看第二篇
点击   查看第三篇

六、 Dovecot
的安装与配置

Dovecot
是一个开源的 IMAP
POP3
服务器,它支持  MySQL 
 PostgreSQL 
LDAP 
PAM 
等的认证,这方面基本上和  Courier-IMAP 
是相同的。但是在设置上却比 Courier-IMAP
简单了许多。同时 Dovecot
可以做 imap/pop3 
mda
角色的工作。执行如下命令完成 Dovecot
安装。

InBlock.gif[root@mail html]# yum install dovecot

安装完成后,就开始配置工作,编辑  /etc/dovecot.conf 
为以下内容

InBlock.gif[root@mail html]# cat /etc/dovecot.conf 

InBlock.gifbase_dir=/var/run/dovecot 

InBlock.gifprotocols=imap pop3 

InBlock.giflisten=* 

InBlock.gifdisable_plaintext_auth = no 

InBlock.gifssl_disable = yes 

InBlock.gifmail_location = maildir:/var/spool/mail/%d/%n 

InBlock.gif

InBlock.gifauth 
default { 

InBlock.gif    mechanisms = PLAIN LOGIN CRAM-MD5 DIGEST-MD5 

InBlock.gif        passdb sql { 

InBlock.gif                        args = /etc/dovecot-mysql.conf 

InBlock.gif        } 

InBlock.gif        userdb sql { 

InBlock.gif                        args = /etc/dovecot-mysql.conf 

InBlock.gif        } 

InBlock.gif        socket listen { 

InBlock.gif                        client { 

InBlock.gif                                    path = /var/run/dovecot/auth-client 

InBlock.gif                                    mode = 0660 

InBlock.gif                                    user = postfix 

InBlock.gif                                    group = postfix 

InBlock.gif                                } 

InBlock.gif        } 

InBlock.gif

InBlock.giffirst_valid_uid = 1000 

InBlock.gif[root@mail html]#

编辑  /etc/dovecot-mysql.conf 
为以下内容,这个配置文件主要用于连接 MySQL
数据库。

InBlock.gif[root@mail html]# cat /etc/dovecot-mysql.conf 

InBlock.gifdriver = mysql 

InBlock.gifconnect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=postfix 

InBlock.gifdefault_pass_scheme = MD5 

InBlock.gifpassword_query = SELECT password FROM mailbox WHERE username = '%u' 

InBlock.gifuser_query = SELECT maildir, 1000 AS uid, 1000 AS gid FROM mailbox WHERE username = '%u' 

InBlock.gif[root@mail html]#

启动 dovecot
服务,并设为开机自动运行。

InBlock.gif[root@mail html]# /etc/init.d/dovecot start 

InBlock.gifStarting Dovecot Imap:                                                                         [    OK    ] 

InBlock.gif[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

InBlock.gif[root@mail ~]# mkdir /var/www/extsuite 

InBlock.gif[root@mail ~]# tar -zxvf extmail-1.2.tar.gz -C /var/www/extsuite/ 

InBlock.gif[root@mail extsuite]# mv extmail-1.2/ extmail
接下来编辑配置文件,使其能够和 Postfix
邮件服务器结合起来提供服务,修改部分配置信息如下:
InBlock.gif[root@mail extsuite]# cp extmail/webmail.cf.
default extmail/webmail.cf 

InBlock.gifSYS_USER_LANG = en_US                                #默认语言,修改为zh_CN 

InBlock.gifSYS_USER_CHARSET = utf-8                            #Web界面默认的字符集,修改为gb2312 

InBlock.gifSYS_MIN_PASS_LEN = 2                                 #最小的密码长度,修改为6 

InBlock.gifSYS_MFILTER_ON = 1                                    #打开过滤器 

InBlock.gifSYS_NETDISK_ON = 1                                   #打开网络硬盘 

InBlock.gifSYS_AUTH_TYPE = mysql                              #使用MySQL数据库的认证方式 

InBlock.gifSYS_MAILDIR_BASE = /home/domains           #邮箱的存储路径,修改为实际路径/var/spool/mail 

InBlock.gif

InBlock.gifSYS_MYSQL_USER = db_user                          #访问MySQL数据库的用户名,改为postfix 

InBlock.gifSYS_MYSQL_PASS = db_pass                         #使用的密码,改为postfix 

InBlock.gifSYS_MYSQL_DB = extmail                             #访问的库,改为postfix 

InBlock.gifSYS_MYSQL_HOST = localhost 

InBlock.gifSYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock 

InBlock.gif

InBlock.gifSYS_MYSQL_TABLE = mailbox 

InBlock.gifSYS_MYSQL_ATTR_USERNAME = username 

InBlock.gifSYS_MYSQL_ATTR_DOMAIN = domain 

InBlock.gifSYS_MYSQL_ATTR_PASSWD = password 

InBlock.gif#SYS_MYSQL_ATTR_CLEARPW = clearpwd         #修改密码相关行 

InBlock.gifSYS_MYSQL_ATTR_QUOTA = quota 

InBlock.gifSYS_MYSQL_ATTR_NDQUOTA = netdiskquota 

InBlock.gifSYS_MYSQL_ATTR_HOME = homedir 

InBlock.gifSYS_MYSQL_ATTR_MAILDIR = maildir 

InBlock.gif

InBlock.gifSYS_G_ABOOK_TYPE = file                             #使用文件方式来保存全局通讯录 

InBlock.gifSYS_G_ABOOK_FILE_PATH = /var/www/extsuite/extmail/globabook.cf 

InBlock.gifSYS_G_ABOOK_FILE_LOCK = 1 

InBlock.gifSYS_G_ABOOK_FILE_CONVERT = 0 

InBlock.gifSYS_G_ABOOK_FILE_CHARSET = utf-8              #全局通讯录的字符集,改为gb2312
apache
主配置文件中添加如下内容:

InBlock.gif[root@mail ~]# vim /etc/httpd/conf/httpd.conf 

InBlock.gif…… 

InBlock.gifNameVirtualHost 10.1.1.120:80 

InBlock.gif<VirtualHost 10.1.1.120:80> 

InBlock.gifServerName mail.xifeng.com 

InBlock.gifServerAdmin admin@xifeng.com 

InBlock.gifDocumentRoot /var/www/extsuite/extmail/html/ 

InBlock.gifScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi 

InBlock.gifAlias /extmail /var/www/extsuite/extmail/html 

InBlock.gifAlias /postfixadmin /var/www/html/postfixadmin 

InBlock.gifSuexecUserGroup postfix postfix 

InBlock.gif</VirtualHost> 

InBlock.gif<Directory 
"/var/www/extsuite/extmail/html"

InBlock.gifOrder allow,deny 

InBlock.gifAllow from all 

InBlock.gif</Directory>
修改
extsuite
目录的用户和组的权限为
postfix

InBlock.gif[root@mail ~]# chown -R postfix.postfix /var/www/extsuite/
编辑完成后保存重启
apache
服务:
InBlock.gif[root@mail extsuite]# /etc/init.d/httpd restart 

InBlock.gifStopping httpd:                                                                                        [    OK    ] 

InBlock.gifStarting httpd:                                                                                        [    OK    ]
安装
Extmail
所需的
perl
模块,如果你没有安装,通常使用
web
登录的过程中会有提示。

InBlock.gif[root@mail ~]# rpm -ivh perl-Unix-Syslog-0.100-1.2.el5.rf.i386.rpm 

InBlock.gifwarning: perl-Unix-Syslog-0.100-1.2.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6 

InBlock.gifPreparing...                 ########################################### [100%] 

InBlock.gif1:perl-Unix-Syslog       ########################################### [100%] 

InBlock.gif[root@mail ~]#

八、
客户端测试

Extmail
登录测试,直接使用
即可

233059577.png
输入邮件账户和密码点击“登录”后,如下图所示:

233240974.png
   在
Windows
下可以配置
OE
formail
等客户端程序:

233418501.png
九、常见问题

报错1

执行
rpm –i postfix-2.3.3-2.src.rpm 
error: cannot create %sourcedir /usr/src/redhat/SOURCES
错误?

InBlock.gif[root@localhost postfix]# rpm -i postfix-2.3.3-2.src.rpm 

InBlock.giferror: 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
错误?
InBlock.gif[root@localhost redhat]# rpmbuild -ba SPECS/postfix.spec 

InBlock.giferror: Failed build dependencies: 

InBlock.gif                pcre-devel 
is needed by postfix-2.3.3-2.i386

解决方法:
由于 rpmbuild
编译过程中依赖的 pcre-devel
软件包没有安装,执行如下命令安装即可。
InBlock.gif[root@localhost redhat]# yum install pcre-devel
报错3:
在使用
访问 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:
在使用访问extmail,输入用户名和密码,选择登录后提示“Can't chdir to /var/spool/mail/xifeng.com/yujinlong/, Permission denied”
解决方法:

1
)按照错误提示由于权限的原因,使用
ll
命令检查,发现
postfix
用户有权限

InBlock.gif[root@mail ~]# ll /var/spool/mail/ 

InBlock.giftotal 8 

InBlock.gif-rw-rw---- 1 rpc         mail             0 Jan 19 00:07 rpc 

InBlock.gifdrwx------ 3 postfix postfix 4096 Jan 21 23:07 xifeng.com
2
)使用
ps –ef|grep httpd
发现
apache
的程序运行用户是
apache

InBlock.gif[root@mail ~]# ps -ef |grep httpd 

InBlock.gifroot            1260    3676    0 07:55 pts/2        00:00:00 grep httpd 

InBlock.gifroot         27239         1    0 Jan21 ?                00:00:00 /usr/sbin/httpd 

InBlock.gifapache     27241 27239    0 Jan21 ?                00:00:00 /usr/sbin/httpd 

InBlock.gifapache     27242 27239    0 Jan21 ?                00:00:00 /usr/sbin/httpd 

InBlock.gifapache     27243 27239    0 Jan21 ?                00:00:00 /usr/sbin/httpd 

InBlock.gifapache     27244 27239    0 Jan21 ?                00:00:00 /usr/sbin/httpd 

InBlock.gifapache     27245 27239    0 Jan21 ?                00:00:00 /usr/sbin/httpd 

InBlock.gifapache     27246 27239    0 Jan21 ?                00:00:00 /usr/sbin/httpd 

InBlock.gifapache     27247 27239    0 Jan21 ?                00:00:00 /usr/sbin/httpd 

InBlock.gifapache     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万字符,特分为几篇发布,
点击
 查看第一篇
点击  查看第二篇
点击  查看第三篇
     本文转自yjlsy 51CTO博客,原文链接:http://blog.51cto.com/baidu/1123483
,如需转载请自行联系原作者
你可能感兴趣的文章
13.9. Health Status
查看>>
Unable to execute dex: Multiple dex files define Lcom/kenai/jbosh/AbstractAttr
查看>>
微信小程序明星开发者博卡君专访
查看>>
什么是 Help Desk?
查看>>
【MySQL】Tokudb安装测试初探
查看>>
12C打补丁的简单尝试
查看>>
快速搭建主从的脚本和问题排查
查看>>
分割excel sheet
查看>>
SAP笔记-物料移动类型和后勤自动科目设置
查看>>
MySQL8.0新特性: 新的事务锁调度VATS简介
查看>>
后台(24)——Filter(1)
查看>>
[20160902]简单探究linux的free命令.txt
查看>>
Linux下PS命令详解 (转)
查看>>
使用@ResponseBody 出现错误Could not find acceptable representation
查看>>
ORA-01427single-row subquery returns more than one
查看>>
【百度地图API】如何自定义地图图层?实例:制作麻点图(自定义图层+热区)...
查看>>
【IDEA】Intellij IDEA创建的Web项目配置Tomcat并启动Maven项目
查看>>
CentOS 7 yum方式快速安装MongoDB
查看>>
C#身份证识别相关技术
查看>>
论细节决定成败
查看>>