当前位置: 首页 > news >正文

Docker MailServer自建邮件服务器

背景

此前笔者借助 Cloudflare 的 Email 转发功能,将收到的邮件转发至个人 Gmail 邮箱,但该服务仅支持收信转发,无法实现发信功能。

为彻底解决发信问题,笔者决定在个人服务器上架设 MailServer。

架设前,笔者查看了各类教学文章及官方文档,认为操作会顺利完成,实际过程中却遇到了诸多难题。

基础知识

常见邮件服务端口 & 协议 介绍

详细介绍信息, 查看此文档

协议端口
SMTP25/587/465
IMAP143/993
POP3110/995

常见 邮件软件 和 安全软件 介绍

软件名称简介
sendmail用于发邮件。资格最老的邮局,所有Linux发行版基本都带。但是配置麻烦。
postfixWietse Venema 觉得 sendmail 配置太麻烦了,就开发了一个 “简化配置版 sendmail”,即postfix。支持smtp协议。
dovecot用于收邮件,支持imap/pop3。
opendkim生成dkim签名。有什么用?详见下面的“反垃圾邮件技术”。

反垃圾邮件技术介绍

SPF(Sender Policy Framework)技术。SPF 用于验证发送邮件的服务器是否在域名的授权列表中。如果不在,则认为是垃圾邮件。通过在域名的 DNS 中添加 TXT 记录,可以指定哪些服务器可以发送该域名的邮件。

DKIM(DomainKeys Identified Mail)技术。DKIM 是一种数字签名技术,通过在邮件头中添加一个签名,可以验证邮件是否被篡改过。使用 DKIM 技术可以有效防止垃圾邮件和欺诈邮件。

DMARC(Domain-based Message Authentication, Reporting and Conformance)技术。DMARC 技术是 SPF 和 DKIM 的加强版,它通过在域名的 DNS 中添加 TXT 记录,指定如何处理验证失败的邮件,可以有效地降低垃圾邮件和欺诈邮件的数量。


https://www.checktls.com/TestReceiver

开始

通过1panel 面板安装 或者 手动安装

service 地址 https://github.com/docker-mailserver/docker-mailserver

DMS_GITHUB_URL = "https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master"
curl  -LO  " ${DMS_GITHUB_URL} /compose.yaml"  &&  mv compose.yaml docker-compose.yaml
curl  -LO  " ${DMS_GITHUB_URL} /mailserver.env"正常来说我们需要修改的地方只有这几个OVERRIDE_HOSTNAME = mail.example.com
ENABLE_POP3 = 1  < - 这行预设好样找不到要自己加docker-compose.yaml 当中需要 端口和  ssl证书挂载 改掉

docker compose up -d

# 建立一个新的admin 使用者你可以有你自己的但admin 建议要有
docker  exec  -it mailserver setup email add admin@example.com "password"# 建立一个新的postmaster 使用者
# 这个postmaster 是用来接收系统的通知信件没有的话可能会喷错
docker  exec  -it mailserver setup alias  add postmaster@example.com admin@example.com# 查看 邮件用户列表
docker exec -it mailserver   setup email list# 生产DKIM ./docker-data/dms/bashig/opendkim/ 内即可以看到生成的底下会有mail.private 和mail.txt 两个档案mail.private 是私钥,mail.txt 是公钥 将mail.txt 的内容加入到DNS 的TXT 纪录即可
docker  exec  -it mailserver setup bashig dkim

配置dns

假如 你是要 二级域名 绑定 邮箱 例如 mail.xxx.com

DNS 类型记录名记录值TTL
Amail23.105.194.21630 分钟
MXmailmail.xxx.com |10 (优先级 10)30 分钟
TXTmailv=spf1 mx ~all30 分钟
TXT_dmarc.mailv=DMARC1; p=quarantine; rua=mailto:report@mail.qigu-info.com; ruf=mailto:report@mail.qigu-info.com; fo=0; adkim=r; aspf=r; pct=100; rf=afrf; ri=86400; sp=quarantine30 分钟
TXTmail._domainkey.mail上面 生产DKIM 命令产生的30 分钟

SPF ,DKIM , DMARC 讲解

SPF 验证发信人身份的技术 TXT 配置 可配置成通用 v=spf1 mx ~all

DKIM 防止邮件被伪造的验证技术 就是上面DKIM 命令 生产mail.txt 部分 去除空格 变成一行 TXT 配置 name 为 mail._domainkey.mail , 值为 v=DKIM1; k=rsa; p=xxxxxx

DMARC 主要是SPF 和DKIM 的补充 TXT 配置 name 为 _dmarc.mail , 值为 v=DMARC1; p=quarantine; rua=mailto:report@mail.xxx.com; ruf=mailto:report@mail.xxx.com; fo=0; adkim=r; aspf=r; pct=100; rf=afrf; ri=86400; sp=quarantine 记录 明确告知收件服务器如何处理未通过认证的邮件 将上面邮箱替换成你们的邮箱就行了,没有就 用上面命令生成一个 report邮箱专门接收 反馈

细节问题

  1. 测试工具

https://www.checktls.com/TestReceiver

https://mxtoolbox.com/SuperTool.aspx#

https://dmarcguide.globalcyberalliance.org

https://www.mail-tester.com/

  1. 云服务器需要开通相关端口, 以及若端口占用需要把占用程序关闭
  2. 国内云厂商 可能已经关闭 25端口 须有手动去申请解封
  3. 收信失败 记得需要改配置 nano /etc/postfix/main.cf 你用预设的$myhostname 的话他会和系统预设的vmail 虚拟邮件位置冲突 删除掉 $myhostname 部分即可
  4. 常看日志 会有 很明显的报错提示
  5. ssl 配置有多种可选 SSL_TYPE= 如果是自己有证书就 选 manual, 然后配置证书路径
http://www.dtcms.com/a/519673.html

相关文章:

  • 【CRC校验】CRC(循环冗余校验)算法介绍
  • SpringAI 内嵌模型 ONNX
  • 哪些平台制作网站硬件开发和软件开发
  • 网站设计功能编程网站有哪些
  • Volatility2在kali安装
  • Euler
  • 提示学习思想
  • 《图解技术体系》Wonderful talk AI ~~AI“Emerging”
  • k8s部署容器化应用-nginx2
  • 谈谈你对iOS的runtime和runloop的了解
  • Blender入门学习05 - 材质
  • 沂源网站网站页面设计图片素材
  • 做网站推广引流效果好吗黑料社2023
  • 抽水蓄能电站的最佳调度方案研究Matlab仿真
  • VTK入门:vtkPolyData——3D几何的“乐高积木盒
  • php网站做退出的代码wordpress添加字体颜色
  • 2025年--Lc208- 415. 字符串相加(双指针)--Java版
  • ELK 日志管理系统相关内容总结
  • 如何使用 Ansible 安装 Docker
  • 图片批量压缩工具,快速减小文件体积
  • 安卓 ContentProvider 详解:跨应用数据共享的核心方案
  • 光速不变性的几何本源:论张祥前统一场论中光速的绝对性与表观变异
  • 微算法科技(NASDAQ MLGO)基于区块链点阵加密算法的物联网轻量级方案:构建物联网安全基石
  • C++---typename关键字
  • 搭建网站怎么做哪里有做推文的网站
  • Spring Data R2DBC-redis和多数据源
  • 基于单片机的人体红外传感的步进电机调速自动门智能控制系统设计
  • 本地环境部署LangGraph
  • 在 R 医学数据分析中,关于 RStudio 和 VSCode 哪个效率更高
  • GPIO引脚操作方法概述