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

 1. 系统搭建目标

通过本系列文章,最终可以部署一套提供如下服务的邮件系统:

  • SMTP服务:由Postfix提供,监听25、465、587端口。
  • POP3服务:由Dovecot提供,监听110、995端口。
  • IMAP服务:由Dovecot提供,监听143、993端口。
  • WebMail服务:由Roundcube提供。通过Nginx+PHP的组合运行web服务,监听80、443端口。

2. 开源组件列表

由于开源软件的配置与相关组件的版本有很大关系,不同版本配置可能略有不同,在配置过程中需要仔细甄别。本系列文章涉及的相关组件版本如下:

  • 操作系统:Rocky Linux release 8.6 (Green Obsidian)
  • Postfix:3.5.8
  • Dovecot:2.3.16
  • Roundcube:1.6.7
  • PHP:8.3
  • MariaDB:10.6.18
  • Nginx:1.14.1

3. 注意事项

如您参考本系列文章进行测试、安装,需要注意如下事项:

  • 本系列文章参考了商业邮件系统的相关安全配置,在测试过程中非必需,请根据个人需要进行取舍。
  • 涉及配置文件编辑部分均采用vi编辑器,根据个人喜好,您也可以选择nano等,下文不再强调说明。
  • 本系列文章中以mailab.cn域名为例,凡是涉及该域名的地方请自行修改为您需要的域名。
  • 本系列文中中涉及SSL证书。如果需要申请证书,可以到相关证书机构咨询,也可以参考ACME进行证书自动化续期。本文将不再详述如何申请SSL证书。
  • 如果需要与站外进行发信测试,还需要涉及域名的MX记录配置。
  • 本系列文章适用于对Linux系统、电子邮件服务有一定了解的用户。即使您具备这方面知识,在配置过程中难免还是会遇到各种问题,请保持耐心。

4. MariaDB数据库配置(MySQL)

4.1 背景信息

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

4.2 MariaDB数据库安装

关于MariaDB数据库安装方案在此不做赘述,可以参考其他文章处理。

启动数据库:

systemctl start mariadb
systemctl enable mariadb

进入数据库:

mysql -u root

设置数据库root账户密码:

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

4.3 创建数据库

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

/* 创建数据库,名称可以自定义 */
create database maildb;/* 授权mailuser用户对maildb数据库select权限,并设置密码*/
GRANT SELECT ON maildb.* TO 'mailuser'@'127.0.0.1' IDENTIFIED BY 'admin@123';
FLUSH PRIVILEGES;

4.4 初始化数据表

/* 域名表 */
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;

4.5 初始化虚拟用户数据

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

/* 新增两个域名 */
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');

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

参考来源:Postfix+Dovecot+Roundcube开源邮件系统搭建系列2:MariaDB数据库配置(MySQL) | MailABC邮件知识百科icon-default.png?t=N7T8https://www.mailabc.cn/blog/2024/06/15/postfixdovecotroundcube%E5%BC%80%E6%BA%90%E9%82%AE%E4%BB%B6%E7%B3%BB%E7%BB%9F%E6%90%AD%E5%BB%BA%E7%B3%BB%E5%88%972%EF%BC%9Amariadb%E6%95%B0%E6%8D%AE%E5%BA%93%E9%85%8D%E7%BD%AE%EF%BC%88mysql%EF%BC%89/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/379098.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024全球和国内最常用的弱密码,有没有你的?

密码管理器NordPass分析了来自公开来源的超过4.3TB 的密码数据,找出了当前为止(2024年)最常用(最脆弱)的密码。 这些密码主要有下面这些特征: 简单且常用,万年弱密码,比如123456、a…

Qt支持LG高级汽车内容平台

Qt Group与LG 电子(简称LG)正携手合作,将Qt软件框架嵌入其基于 webOS的ACPLG车载娱乐平台,用于应用程序开发。该合作旨在让原始设备制造商(OEM)的开发者和设计师能为汽车创建更具创新性的沉浸式汽车内容流媒…

Flutter应用开发:掌握StatefulWidget的实用技巧

前言 随着移动应用的日益复杂,状态管理成为了 Flutter 应用开发中的一项重要挑战。 状态,即应用中的可变数据,它驱动着用户界面的渲染和交互。 在 Flutter 这样的声明式 UI 框架中,如何高效、可维护地管理状态,对于…

linux环境安装mongoDB

