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

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

实战
部署Postfix+MySQL+Dovecot+Postfixadmin+Extmail邮件系统(2)
-----
构建开源邮件系统系列
  如果您对本系列文章感兴趣,可以通过点击以下链接查看全文:

点击  查看第一篇
点击  查看第二篇
点击  查看第三篇
上面我们介绍了
MySQL
的查询表,接下来就来创建这个配置文件,看看文件中包含什么内容。
InBlock.gif[root@mail i386]# cat /etc/postfix/mysql_virtual_alias_maps.cf 

InBlock.gifuser = postfix 

InBlock.gifpassword = postfix 

InBlock.gifhosts = localhost 

InBlock.gifdbname = postfix 

InBlock.giftable = alias 

InBlock.gifselect_field = 
goto

InBlock.gifwhere_field = address 

InBlock.gif[root@mail i386]#
mysql_virtual_domains_maps.cf
配置文件内容:

InBlock.gif[root@mail i386]# cat /etc/postfix/mysql_virtual_domains_maps.cf 

InBlock.gifuser = postfix 

InBlock.gifpassword = postfix 

InBlock.gifhosts = localhost 

InBlock.gifdbname = postfix 

InBlock.giftable = domain 

InBlock.gifselect_field = domain 

InBlock.gifwhere_field = domain 

InBlock.gif[root@mail i386]#
mysql_virtual_mailbox_limit_maps.cf
配置文件内容:

InBlock.gif[root@mail i386]# cat /etc/postfix/mysql_virtual_mailbox_limit_maps.cf 

InBlock.gifuser = postfix 

InBlock.gifpassword = postfix 

InBlock.gifhosts = localhost 

InBlock.gifdbname = postfix 

InBlock.giftable = mailbox 

InBlock.gifselect_field = quota 

InBlock.gifwhere_field = username 

InBlock.gif[root@mail i386]#
mysql_virtual_mailbox_maps.cf
配置文件内容:

InBlock.gif[root@mail i386]# cat /etc/postfix/mysql_virtual_mailbox_maps.cf 

InBlock.gifuser = postfix 

InBlock.gifpassword = postfix 

InBlock.gifhosts = localhost 

InBlock.gifdbname = postfix 

InBlock.giftable = mailbox 

InBlock.gifselect_field = maildir 

InBlock.gifwhere_field = username 

InBlock.gif[root@mail i386]#
Postfix
的默认用户邮件存放目录是
/var/spool/mail
,由于
RedHat
默认设置的权限不是
postfix
用户本身,这里我们修改一下。笔者在搭建这个系统的过程中,由于这个目录导致使用
Webmail
登录不成功。当然我是如何发现的问题,通过看
mail
日志发现的这个问题。
InBlock.gif[root@mail i386]# ls -ld /var/spool/mail/ 

InBlock.gifdrwxrwxr-x 2 root mail 4096 Jan 19 00:07 /var/spool/mail/ 

InBlock.gif[root@mail i386]# chown postfix.postfix /var/spool/mail/ 

InBlock.gif[root@mail i386]# ls -ld /var/spool/mail/ 

InBlock.gifdrwxrwxr-x 2 postfix postfix 4096 Jan 19 00:07 /var/spool/mail/
四、
创建
Postfix
所需的数据库

hh
InBlock.gif[root@mail i386]# mysql -u root -p 

InBlock.gifEnter password: 

InBlock.gifWelcome to the MySQL monitor.    Commands end with ; or \g. 

InBlock.gifYour MySQL connection id 
is 3 

InBlock.gifServer version: 5.0.77 Source distribution 

InBlock.gif

InBlock.gifType 'help;' or '\h' 
for help. Type '\c' to clear the buffer. 

InBlock.gif

InBlock.gifmysql> create database postfix; 

InBlock.gifQuery OK, 1 row affected (0.04 sec) 

InBlock.gif

InBlock.gifmysql> create user 'postfix'@'localhost' identified by 'postfix'; 

InBlock.gifQuery OK, 0 rows affected (0.09 sec) 

InBlock.gif

InBlock.gifmysql> grant all privileges on postfix.* to postfix@'localhost'; 

InBlock.gifQuery OK, 0 rows affected (0.03 sec) 

InBlock.gif

InBlock.gifmysql> flush privileges; 

InBlock.gifQuery OK, 0 rows affected (0.00 sec)
hh
InBlock.gifmysql> show databases; 

InBlock.gif+--------------------+ 

