实战部署MySQL用户认证的Postfix邮件系统(2)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:
实战 部署Postfix+MySQL+Dovecot+Postfixadmin+Extmail邮件系统(2)
-----构建开源邮件系统系列
  如果您对本系列文章感兴趣,可以通过点击以下链接查看全文:

上面我们介绍了MySQL的查询表,接下来就来创建这个配置文件,看看文件中包含什么内容。
[root@mail i386]# cat /etc/postfix/mysql_virtual_alias_maps.cf 
user = postfix 
password = postfix 
hosts = localhost 
dbname = postfix 
table = alias 
select_field =  goto
where_field = address 
[root@mail i386]#
mysql_virtual_domains_maps.cf配置文件内容:
[root@mail i386]# cat /etc/postfix/mysql_virtual_domains_maps.cf 
user = postfix 
password = postfix 
hosts = localhost 
dbname = postfix 
table = domain 
select_field = domain 
where_field = domain 
[root@mail i386]#
mysql_virtual_mailbox_limit_maps.cf配置文件内容:
[root@mail i386]# cat /etc/postfix/mysql_virtual_mailbox_limit_maps.cf 
user = postfix 
password = postfix 
hosts = localhost 
dbname = postfix 
table = mailbox 
select_field = quota 
where_field = username 
[root@mail i386]#
mysql_virtual_mailbox_maps.cf配置文件内容:
[root@mail i386]# cat /etc/postfix/mysql_virtual_mailbox_maps.cf 
user = postfix 
password = postfix 
hosts = localhost 
dbname = postfix 
table = mailbox 
select_field = maildir 
where_field = username 
[root@mail i386]#
Postfix的默认用户邮件存放目录是/var/spool/mail,由于RedHat默认设置的权限不是postfix用户本身,这里我们修改一下。笔者在搭建这个系统的过程中,由于这个目录导致使用Webmail登录不成功。当然我是如何发现的问题,通过看mail日志发现的这个问题。
[root@mail i386]# ls -ld /var/spool/mail/ 
drwxrwxr-x 2 root mail 4096 Jan 19 00:07 /var/spool/mail/ 
[root@mail i386]# chown postfix.postfix /var/spool/mail/ 
[root@mail i386]# ls -ld /var/spool/mail/ 
drwxrwxr-x 2 postfix postfix 4096 Jan 19 00:07 /var/spool/mail/
四、 创建 Postfix 所需的数据库
hh
[root@mail i386]# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor.    Commands end with ; or \g. 
Your MySQL connection id  is 3 
Server version: 5.0.77 Source distribution 

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

mysql> create database postfix; 
Query OK, 1 row affected (0.04 sec) 

mysql> create user 'postfix'@'localhost' identified by 'postfix'; 
Query OK, 0 rows affected (0.09 sec) 

mysql> grant all privileges on postfix.* to postfix@'localhost'; 
Query OK, 0 rows affected (0.03 sec) 

mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec)
hh
mysql> show databases; 
+--------------------+ 
| Database                     | 
+--------------------+ 
| information_schema | 
| mysql                            | 
| postfix                        | 
| test                             | 
+--------------------+ 
4 rows  in set (0.29 sec) 

mysql> use postfix; 
Database changed 
mysql> show tables; 
Empty set (0.00 sec) 

