树洞剪藏#剪藏#树洞剪藏

1Panel 自建邮局 - Docker Mailserver

2024 年 12 月 2 日1 分钟
分享Twitter / XTelegram微博
1Panel 自建邮局 - Docker Mailserver 封面

同步来源:树洞剪藏 源站剪藏 ID:151 原文地址:https://www.nodeseek.com/post-210023-1

打开原文 · 打开源站剪藏快照


1Panel 自建邮局 - Docker Mailserver

NodeSeek beta 日常 技术 情报 测评 交易 拼车 推广

1Panel 自建邮局 - Docker Mailserver

Anye Lv 2 楼主 6h 15min ago in 技术 #0

本文首发于 Anyeの小站 , 点击链接 访问体验更佳

前言

首先发一段劝退说辞:我相信点进本文的人自建邮局的目的更多地是为了能用自己的域名邮箱,收发邮件?

仅收不发,推荐使用 https://www.cloudflare.com/zh-cn/developer-platform/products/email-routing/

收发邮件,建议使用托管邮局, https://www.ali-exmail.cn/free/ https://exmail.qq.com/qy_mng_logic/register https://ym.163.com/ https://www.feishu.cn/product/email 等等,均有一定免费的邮箱额度,送达率高且有详细文档,足够个人使用。

自建邮局有以下缺陷:

配置复杂,技术门槛高。

维护成本高,需要定期更新和维护服务器。

邮件送达率不稳定,配置不当容易进入垃圾邮件箱。

...

好吧,如果你出于学习目的,仍然想要尝试自建邮局,那么就开始吧!

致谢

新一代 Linux 服务器运维管理面板 1Panel 专业版按年订阅 八折优惠 : https://www.lxware.cn/1panel?code=Anyexyz

本测试服务器由 https://ono.ee 提供。

准备工作

已部署 1Panel 的服务器一台。 https://1panel.cn/docs/installation/online_installation/

域名一个,本文示例域名: anye.email

基本语文素养

部署

通过 1Panel 申请 TLS 证书

本步非必须,若您已拥有有效的 TLS 证书,可跳过此步骤。

参照此教程 https://1panel.cn/docs/user_manual/websites/certificate_create/ 获取 TLS 证书,如此处我将搭建的邮局所使用的域名为 anye.email ,则申请该域名证书,同时需要注意,勾选 推送证书到本地目录按钮 ,填写一个易于使用的路径,如此处 /ssl/anye.email

安装 Mailserver

在 应用商店 中找到 邮件服务 分类,找到 Mailserver 点击 安装 :

填写域名,端口等信息,勾选 端口外部访问

注意:默认不需要修改端口信息,奈何部分云厂商被恶意用户滥用端口,导致部分端口被封禁,所以建议在安装前确认端口可用性,若不可用,请更换其他端口。

勾选 编辑 compose 文件 ,在 volumes 中添加最开始申请 TLS 证书的路径映射,点击 确认 开始安装。

services: mailserver: image: ghcr.io/docker-mailserver/docker- mailserver: 14.0 . 0 container_name: ${ CONTAINER_NAME } hostname: ${ MS_HOSTNAME } env_file: ./conf/mailserver.env ports:

  • "${PANEL_APP_PORT_SMTP}:25"
  • "${PANEL_APP_PORT_IMAP4_143}:143"
  • "${PANEL_APP_PORT_ESMTP_465}:465"
  • "${PANEL_APP_PORT_ESMTP_587}:587"
  • "${PANEL_APP_PORT_IMAP4_993}:993" volumes:
  • ./data/dms/mail-data/ :/var/mail/
  • ./data/dms/mail-state/ :/var/mail-state/
  • ./data/dms/mail-logs/ :/var/log/mail/
  • ./data/dms/config/ :/tmp/docker-mailserver/
  • /etc/localtime :/etc/localtime :ro
  • /ssl/anye .email/ :/ssl/anye .email/ :ro # 这里这里,示例内容 restart: always networks:
  • 1panel-network stop_grace_period: 1m labels: createdBy: "Apps" healthcheck: test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1" timeout: 3s retries: 0 networks: 1panel- network: external: true

配置 TLS

进入 Mailserver 安装目录,进入 conf 目录,找到 mailserver.env

搜索找到 SSL_TYPE ,设定为 manual ,同时修改 SSL_CERT_PATH 和 SSL_KEY_PATH 为映射的 TLS 证书路径:

SSL_TYPE =manual

These are only supported with SSL_TYPE=manual.

Provide the path to your cert and key files that you've mounted access to within the container.

路径仅供参考

