openSUSE15.6: postfix-dovecot-mariadb-搭建邮件服务器
标题是“指南”,纯粹是为了SEO,博主水平有限,不足之处,希望网友们批评指正。
背景
我在AWS购买一台配置为2C2G的lightsail轻型VPS云主机,由于工作繁忙,一直闲置。
恰逢26年春节假期,一下子有了大量空闲时间,本着物尽其用的原则,决定搭建邮件服务器。
这事儿如果成了,以后就拥有独家域名的邮箱,自己用起来随心所欲,还能分享给亲戚朋友,岂不美哉?
但说起来容易,做起来煞费周折。
一个原因是docker技术的普及,很多邮件方案均已打包成镜像,使用起来简单、方便。
另外一个原因,postfix系列软件安装、配置繁琐,还涉及域名解析及邮件服务专用的潜规则,对于普通人,有一定难度。
现在大部分云计算厂商封禁25端口,历尽千辛,服务搭建完成后,你大概率会卡在这一步。
博主的解决方案是,使用”AWS Simple Email Service(SES)”邮件代理,只需要在postfix添加配置即可。
在搭建过程中,大量依赖deepseek和chatGPT, 感谢强大的人工智能技术~!
当然,如果把VPS当作玩具,折腾起来乐在其中,是不错的消磨时间的方式。
邮件服务搭建方案
Postfix是什么?
Postfix是 MTA(Mail Transfer Agent),负责发信和收信传输。
它干的事:
- 接收外部服务器发来的邮件
- 把邮件转发到目标服务器
- 发送你服务器用户发出的邮件
- 跟别的邮件服务器SMTP通信
它只负责“传输”。
Dovecot是什么?
Dovecot是MDA+IMAP/POP3 Server , 负责“存储”和“让用户读取”。
它干的事:
- 管理邮箱目录(Maildir)
- 提供IMAP/POP3给客户端
- 负责用户认证
- 可提供SASL认证给Postfix使用
它只负责“用户访问”。
完整邮件流程(从外部发到你)
假设别人给你发邮件
1 | Gmail -> 你的服务器 |
流程:
- 对方SMTP连接到你的服务器25端口
- Postfix接收邮件
- Postfix把邮件投递到本地邮箱目录
- Dovecot读取该目录
- Outlook/手机等使用IMAP协议连接Dovecot读取邮件
流程图:
1 | 外部服务器 |
从你发邮件到外部
1 | Outlook -> 你的服务器 -> Gmail |
流程:
- Outlook连接587端口
- Dovecot提供SASL认证
- Postfix验证用户名和密码
- Postfix把邮件发给目标MX
流程图:
1 | Outlook |
二者如何配合?
核心协作点在:
SASL认证
Postfix自己不掌管密码。
它通常使用:
1 | smtpd_sasl_type = dovecot |
代表
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 | # 仅开放以下,其他全部关闭。 |
搭建过程
准备工作
- 一台具有IPv4地址的vps云主机(至少1C1G,性能够用)
- 一个拥有完全解析权限的国际域名。
以上,建议均在国外运营商购买,国内要求域名备案等。 - deepseek/chatGPT,提供专家咨询。
- 一个自行注册、可以登录的gmail邮箱,后期用作收件测试和排障。
操作系统(openSUSE Leap 15.6)
为什么使用openSUSE ?
博主具备5年以上”SUSE Linux Enterprise Server (SLES)”生产一线使用经验,不论硬件服务器(戴尔)系统安装,还是应用搭建维护,都非常熟悉。
个人认为,SuSE系统是除Redhat系列外,最稳定、易用的发行版,非常省心。
系统就绪后,第一步,应该执行系统级安全加固和配置优化,可以问deepseek,滤过。
系统更新
1 | # 更新系统 |
软件安装配置
安装基础软件
1 | zypper install postfix postfix-mysql mariadb-server mariadb dovecot dovecot-mysql cyrus-sasl cyrus-sasl-plain |