mysql> show grants for  postfix@'localhost';
+---------------------------------------------------------------------------------------+
| Grants for  postfix@localhost                                                          |
+---------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO  'postfix'@'localhost' IDENTIFIED BY PASSWORD '3ecf3e4f55dd846f' |
| GRANT ALL PRIVILEGES ON `postfix`.* TO  'postfix'@'localhost'                          |
+---------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
五、 Postfixadmin 安装与配置
Postfixadmin postfix 邮件系统的 web 管理工具,可以通过它管理虚拟邮件主机、添加删除虚拟域、管理员、邮箱、别名以及用户等,配置工作十分简单。
安装 Postfixadmin 较简单,只要将该软件解压到 Apache 的主目录中即可。使用 rpm 包安装的 Apache 的默认路径在 /var/www/html 下。
[root@mail ~]# tar -zxvf postfixadmin-2.3.6.tar.gz -C /var/www/html/ 
… … 
postfixadmin-2.3.6/debian/control 
postfixadmin-2.3.6/debian/lighttpd.conf 
postfixadmin-2.3.6/debian/postfixadmin.docs 
postfixadmin-2.3.6/edit-domain.php 
[root@mail ~]# cd /var/www/html/ 
[root@mail html]# mv postfixadmin-2.3.6 postfixadmin
接下来设置 postfixadmin 的配置文件 config.inc.php ,主要修改下面的参数项:
[root@mail html]# vim postfixadmin/config.inc.php 
…… 
$CONF['configured'] = true;                    //将默认的false修改为true 
$CONF['default_language'] = 'cn';            // postfixadmin默认语言:"cn" 中文,"en"英文 
$CONF['database_type'] = 'mysql';          //数据库类型 
$CONF['database_host'] = 'localhost';     //数据库服务的位置 
$CONF['database_user'] = 'postfix';        //postfixadmin连接数据库时使用的用户名 
$CONF['database_password'] = 'postfix'; //访问数据库的密码 
$CONF['database_name'] = 'postfix';    //连接MySQL数据库的库名 
$CONF['smtp_server'] = 'localhost'; 
$CONF['smtp_port'] = '25'; 
$CONF['encrypt'] = 'md5crypt';         //数据库中密码的保存形式 
$CONF['domain_path'] = 'YES';         //指定以域名作为邮箱文件夹的路径名,将默认的NO修改为YES 
$CONF['domain_in_mailbox'] = 'NO'; 
$CONF['aliases'] = '1000'; 
$CONF['mailboxes'] = '1000'; 
$CONF['maxquota'] = '1000'; 
$CONF['quota'] = 'NO'; 
$CONF['quota_multiplier'] = '1024000';        //
邮箱的大小限制                                                            $CONF['emailcheck_resolve_domain']='NO';   // 将默认的YES修改为NO
在浏览器地址栏输入 http://mail.xifeng.com/postfixadmin/setup.php访问postfixadmin 设置页,浏览器会出现如下图所示界面。
在第一次访问的过程中会在 MySQL 数据库, postfix 库中添加相应的表结构,可以使用如下命令验证:
[root@mail ~]# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor.    Commands end with ; or \g. 
Your MySQL connection id  is 156 
Server version: 5.0.77 Source distribution 

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

mysql> use postfix; 
Reading table information  for completion of table and column names 
You can turn off  this feature to get a quicker startup with -A 

Database changed 
mysql> show tables; 
+-----------------------+ 
| Tables_in_postfix         | 
+-----------------------+ 
| admin                                 | 
| alias                                 | 
| alias_domain                    | 
| config                                | 
| domain                                | 
| domain_admins                 | 
| fetchmail                         | 
| log                                     | 
| mailbox                             | 
| quota                                 | 
| quota2                                | 
| vacation                            | 
| vacation_notification | 
+-----------------------+ 
13 rows  in set (0.00 sec) 