SSL_CERT_PATH =/ssl/anye.email/fullchain.pem SSL_KEY_PATH =/ssl/anye.email/privkey.pem

创建首个账户

点击侧边栏 容器 ,找到 Mailserver 容器进入 终端

输入命令创建账户

// 创建邮箱账户: setup email add

// 示例: setup email add [email protected]

生成 DKIM

继续输入命令生成 DKIM

setup config dkim

生成的 DKIM 在容器内 /tmp/docker-mailserver/opendkim/keys/ 目录下,即主机 /opt/1panel/apps/mailserver/mailserver/data/dms/config/opendkim/keys/ ,找到其中的 mail.txt ,下载,导入到 DNS 解析中,示例:

DNS 解析

DKIM 记录

域名密钥识别邮件 (DKIM) 是一种身份验证协议,通过对电子邮件中的某些字段进行加密签名来验证邮件的真实性。它允许接收方验证发送方是否有权使用该域名,并确保邮件未被篡改。

mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; " "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzJawbBm2L76jTMES9GQyNdmxF/caall4YmalGUkmc00duE47ri0awAVieTgHPQ7GVBSZOO8FNY8TC6XntJij915B2O7dVqTKsZDLl27RN3YFNpu+2Y+XKb6yvpA0ZjlySt+LwIjfKRfz6EY/icuakuOt7s6b1KUodVkgX6ZWn8CyHcy7Msca//BeIsGhxxrYVTcSalOiOYN54i" "wPiRt/RbjIbbEmB4Enzqk+i2KeBJoNhwDdqhbLMyZXE0W0lX8Ztt5kQO8hJrc1eeH528V59Lp7YOprF5LMFhzoyTdxcg0sDWVItvWcxtIq0Sh6uAq8hubK6QS4x/LIMdWJvNZBWwIDAQAB" ) ; ----- DKIM key mail for anye.email

手动添加 DNS 记录时注意:

字段

记录类型

TXT

主机记录

mail._domainkey

记录值

合并上述 txt 文件内的记录值,把文件中的内容去掉双引号和换行,将其合并成一行。例如,示例记录内容会变成:

v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BA...写不下了不写了反正就是那些内容...8hubK6QS4x/LIMdWJvNZBWwIDAQAB

default._domainkey

DKIM选择器,标识此记录对应的密钥。通常管理员可自定义选择器名称。

v=DKIM1

DKIM协议的版本号,目前唯一有效值为 DKIM1 。

k=rsa

指定密钥的加密算法,目前主要使用 RSA 。

p=MIGfMA0...

公钥内容,用于验证邮件的 DKIM 签名。

SPF 记录

发送方策略框架 (SPF) 记录是一种 DNS TXT 记录,其中列出所有获得授权从特定域发送电子邮件的服务器。DNS TXT(“文本”)记录允许域管理员将任意文本输入到域名系统(DNS) 中。TXT 记录最初是为包含有关域的重要信息而创建的,但后来已经发展为服务其他目的。

示例

v =spf1 mx ~all

v=spf1 表示这是 SPF记录的版本号,目前只有一个版本

mx 表示授权由域名对应的MX记录中列出的IP地址发送邮件

SoftFail和HardFail是两种策略,用于指定未经授权的发件人邮件如何处理

~all 宽容策略。如果发件人的IP地址不在SPF记录中指定的允许列表中,那么收件方的邮件服务器不会拒绝该邮件,而是将该邮件标记为“软失败”,并将其放入接收方的垃圾邮件文件夹或者标记为垃圾邮件。

-all 严格策略。如果发件人的IP地址不在SPF记录中指定的允许列表中,那么收件方的邮件服务器会拒绝该邮件,并将其退回给发件人或者直接删除

DMARC 记录

基于域的消息身份验证、报告和一致性 (DMARC) 是一种验证电子邮件的方法。DMARC 政策在检查一个域的发送方策略框架 (SPF) 和 域名密钥识别邮件 (DKIM) 记录(这些都是额外的电子邮件身份验证方法)后,告诉接收电子邮件的服务器该怎么做。

示例

v =DMARC1 ; p=none; sp=none;

v=DMARC1

表示这是DMARC记录的版本号,目前唯一的有效值是 DMARC1 。

p=none

该字段定义了当接收服务器检测到邮件未通过身份验证时应采取的策略:

none :无操作。接收服务器不会拒绝或隔离未通过验证的邮件,只记录该行为以供报告。

quarantine :将未通过验证的邮件标记为垃圾邮件并隔离。

reject :拒绝未通过验证的邮件。

sp=none

针对子域的策略,和 p 字段功能类似。如果省略该字段,子域将遵循 p 字段指定的策略。

