2026年openSUSE15.6:postfix-dovecot-mariadb-搭建邮件服务器-最新指南

openSUSE15.6: postfix-dovecot-mariadb-搭建邮件服务器

标题是“指南”,纯粹是为了SEO,博主水平有限,不足之处,希望网友们批评指正。

背景

我在AWS购买一台配置为2C2G的lightsail轻型VPS云主机,由于工作繁忙,一直闲置。
恰逢26年春节假期,一下子有了大量空闲时间,本着物尽其用的原则,决定搭建邮件服务器。
这事儿如果成了,以后就拥有独家域名的邮箱,自己用起来随心所欲,还能分享给亲戚朋友,岂不美哉?

但说起来容易,做起来煞费周折。

一个原因是docker技术的普及,很多邮件方案均已打包成镜像,使用起来简单、方便。
另外一个原因,postfix系列软件安装、配置繁琐,还涉及域名解析及邮件服务专用的潜规则,对于普通人,有一定难度。

现在大部分云计算厂商封禁25端口,历尽千辛,服务搭建完成后,你大概率会卡在这一步。
博主的解决方案是,使用”AWS Simple Email Service(SES)”邮件代理,只需要在postfix添加配置即可。

在搭建过程中,大量依赖deepseekchatGPT, 感谢强大的人工智能技术~!

当然,如果把VPS当作玩具,折腾起来乐在其中,是不错的消磨时间的方式。

邮件服务搭建方案

Postfix是什么?

Postfix是 MTA(Mail Transfer Agent),负责发信和收信传输。

它干的事:

  • 接收外部服务器发来的邮件
  • 把邮件转发到目标服务器
  • 发送你服务器用户发出的邮件
  • 跟别的邮件服务器SMTP通信

它只负责“传输”。

Dovecot是什么?

Dovecot是MDA+IMAP/POP3 Server , 负责“存储”和“让用户读取”。

它干的事:

  • 管理邮箱目录(Maildir)
  • 提供IMAP/POP3给客户端
  • 负责用户认证
  • 可提供SASL认证给Postfix使用

它只负责“用户访问”。

完整邮件流程(从外部发到你)

假设别人给你发邮件
1
Gmail -> 你的服务器

流程:

  1. 对方SMTP连接到你的服务器25端口
  2. Postfix接收邮件
  3. Postfix把邮件投递到本地邮箱目录
  4. Dovecot读取该目录
  5. Outlook/手机等使用IMAP协议连接Dovecot读取邮件

流程图:

1
2
3
4
5
6
7
8
9
外部服务器
↓ 25
Postfix

Maildir

Dovecot
↑ 993
Outlook
从你发邮件到外部
1
Outlook -> 你的服务器 -> Gmail

流程:

  1. Outlook连接587端口
  2. Dovecot提供SASL认证
  3. Postfix验证用户名和密码
  4. Postfix把邮件发给目标MX

流程图:

1
2
3
4
5
6
7
Outlook
↓ 587
Dovecot → mariadb
↓ ↑验证密码
Postfix
↓ 25
目标服务器
二者如何配合?

核心协作点在:

SASL认证

Postfix自己不掌管密码。

它通常使用:

1
2
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

代表

Postfix把认证交给Dovecot

所以:

  • Dovecot = 账户系统
  • Postfix = 传输系统

邮件存储目录

默认情况下,Postfix投递到

1
/home/user/Maildir/

Dovecot读取同一个目录,二者共享存储。

必须开放的端口
  • 25 - SMTP收信(服务器与服务器之间通信) - 必须
  • 587 - SMTP提交(客户端提交邮件,必须开启认证) - 建议
  • 993 - IMAPS(客户端收邮件,加密) - 必须
可选端口
  • 465 - SMTPS(旧标准)
  • 110 - POP3
  • 995 - POP3S
  • 142 - IMAP明文
生产级端口策略
1
2
3
4
5
# 仅开放以下,其他全部关闭。

25
587
993

搭建过程

准备工作

  • 一台具有IPv4地址的vps云主机(至少1C1G,性能够用)
  • 一个拥有完全解析权限的国际域名。
    以上,建议均在国外运营商购买,国内要求域名备案等。
  • deepseek/chatGPT,提供专家咨询。
  • 一个自行注册、可以登录的gmail邮箱,后期用作收件测试和排障。

操作系统(openSUSE Leap 15.6)

为什么使用openSUSE ?

博主具备5年以上”SUSE Linux Enterprise Server (SLES)”生产一线使用经验,不论硬件服务器(戴尔)系统安装,还是应用搭建维护,都非常熟悉。
个人认为,SuSE系统是除Redhat系列外,最稳定、易用的发行版,非常省心。

系统就绪后,第一步,应该执行系统级安全加固和配置优化,可以问deepseek,滤过。

系统更新

1
2
3
4
5
6
# 更新系统
sudo zypper refresh
sudo zypper update

# 重启(必须)
sudo reboot

软件安装配置

安装基础软件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
zypper install postfix postfix-mysql mariadb-server mariadb dovecot dovecot-mysql cyrus-sasl cyrus-sasl-plain

# 如果不想安装冗余,可以添加 "--no-recommends" 参数。
zypper install --no-recommends postfix postfix-mysql mariadb-server mariadb dovecot dovecot-mysql cyrus-sasl cyrus-sasl-plain

# 设置开机自启动
systemctl enable --now mariadb
systemctl enable --now postfix
systemctl enable --now dovecot

# 配置mysql数据库
# 执行后,按照提示,一步一步操作。
# 删除匿名账户和测试数据库,为root设置密码,同时禁用root远程登录。
mysql_secure_installation

-- 创建数据库
CREATE DATABASE mailserver;
USE mailserver;

-- 创建虚拟域表
CREATE TABLE virtual_domains (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL UNIQUE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 创建虚拟用户表
CREATE TABLE virtual_users (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
domain_id INT NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(106) NOT NULL, -- 存储加密后的密码
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 创建别名表
CREATE TABLE virtual_aliases (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
domain_id INT NOT NULL,
source VARCHAR(100) NOT NULL,
destination VARCHAR(100) NOT NULL,
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- 创建数据库用户并授权
CREATE USER 'mailuser'@'localhost' IDENTIFIED BY 'your_password';
-- 注意,这里是赋查询权限,下一步添加用户时,要使用root登录,操作这张表。
GRANT SELECT ON mailserver.* TO 'mailuser'@'localhost';
FLUSH PRIVILEGES;

本文作者:智慧锦囊

本文链接:https://dongchao935.github.io/2026%E5%B9%B4openSUSE15-6-postfix-dovecot-mariadb-%E6%90%AD%E5%BB%BA%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8-%E6%9C%80%E6%96%B0%E6%8C%87%E5%8D%97/

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

ESC 关闭 | 导航 | Enter 打开
输入关键词开始搜索