InBlock.gif| Database                     | 

InBlock.gif+--------------------+ 

InBlock.gif| information_schema | 

InBlock.gif| mysql                            | 

InBlock.gif| postfix                        | 

InBlock.gif| test                             | 

InBlock.gif+--------------------+ 

InBlock.gif4 rows 
in set (0.29 sec) 

InBlock.gif

InBlock.gifmysql> use postfix; 

InBlock.gifDatabase changed 

InBlock.gifmysql> show tables; 

InBlock.gifEmpty set (0.00 sec) 

InBlock.gif

InBlock.gifmysql> show grants for  ;

+---------------------------------------------------------------------------------------+

| Grants for                                                            |

+---------------------------------------------------------------------------------------+

| GRANT USAGE ON *.* TO   IDENTIFIED BY PASSWORD '3ecf3e4f55dd846f' |

| GRANT ALL PRIVILEGES ON `postfix`.* TO                            |

+---------------------------------------------------------------------------------------+

2 rows in set (0.00 sec)

五、
Postfixadmin
安装与配置

Postfixadmin
postfix
邮件系统的
web
管理工具,可以通过它管理虚拟邮件主机、添加删除虚拟域、管理员、邮箱、别名以及用户等,配置工作十分简单。

安装
Postfixadmin
较简单,只要将该软件解压到
Apache
的主目录中即可。使用
rpm
包安装的
Apache
的默认路径在
/var/www/html
下。

InBlock.gif[root@mail ~]# tar -zxvf postfixadmin-2.3.6.tar.gz -C /var/www/html/ 

InBlock.gif… … 

InBlock.gifpostfixadmin-2.3.6/debian/control 

InBlock.gifpostfixadmin-2.3.6/debian/lighttpd.conf 

InBlock.gifpostfixadmin-2.3.6/debian/postfixadmin.docs 

InBlock.gifpostfixadmin-2.3.6/edit-domain.php 

InBlock.gif[root@mail ~]# cd /var/www/html/ 

InBlock.gif[root@mail html]# mv postfixadmin-2.3.6 postfixadmin
接下来设置
postfixadmin
的配置文件
config.inc.php
,主要修改下面的参数项:

InBlock.gif[root@mail html]# vim postfixadmin/config.inc.php 
InBlock.gif…… 
InBlock.gif$CONF['configured'] = true;                    //将默认的false修改为true 
InBlock.gif$CONF['default_language'] = 'cn';            // postfixadmin默认语言:"cn" 中文,"en"英文 
InBlock.gif$CONF['database_type'] = 'mysql';          //数据库类型 
InBlock.gif$CONF['database_host'] = 'localhost';     //数据库服务的位置 
InBlock.gif$CONF['database_user'] = 'postfix';        //postfixadmin连接数据库时使用的用户名 
InBlock.gif$CONF['database_password'] = 'postfix'; //访问数据库的密码 
InBlock.gif$CONF['database_name'] = 'postfix';    //连接MySQL数据库的库名 
InBlock.gif$CONF['smtp_server'] = 'localhost'; 
InBlock.gif$CONF['smtp_port'] = '25'; 
InBlock.gif$CONF['encrypt'] = 'md5crypt';         //数据库中密码的保存形式 
InBlock.gif$CONF['domain_path'] = 'YES';         //指定以域名作为邮箱文件夹的路径名,将默认的NO修改为YES 
InBlock.gif$CONF['domain_in_mailbox'] = 'NO'; 
InBlock.gif$CONF['aliases'] = '1000'; 
InBlock.gif$CONF['mailboxes'] = '1000'; 
InBlock.gif$CONF['maxquota'] = '1000'; 
InBlock.gif$CONF['quota'] = 'NO'; 
InBlock.gif$CONF['quota_multiplier'] = '1024000';        //
邮箱的大小限制                                                            $CONF['emailcheck_resolve_domain']='NO';   //
将默认的YES修改为NO
在浏览器地址栏输入
设置页,浏览器会出现如下图所示界面。
215543626.png
在第一次访问的过程中会在
MySQL
数据库,
postfix
库中添加相应的表结构,可以使用如下命令验证:
InBlock.gif[root@mail ~]# mysql -u root -p 

InBlock.gifEnter password: 

InBlock.gifWelcome to the MySQL monitor.    Commands end with ; or \g. 

InBlock.gifYour MySQL connection id 
is 156 

InBlock.gifServer version: 5.0.77 Source distribution 