rua=mailto: [email protected]

定义接收DMARC聚合报告的电子邮件地址。报告包含有关验证结果的统计信息,帮助域管理员了解哪些邮件未通过验证。

ruf=mailto: [email protected]

定义接收DMARC失败报告的电子邮件地址。失败报告通常包含有关验证失败的详细信息,用于深入分析问题。

pct=100

指定该DMARC策略应用于多少百分比的邮件。默认值是 100 ,表示策略适用于所有邮件。如果设置为 50 ,则只有50%的邮件会被应用DMARC策略。

aspf=r

定义SPF对齐的严格程度:

r :宽松对齐,允许子域发送的邮件。

s :严格对齐,发送的邮件必须完全匹配SPF记录中的域。

adkim=r

定义DKIM对齐的严格程度:

r :宽松对齐,允许子域签名。

s :严格对齐,邮件的DKIM签名必须完全匹配域名。

A 记录

名称(主机名) : mail

类型 : A

值 : 154.26.209.188(示例)

这个A记录将域名 mail.anye.email 解析到IPv4地址 154.26.209.188(示例) 。当用户访问 mail.anye.email 时,DNS 会指向这个IP地址。

MX记录

名称(主机名) : @ (代表根域名 anye.email )

类型 : MX

值 : mail.anye.email

这个MX记录表示域名 anye.email 的邮件服务器是 mail.anye.email ,并将邮件服务交由该域名处理。

为了保证正常解析, mail.anye.email 需要一个对应的A记录(正好在配置中有对应的A记录: mail -> 154.26.209.188 )。

参考

测试

在邮箱客户端中输入服务器信息进行连接

发送测试邮件

参考文章

[1] https://www.cloudflare.com/zh-cn/developer-platform/products/email-routing/

[2] https://www.cloudflare.com/zh-cn/learning/dns/dns-records/dns-dkim-record/

[3] https://www.cloudflare.com/zh-cn/learning/dns/dns-records/dns-spf-record/

[4] https://www.cloudflare.com/zh-cn/learning/dns/dns-records/dns-dmarc-record/

[5] https://www.mail-tester.com/faq?lang=zh

[6] https://docker-mailserver.github.io/docker-mailserver/v14.0/config/environment/

[6] http://www.open-spf.org/SPF_Record_Syntax/

Anyeの小站 | 境内 Docker 镜像状态监控 | 1Panel Pro 永久折扣 | Halo Pro 永久折扣

4 0 17 引用 回复

0-kaze-芷 6h 13min ago #1

好文bd

0 0 引用 回复

乌龙熊 6h 12min ago #2

好帖,绑定

0 0 引用 回复

小蚊子 5h 59min ago #3

✉️私信 | ✈️TG-Bot | 广告位: 招租,每天1个鸡腿

0 0 引用 回复

鸡不择食 5h 59min ago #4

我前几天刚好搭建了.但是感觉功能确实有点弱,相当于只有服务端,不过资源占用很少. 我最后还是用mailu了.

☎️ 点击联系 | ✴️ 出鸡儿啰

✏️ 鸡霸日记 | ⭐PLEX永V10年号400 | iOS签名证书60质保1年

0 0 引用 回复

Anye 楼主 41min ago #5

@鸡不择食 #4 确实没有 web 端供直接使用,劝退里是不是应该加上

Anyeの小站 | 境内 Docker 镜像状态监控 | 1Panel Pro 永久折扣 | Halo Pro 永久折扣

0 0 引用 回复

内容 预览 对照

支持 markdown语法

鼓励友善发言,禁止人身攻击

xxxxxxxxxx

1

1 ​

AC娘

洋葱头

小黄鸡

发布评论

88

等级 Lv 4 鸡腿 1959 关注 0 回复 0 我 0

主题帖 11 评论数 294 粉丝 2 收藏 192 私信 0 发帖

快捷功能区 推荐阅读 管理记录 幸运抽奖 邀请好友 合作商家 友站链接

所有版块 日常 技术 情报 测评 交易 曝光 拼车 生活 贴图 推广 内版 Dev 无意义 沙盒

📈用户数目📈

目前论坛共有23058位seeker

🎉欢迎新用户🎉

Earful8638

sweetdog

jimmyhe

注册一个玩玩

xxs2023

saberashura

fijckf

suua

相关网站 LowEndTalk LowEndSpirit HostLoc ServerHunter

站内导航 关于本站 隐私协议 RSS订阅 sitemap

商业推广 商家申请规则 Premium Provider 合作商家展示

其他平台 电报频道 电报群组

联系我们

Copyright © 2022 - 2024 All rights Reserved

相关文章