实战部署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]#
编辑 /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]#
启动dovecot服务,并设为开机自动运行。
[root@mail html]# /etc/init.d/dovecot start
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
接下来编辑配置文件,使其能够和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
在apache主配置文件中添加如下内容:
[root@mail ~]# vim /etc/httpd/conf/httpd.conf
……
NameVirtualHost 10.1.1.120:80
<VirtualHost 10.1.1.120:80>
ServerName mail.xifeng.com
ServerAdmin admin@xifeng.com
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
</VirtualHost>
<Directory "/var/www/extsuite/extmail/html">
Order allow,deny
Allow from all
</Directory>
修改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    ]
安装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 ~]#
八、客户端测试
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
解决方法:由于没有安装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
解决方法:由于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
(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

所以,可以将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)》 查看第三篇

转载于:https://blog.51cto.com/baidu/1123483

实战部署MySQL用户认证的Postfix邮件系统(3)相关推荐

  1. whale系统实战,聊聊用户认证

    Stay Hungry,Stay Foolish. --乔布斯 写在前面 上次老猫和大家说过想要开发一个系统,从简单的权限开始做起,有的网友表示还是挺支持的,但是有的网友嗤之以鼻,认为太简单了,不过也 ...

  2. Flask Web开发基础实战-1.0用户认证与注册模块

    目录: 前言: 一,账户密码安全性 使用Werkzeug实现密码散列 二,创建登录的认证蓝本 三,Flask-Login认证用户 1.用于登录的用户数据库模型 2.保护路由 3.添加登录表单 4.登入 ...

  3. myeclipse 实现框架 spring+springmvc+springsecurity+myibatis+mysql用户认证和人员增删改查

    一直想学习spring的框架结构和配置结构,利用周末借鉴诸多网友的精华,实现了下 1. 工具myeclipse 2. 框架springMVC+springSecurity+myibatis 3. 数据 ...

  4. 在RHEL5下构建基于系统用户的Postfix邮件系统

    在Linuxt服务中构建Postfix邮件服务器,在客户端可以通过Outlook Express.Web界面来收发邮件,我们需要先配置一下Apache.MYsql.PHP平台,另外还少不了DNS的支持 ...

  5. STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)

    STS创建Spring Boot项目实战(Rest接口.数据库.用户认证.分布式Token JWT.Redis操作.日志和统一异常处理) 1.项目创建 1.新建工程 2.选择打包方式,这边可以选择为打 ...

  6. mysql开启邮件服务_邮件服务之实现基于虚拟用户的虚拟域邮件系统

    postfix+dovecot+SASL+mysql+apache+extmail+extman实现基于虚拟用户的虚拟域邮件系统 声明:省略了前面的基础配置包括安装MYSQL,postfix等,这里用 ...

  7. Shiro与SpringBoot整合,实现登录拦截、用户认证、用户授权等。实战demo

    文章目录 开篇必读: 一.开发环境 二.项目搭建 三.配置 shiro 配置类 1.自定义 Realm 类. 2.创建shiro配置类. 四.创建页面.Controller. Service等. 五. ...

  8. linux ftp 团队认证,linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建

    linux下ftp和ftps以及ftp基于mysql虚拟用户认证服务器的搭建 1.FTP协议:有命令和数据连接两种 命令连接,控制连接:21/tcp 数据连接: 主动模式,运行在20/tcp端口 和 ...

  9. python 用户认证_python基于mysql的用户认证

    首先,创建mysql用户users表 1 2 3 4 5 create table users ( id int NOT NULL primary key auto_increment, userna ...

最新文章

  1. gtest简介及简单使用
  2. springMVC入门截图
  3. 推荐远程办公的产品软件
  4. Codeforces Beta Round #5 C. Longest Regular Bracket Sequence 栈/dp
  5. Android JNI 编程
  6. mysql 树表删除无效节点
  7. 拆解食饮新消费品牌的增长密码
  8. linux中的socket编程,linux中socket编程
  9. 使用Anaconda安装tensorflow
  10. php mysql 多行_php-更新MySQL中的多行而没有循环
  11. 迭代开发个人总结20160627
  12. 美国发布新的安全备忘录,提升关键基础设施的网络安全
  13. Android项目clean之后R.java文件丢失解决办法
  14. JavaScript算法 之 选择排序
  15. [渝粤教育] 西南科技大学 公共事业管理概论 在线考试复习资料
  16. 从Rust到远方:C星系
  17. python while循环的用法_Python while循环语句详解
  18. Python绘制直方图(Histograms)—从文件中读取数据画图update@2017-05-17
  19. cocos creator麻将教程系列(八)—— 达达麻将语音聊天源码分析
  20. 蛋糕究竟是怎样做大的

热门文章

  1. 软件工程专业学生如何在研二期间通过六级——我的六级之路
  2. 第二、三章:信息系统项目管理基础与立项管理-章节真题
  3. 笔记-项目风险管理-风险应对
  4. 实战(多图):旧路由器刷panabit系统!一台路由器的新生……
  5. 项目经理这些技能,是项目成功的关键保障
  6. AndroidStudio中提示:android.content.res.Resources NotFoundException: String resource ID 0x
  7. SpringBoot中使用thymeleaf时点击按钮触发事件失败
  8. springboot-静态资源配置原理
  9. 《系统集成项目管理》第六章 项目整体管理
  10. 【NLP】Task3:特征选择