InBlock.gif

InBlock.gifType 'help;' or '\h' 
for help. Type '\c' to clear the buffer. 

InBlock.gif

InBlock.gifmysql> use postfix; 

InBlock.gifReading table information 
for completion of table and column names 

InBlock.gifYou can turn off 
this feature to get a quicker startup with -A 

InBlock.gif

InBlock.gifDatabase changed 

InBlock.gifmysql> show tables; 

InBlock.gif+-----------------------+ 

InBlock.gif| Tables_in_postfix         | 

InBlock.gif+-----------------------+ 

InBlock.gif| admin                                 | 

InBlock.gif| alias                                 | 

InBlock.gif| alias_domain                    | 

InBlock.gif| config                                | 

InBlock.gif| domain                                | 

InBlock.gif| domain_admins                 | 

InBlock.gif| fetchmail                         | 

InBlock.gif| log                                     | 

InBlock.gif| mailbox                             | 

InBlock.gif| quota                                 | 

InBlock.gif| quota2                                | 

InBlock.gif| vacation                            | 

InBlock.gif| vacation_notification | 

InBlock.gif+-----------------------+ 

InBlock.gif13 rows 
in set (0.00 sec) 

InBlock.gif

InBlock.gifmysql>
Change setup passwd
下填写你要设置的密码后,将产生加密密码,如下所示:

220226702.png
按照提示,将产生的密码替换
postfixadmin
配置文件
config.inc.php
$CONF['setup_password'] =
changeme
”字段中的
changeme
,结果如下:
InBlock.gif$CONF['setup_password'] = ' dbd193530d798b7cd5d6f0a3805ee4e4:b5b951b8706bec173e58aeb38d333926caa3863c';
接下来创建
Postfixadmin
的管理员,
Postfixadmin
将管理员划分为两种:超级管理员和普通管理员,他们分别用以下用途:

l
超级管理员:可以添加删除邮件域、管理员;新建管理员并授予具有管理那个域的权限,新建用户邮箱等权限。

l
普通管理员:为了安全起见,一般情况下,使用超级管理员来创建邮件域和普通管理员,而使用普通管理员来添加用户邮箱以及别名。

在新版本中的
postfixadmin
管理工具中,在设置完
Setup password
后,就可以按照向导完成超级管理员的创建。

依次“创建输入
Setup password
密码、超级管理员用户名(例如:
作为用户名)和密码”点击“新增”,如下图所示:

220552856.png
    点击“新增”后,
postfixadmin
会提示“新增管理员成功”提示

220801995.png
超级管理员创建完成后,将
setup.php
文件和所有
motd
开头的
txt
文件,移动到其它位置,或者删除。

InBlock.gif[root@mail html]# mv postfixadmin/setup.php ~ 

InBlock.gif[root@mail html]# mv postfixadmin/motd* ~
创建完超级管理员后,我们直接输入
就可以使用超级管理员登录,完成邮件域和普通管理员的创建:
221352858.png
输入“超级管理员用户名和密码”点击“登录”完成登录。
221516974.png
接下来我们来以下面的信息为例来创建相应的信息:

域名

邮箱名

邮箱密码

xifeng.com

yujinlong@xifeng.com

123456

vfast.com

linken@vfast.com

123456

在创建域的过程中,只需要点击“域名清单”
/
“新建域”,如下所示:

221840299.png
输入域名的相关信息之后,点击“新增”即可。

222007731.png
点击“域名清单”,可以列出已创建的邮件域:

222140603.png

在创建普通管理员的过程中,和创建域的过程一样简单。只需要单击“管理员清单”
/
“新建管理员”
222256531.png
注意管理员名称输入的管理账号名为邮件地址,并赋予这个账号可以管理那些域,如果是多个域可以按
Ctrl
键,选中要选择的域的名称即可。之后点击“新增”
222429751.png
点击“管理员清单”可以看到有两个管理员,其中一个为超级管理员,另一个为普通管理员,管理的域名为
2
个。
222601497.png

创建完成后也可以登录到
MySQL
数据库中,查询
admin
表,你会发现这管理员的的信息。
InBlock.gif[root@mail ~]# mysql -u root -p 

InBlock.gifEnter password: 

InBlock.gifWelcome to the MySQL monitor.    Commands end with ; or \g. 

InBlock.gifYour MySQL connection id 
is 135 

InBlock.gifServer version: 5.0.77 Source distribution 

InBlock.gif

