MailABC是科普电子邮件知识的个人Blog,接受交换友链。您可以关注公众号mailabc留言,或邮件联系feedback@mailabc.cn 。

Postfix+Dovecot+Roundcube开源邮件系统搭建系列2:MariaDB数据库配置(MySQL)

Postfix 小胡子大魔王 3个月前 (06-15) 261次浏览
本系列文章主要讨论基于Postfix+Dovecot+Roundcube搭建开源邮件系统的方案。为了贴合实际需要,以虚拟邮件用户为基础,通过MariaDB数据库来管理邮件用户。请注意阅读前后文。

本系列文章:

1. 目标及环境准备

2. MariaDB数据库配置(MySQL)

3. Postfix安装配置

4. Dovecot安装配置

5. Roundcube安装配置

背景信息

为了模拟真实的使用场景,邮件用户采用虚拟用户(区别于采用操作系统账号方式),用户信息存储在数据库中。数据库采用MariaDB(和mysql几乎相同)。

MariaDB数据库安装

参考本站wordpress 6.5.2版本安装记录 中关于MariaDB安装方法,此处不再详述。

启动数据库:

systemctl start mariadb
systemctl enable mariadb

进入数据库:

mysql -u root

设置数据库root账户密码:

alter user root@localhost identified via mysql_native_password using password('admin@123');

创建数据库

建立为Postfix提供访问权限的数据库、及授权账户,数据库名称、账户名称可以自行定义。

/* 创建数据库,名称可以自定义 */
create database maildb;

/* 授权mailuser用户对maildb数据库select权限,并设置密码*/
GRANT SELECT ON maildb.* TO 'mailuser'@'127.0.0.1' IDENTIFIED BY 'admin@123';
FLUSH PRIVILEGES;

初始化数据表

建立虚拟用户相关的数据库,后续将会用到。数据库表名称、字段名称可以自定义。

/* 域名表 */
CREATE TABLE `vt_domain` (
`id`  INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/* 虚拟用户表 */
CREATE TABLE `vt_user` (
`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`password` VARCHAR(106) NOT NULL,
`email` VARCHAR(120) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
FOREIGN KEY (domain_id) REFERENCES vt_domain(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

/* 别名表 */
CREATE TABLE `vt_alias` (
`id` INT NOT NULL AUTO_INCREMENT,
`domain_id` INT NOT NULL,
`source` varchar(100) NOT NULL,
`destination` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY (domain_id) REFERENCES vt_domain(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

初始化虚拟用户数据

初始化部分用户数据,方便后续测试:

/* 新增两个域名 */
INSERT INTO `maildb`.`vt_domain`
(`id` ,`name`)
VALUES
('1', 'mailabc.cn'),
('2', 'mail.mailabc.cn');

/* 新增两个虚拟账号,并设置密码为admin@123, 这里的密码做了加密处理,如需使用其他加密方式可以查询官方文档 */
INSERT INTO `maildb`.`vt_user`
(`id`, `domain_id`, `password` , `email`)
VALUES
('1', '1', ENCRYPT('admin@123', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'admin@mailabc.cn'),
('2', '1', ENCRYPT('admin@123', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'dmarck-reports@mailabc.cn');

/* 新增一个别名账号,本文用不到,直接借鉴的其他文档设置,后续文章再研究具体用法 */
INSERT INTO `maildb`.`vt_alias`
(`id`, `domain_id`, `source`, `destination`)
VALUES
('1', '1', 'postmaster@mailabc.cn', 'admin@mailabc.cn');

至此,数据库配置完毕。返回顶部查看本系列其他文章。


未标注来源的文章均为原创作品,版权所有,转载请注明出处。非原创文章均已标注来源,如有侵权请告知。 如您喜欢本站,可以收藏加关注(扫码关注右上角微信公众号mailabc)。
喜欢 (1)