一、安装单体mogodb 目标:在Linux中部署一个单机的MongoDB,作为生产环境下使用。 提示:和Windows下操作差不多。 步骤如下: (1)先到官网下载压缩包 mongod-linux-x86_64-4.0.10.tgz 。 (2&…

WEB前端06-BOM对象

BOM浏览器对象模型 浏览器对象模型:将浏览器的各个组成部分封装成对象。是用于描述浏览器中对象与对象之间层次关系的模型,提供了独立于页面内容、并能够与浏览器窗口进行交互的对象结构。 组成部分 Window:浏览器窗口对象 Navigator&…

【STC89C51单片机】定时器中断系统

中断概念 中断是一种重要的硬件机制,用于在处理器正在执行程序时,能够及时响应某些外部或内部事件。中断可以临时中止当前正在执行的指令序列,转而去执行专门的中断服务程序(ISR,Interrupt Service Routine&#xff0…

Linux系统部署MySQL数据库

1.Linux插入光盘,使用df-h获取光盘信息,默认/dev/sr0文件为光盘文件 使用命令 mount -o ro /dev/sr0 /media进行手动挂载 mount -o ro /dev/sr0 /media 2.进入cd /etc/yum.repos.d目录 编辑配置yum库,编辑vim yum.repos [BaseOS] nameba…

Re:从零开始的C++世界——类和对象(下)

文章目录 前言1.再谈构造函数🍎构造函数体赋值🍎初始化列表🍎特性🍌特性一🍌特性二🍌特性三🍌特性四🍌特性五 🍎explicit 关键字 2.static成员🍎概念&#x1…

边缘设备使用记录--阿加犀AIBox 6490

边缘设备使用记录--阿加犀AIBox 6490 设备介绍设备连接glog && gflagsonnx2tfliteAidLite SDK for C模型输入输出的shape执行推断 OpenCV使用 设备介绍 阿加犀AIBox 6490是一款基于高通QCS6490平台的高性价比智能边缘计算终端,具有14TOPS AI算力&#xff0…

Springboot整合ShardingJdbc实现分库分表方案

一、创建库表 1、创建两个数据库 CREATE SCHEMA shard_db_0 DEFAULT CHARACTER SET utf8 ; CREATE SCHEMA shard_db_1 DEFAULT CHARACTER SET utf8 ; 2、在每个数据库各创建三个分表 CREATE TABLE tb_order_0 (order_id bigint(20) NOT NULL,buyer_id bigint(20) not null …

dom4j 操作 xml 之按照顺序插入标签

最近学了一下 dom4j 操作 xml 文件,特此记录一下。 public class Dom4jNullTagFiller {public static void main(String[] args) throws DocumentException {SAXReader reader new SAXReader();//加载 xml 文件Document document reader.read("C:\\Users\\24…

【数据结构】探索排序的奥秘

若有不懂地方,可查阅我之前文章哦! 个人主页:小八哥向前冲~_csdn博客 所属专栏:数据结构_专栏 目录 排序的概念 几种排序方法介绍 冒泡排序 选择排序 插入排序 堆排序 向上调整建堆排序 向下调整建堆排序 希尔排序 快速…

前后端数据交互设计到的跨域问题

前后端分离项目的跨域问题及解决办法 一、跨域简述 1、问题描述 这里前端vue项目的端口号为9000,后端springboot项目的端口号为8080 2、什么是跨域 当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域 当前页面url被请求页面url是否…

K8S 上部署 Emqx

文章目录 安装方式一:1. 快速部署一个简单的 EMQX 集群:2. 部署一个持久化的 EMQX 集群:3. 部署 EMQX Edge 集群和 EMQX 企业版集群: 安装方式二:定制化部署1. 使用 Pod 直接部署 EMQX Broker2. 使用 Deoloyment 部署 …

Jmeter关联

案例脚本实现:选择商品加入购物车 客户端发送一个登录的HTTP请求,服务端返回一个带着token的响应,后续发出一个带token信息的加入购物车的HTTP请求,返回响应。 关联:当请求直接由依赖关系的时候,比如一个请…

LLM基础模型系列:Prompt-Tuning

------->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<------ 大型预训练语言模型的规模不断扩大&#xff0c;在许多自然语言处理 &#xff08;NLP&#xff09; 基准测试中取得了最先进的结果。自GPT和BERT开发以来&#xff0c;标准做法一直是在下游…

IDEA中Git常用操作及Git存储原理

Git简介与使用 Intro Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git是一款分布式版本控制系统&#xff08;VCS&#xff09;&#xff0c;是团队合作开发…

2010-2022年别克英朗维修手册电路图线路图接线图资料更新

经过整理&#xff0c;2010-2022年别克英朗汽车全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对…

How to integrate GPT-4 model hosted on Azure with the gptstudio package

题意&#xff1a;怎样将托管在Azure上的GPT-4模型与gptstudio包集成&#xff1f; 问题背景&#xff1a; I am looking to integrate the OpenAI GPT-4 model into my application. Here are the details I have: Endpoint: https://xxxxxxxxxxxxxxx.openai.azure.com/Locatio…

uniapp 开发 App 对接官方更新功能

插件地址&#xff1a;升级中心 uni-upgrade-center - App - DCloud 插件市场 首先创建一个 uni-admin 项目&#xff0c;选择你要部署的云开发服务商&#xff1a; 然后会自动下载模板&#xff0c;部署云数据库、云函数 第二步&#xff1a;将新创建的 uni-admin 项目托管到…