InBlock.gifType 'help;' or '\h' 
for help. Type '\c' to clear the buffer. 

InBlock.gif

InBlock.gifmysql> use postfix; 

InBlock.gifReading table information 
for completion of table and column names 

InBlock.gifYou can turn off 
this feature to get a quicker startup with -A 

InBlock.gif

InBlock.gifDatabase changed 

InBlock.gifmysql> select * from admin; 

InBlock.gif+------------------------+------------------------------------+---------------------+---------------------+--------+ 

InBlock.gif| username                             | password                                                     | created                         | modified                        | active | 

InBlock.gif+------------------------+------------------------------------+---------------------+---------------------+--------+ 

InBlock.gif| admin@xifeng.com             | $1$4a6944be$g1JKJSJ8uEk.KtW.OBaKa. | 2013-01-21 22:41:50 | 2013-01-21 22:41:50 |            1 | 

InBlock.gif| Super@postfixadmin.com | $1$7da3934e$/7Z5vzQmGXD3bVHFJGwu00 | 2013-01-21 22:36:31 | 2013-01-21 22:36:31 |            1 | 

InBlock.gif+------------------------+------------------------------------+---------------------+---------------------+--------+ 

InBlock.gif2 rows 
in set (0.00 sec) 

InBlock.gif

InBlock.gifmysql>
接下来使用我们创建的
admin@xifeng.com
这个普通管理员登录
Postfixadmin
,完成用户邮箱的添加,同样是使用
这个管理链接来登录。

223347583.png
登录后,显示出了普通管理员能够完成的工作。

223506514.png
在创建用户邮箱的过程中,只需要点击“虚拟用户清单”
/
“新建邮箱”,如下所示:

223647796.png

输入用户名后选择用户要添加的邮件域名之后输入密码等信息,点击“增加邮箱”

223852102.png
完成后,会提示建立邮箱成功的提示,可以根据向导继续创建邮箱。

224033419.png
现在我们先测试一下 Postfix
服务是否能够启动,如果可以,并将其设置为开机自启动。
InBlock.gif[root@mail ~]# /etc/init.d/postfix start 

InBlock.gifStarting postfix:                                                                                    [    OK    ] 

InBlock.gif[root@mail ~]# chkconfig --level 35 postfix on
通常,
Postfix
输出这一行信息并不能确认
Postfix
已经正常运行,我们还需要查看
Postfix
的系统日志中有没有什么出错信息。
InBlock.gif[root@mail ~]# tail /var/log/maillog 

InBlock.gif…… 

InBlock.gifJan 22 02:57:49 mail postfix/postfix-script: starting the Postfix mail system 

InBlock.gifJan 22 02:57:49 mail postfix/master[27795]: daemon started -- version 2.3.3, configuration /etc/postfix 

InBlock.gif[root@mail ~]#
如果日志文件中包含上面的两行信息,那么恭喜你了,现在Postfix已经能够启动了,虽然它还不能提供服务。继续努力吧!
由于老是提示文章篇幅超过8万字符,特分为三篇发布,点击
 查看第一篇
 查看第二篇
 查看第三篇
     本文转自yjlsy 51CTO博客,原文链接:http://blog.51cto.com/baidu/1123539
,如需转载请自行联系原作者
你可能感兴趣的文章
Win10系列:VC++ Direct3D模板介绍1
查看>>
[转]How rival bots battled their way to poker supremacy
查看>>
自定义控件详解(四):Paint 画笔路径效果
查看>>
推荐电影 奥黛丽赫本的十大经典电影 1953-1989
查看>>
页面获取Spring Security登录用户
查看>>
LaTex与数学公式
查看>>
微服务架构成功之路
查看>>
Java基础- super 和 this 解析
查看>>
霍夫变换
查看>>
【机房收费系统】多么痛的领悟
查看>>
Lucene5.5.4入门以及基于Lucene实现博客搜索功能
查看>>
设置utf8编码问题
查看>>
有没有一段代码,让你觉得人类的智慧也可以璀璨无比?【转】
查看>>
MinGW安装和使用基础教程
查看>>
NHibernate之旅(7):初探NHibernate中的并发控制
查看>>
看小说的这些年
查看>>
微信支付四大支付模式分别有哪些区别?
查看>>
Idea maven项目不能新建package和class的解决
查看>>
<context:annotation-config/>,<mvc:annotation-driven/>和<context:component-scan>之间的关系
查看>>
新的斐波那契数列
查看>>