mysql>
Change setup passwd 下填写你要设置的密码后,将产生加密密码,如下所示:
按照提示,将产生的密码替换 postfixadmin 配置文件 config.inc.php $CONF['setup_password'] = changeme ”字段中的 changeme ,结果如下:
$CONF['setup_password'] = ' dbd193530d798b7cd5d6f0a3805ee4e4:b5b951b8706bec173e58aeb38d333926caa3863c';
接下来创建 Postfixadmin 的管理员, Postfixadmin 将管理员划分为两种:超级管理员和普通管理员,他们分别用以下用途:
l 超级管理员:可以添加删除邮件域、管理员;新建管理员并授予具有管理那个域的权限,新建用户邮箱等权限。
l 普通管理员:为了安全起见,一般情况下,使用超级管理员来创建邮件域和普通管理员,而使用普通管理员来添加用户邮箱以及别名。
在新版本中的 postfixadmin 管理工具中,在设置完 Setup password 后,就可以按照向导完成超级管理员的创建。
依次“创建输入 Setup password 密码、超级管理员用户名(例如: 本例中使用Super@postfixadmin.com 作为用户名)和密码”点击“新增”,如下图所示:
    点击“新增”后, postfixadmin 会提示“新增管理员成功”提示
超级管理员创建完成后,将 setup.php 文件和所有 motd 开头的 txt 文件,移动到其它位置,或者删除。
[root@mail html]# mv postfixadmin/setup.php ~ 
[root@mail html]# mv postfixadmin/motd* ~
创建完超级管理员后,我们直接输入 http://mail.xifeng.com/postfixadmin 就可以使用超级管理员登录,完成邮件域和普通管理员的创建:
输入“超级管理员用户名和密码”点击“登录”完成登录。
接下来我们来以下面的信息为例来创建相应的信息:
域名
邮箱名
邮箱密码
xifeng.com
yujinlong@xifeng.com
123456
vfast.com
linken@vfast.com
123456
在创建域的过程中,只需要点击“域名清单” / “新建域”,如下所示:
输入域名的相关信息之后,点击“新增”即可。
点击“域名清单”,可以列出已创建的邮件域:

在创建普通管理员的过程中,和创建域的过程一样简单。只需要单击“管理员清单”/“新建管理员”
注意管理员名称输入的管理账号名为邮件地址,并赋予这个账号可以管理那些域,如果是多个域可以按Ctrl键,选中要选择的域的名称即可。之后点击“新增”
点击“管理员清单”可以看到有两个管理员,其中一个为超级管理员,另一个为普通管理员,管理的域名为2个。
创建完成后也可以登录到MySQL数据库中,查询admin表,你会发现这管理员的的信息。
[root@mail ~]# mysql -u root -p 
Enter password: 
Welcome to the MySQL monitor.    Commands end with ; or \g. 
Your MySQL connection id  is 135 
Server version: 5.0.77 Source distribution 

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

mysql> use postfix; 
Reading table information  for completion of table and column names 
You can turn off  this feature to get a quicker startup with -A 

Database changed 
mysql> select * from admin; 
+------------------------+------------------------------------+---------------------+---------------------+--------+ 
| username                             | password                                                     | created                         | modified                        | active | 
+------------------------+------------------------------------+---------------------+---------------------+--------+ 
| admin@xifeng.com             | $1$4a6944be$g1JKJSJ8uEk.KtW.OBaKa. | 2013-01-21 22:41:50 | 2013-01-21 22:41:50 |            1 | 
| Super@postfixadmin.com | $1$7da3934e$/7Z5vzQmGXD3bVHFJGwu00 | 2013-01-21 22:36:31 | 2013-01-21 22:36:31 |            1 | 
+------------------------+------------------------------------+---------------------+---------------------+--------+ 
2 rows  in set (0.00 sec) 

mysql>
接下来使用我们创建的admin@xifeng.com这个普通管理员登录Postfixadmin,完成用户邮箱的添加,同样是使用http://mail.xifeng.com/postfixadmin这个管理链接来登录。
登录后,显示出了普通管理员能够完成的工作。
在创建用户邮箱的过程中,只需要点击“虚拟用户清单”/“新建邮箱”,如下所示:

输入用户名后选择用户要添加的邮件域名之后输入密码等信息,点击“增加邮箱”
完成后,会提示建立邮箱成功的提示,可以根据向导继续创建邮箱。
现在我们先测试一下 Postfix 服务是否能够启动,如果可以,并将其设置为开机自启动。
[root@mail ~]# /etc/init.d/postfix start 
Starting postfix:                                                                                    [    OK    ] 
[root@mail ~]# chkconfig --level 35 postfix on
通常,Postfix输出这一行信息并不能确认Postfix已经正常运行,我们还需要查看Postfix的系统日志中有没有什么出错信息。
[root@mail ~]# tail /var/log/maillog 
…… 
Jan 22 02:57:49 mail postfix/postfix-script: starting the Postfix mail system 
Jan 22 02:57:49 mail postfix/master[27795]: daemon started -- version 2.3.3, configuration /etc/postfix 
[root@mail ~]#
如果日志文件中包含上面的两行信息,那么恭喜你了,现在Postfix已经能够启动了,虽然它还不能提供服务。继续努力吧!
由于老是提示文章篇幅超过8万字符,特分为三篇发布,点击







     本文转自yjlsy 51CTO博客,原文链接:http://blog.51cto.com/baidu/1123539 ,如需转载请自行联系原作者




相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
9月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
4月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
796 4
|
6月前
|
关系型数据库 MySQL 数据库
为什么 MySQL 不推荐用 Docker 部署?
本文探讨了MySQL是否适合容器化的问题,分析了Docker容器在数据安全、性能瓶颈、状态管理及资源隔离等方面的挑战,并指出目前主流分布式数据库如TDSQL和OceanBase仍倾向于部署在物理机或KVM上。
348 0
|
9月前
|
Java 关系型数据库 MySQL
在Linux平台上进行JDK、Tomcat、MySQL的安装并部署后端项目
现在,你可以通过访问http://Your_IP:Tomcat_Port/Your_Project访问你的项目了。如果一切顺利,你将看到那绚烂的胜利之光照耀在你的项目之上!
487 41
|
9月前
|
开发框架 Java 关系型数据库
在Linux系统中安装JDK、Tomcat、MySQL以及部署J2EE后端接口
校验时,浏览器输入:http://[your_server_IP]:8080/myapp。如果你看到你的应用的欢迎页面,恭喜你,一切都已就绪。
619 17
|
9月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
280 18
|
9月前
|
开发框架 关系型数据库 Java
Linux操作系统中JDK、Tomcat、MySQL的完整安装流程以及J2EE后端接口的部署
然后Tomcat会自动将其解压成一个名为ROOT的文件夹。重启Tomcat,让新“植物”适应新环境。访问http://localhost:8080/yourproject看到你的项目页面,说明“植物”种植成功。
294 10
|
存储 关系型数据库 MySQL
美团面试:MySQL为什么 不用 Docker部署?
45岁老架构师尼恩在读者交流群中分享了关于“MySQL为什么不推荐使用Docker部署”的深入分析。通过系统化的梳理,尼恩帮助读者理解为何大型MySQL数据库通常不使用Docker部署,主要涉及性能、管理复杂度和稳定性等方面的考量。文章详细解释了有状态容器的特点、Docker的资源隔离问题以及磁盘IO性能损耗,并提供了小型MySQL使用Docker的最佳实践。此外,尼恩还介绍了Share Nothing架构的优势及其应用场景,强调了配置管理和数据持久化的挑战。最后,尼恩建议读者参考《尼恩Java面试宝典PDF》以提升技术能力,更好地应对面试中的难题。
|
SQL 存储 关系型数据库
MySQL秘籍之索引与查询优化实战指南
最左前缀原则。不冗余原则。最大选择性原则。所谓前缀索引,说白了就是对文本的前几个字符建立索引(具体是几个字符在建立索引时去指定),比如以产品名称的前 10 位来建索引,这样建立起来的索引更小,查询效率更快!
434 22
 MySQL秘籍之索引与查询优化实战指南
|
SQL 关系型数据库 MySQL
docker-compose部署mysql8
使用docker-compose容器化部署mysql8
956 7

推荐镜像

更多