想自建邮件服务器?来试试 Maddy __2023年8月5日 __3条评论 __296次阅读 __0人点赞 __Tao_Qi 介绍: Maddy 是一款用 Go 语言开发的邮件服务器,部署方便,资源占用少,是一款适合个人使用的邮箱服务器。
应 hug1013 的回复写一篇部署教程,其他的Seeker如果有想要部署的项目也可以在评论区提出来哦。 环境要求: 需要开放25端口,可以在本地服务器上使用如下指令检测:
[code]
telnet [ip地址] 25
[/code]
如果端口是打开的,你会看到类似这样的输出:
[code]
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix
[/code]
如果端口是关闭的,你会看到类似这样的输出:
[code]
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
[/code]
可以尝试发工单要求开放25端口,不过一般很难成功。 部署方法: 第一步:更新源并安装依赖 Ubuntu/Debian:
[code]
apt update -y && apt upgrade -y
[/code]
Centos:
[code]
yum update -y && yum upgrade -y
[/code]
第二步:安装并配置Docker 安装Docker:
[code]
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh ./get-docker.sh
[/code]
启动Docker:
[code]
sudo systemctl start docker
[/code]
设置Docker在开机时自动启动:
[code]
sudo systemctl enable docker
[/code]
第三步:获取TLS证书 安装Certbot:
Ubuntu/Debian:
[code]
sudo apt-get install certbot
[/code]
Centos:
[code]
sudo yum install certbot
[/code]
获取TLS证书[记得修改成自己域名]:
[code]
sudo certbot certonly --standalone -d mail.example.com
[/code]
按照提示操作,将获得证书和私钥,存储在 /etc/letsencrypt/live/mail.example.com/ 目录下。 第四步:创建Docker数据卷
[code]
docker volume create maddydata
[/code]
第五步:安装并启动maddy容器
[code]
docker run -d --name maddy \
-e MADDY_HOSTNAME=mail.example.com \
-e MADDY_DOMAIN=example.com \
-v maddydata:/data \
-p 25:25 \
-p 143:143 \
-p 587:587 \
-p 993:993 \
foxcpp/maddy:latest
[/code]
第六步:拷贝TLS证书并重启Docker容器
[code]
docker cp /etc/letsencrypt/live/mail.example.com/cert.pem maddy:/data/tls/fullchain.pem
docker cp /etc/letsencrypt/live/mail.example.com/privkey.pem maddy:/data/tls/privkey.pem
docker restart maddy
[/code]
| 第七步:配置 DNS 记录解析 记录类型 | 域名 | 值 |
|---|---|---|
| A | mail.example.com. | 服务器ipv4地址 |
| A | example.com. | 服务器ipv4地址 |
| AAAA | mail.example.com. | 服务器ipv6地址(如果有) |
| AAAA | example.com. | 服务器ipv6地址(如果有) |
| MX | example.com. | mail.example.com |
| TXT | mail.example.com. | v=spf1 mx ~all |
| TXT | example.com. | v=spf1 mx ~all |
| TXT | _dmarc.example.com. | v=DMARC1; p=quarantine; ruf=mailto:[[email protected]](</cdn-cgi/l/email-protection>) |
| TXT | _mta-sts.example.com. | v=STSv1; id=1 |
| TXT | _smtp._tls.example.com. | v=TLSRPTv1;rua=mailto:[[email protected]](</cdn-cgi/l/email-protection>) |
还需要生成 DKIM 密钥来配置 DKIM 记录解析,具体步骤如下:
- 在查找
example.org_default.dns.,这应该在第一次启动时生成 - 打开这个文件,这将显示类似于
v=DKIM1; k=ed25519; p=nAcUUozPlhc4VPhp7hZl owES7j7OlEv0laaDEDBAqg=的内容。为default._domainkey.example.com.添加TXT记录,值设置为这个内容。
第八步:创建发送账户
[code]
docker exec -it maddy sh
maddyctl creds create [[email protected]](</cdn-cgi/l/email-protection>)
maddyctl imap-acct create [[email protected]](</cdn-cgi/l/email-protection>)
[/code]
安全上的注意事项:
- 推荐运行启用 DNSSEC 验证的自己的 DNS 解析器。
- SMTP 本身并不受活动攻击的保护。建议使用 MTA-STS 策略,使得发信服务器在发送电子邮件到接收服务器时,强制使用经过身份验证的 TLS 连接,以防止主动的网络攻击。
创建如下文件,使他能在https://mta-sts.example.com/.well-known/mta-sts.txt中找到:
[code]
version: STSv1
mode: enforce
max_age: 604800
mx: mail.example.org
[/code]
- 推荐设置 TLSA (DANE) 记录。
使用 https://www.huque.com/bin/gen_tlsa 去创建一个,端口为 25, 传输协议改为 "tcp",域名改为 MX 主机名。
例如:
[code]
_25._tcp.mail.example.com. TLSA 3 1 1 7f59d873a70e224b184c95a4eb54caa9621e47d48b4a25d312d83d96e3498238
[/code]
相关地址: 项目地址:http://github.com/foxcpp/maddy 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议
qige说道: 2023年8月5日 下午11:43
ratneo说道: 2023年8月6日 上午10:52 很赞的教程,感谢大佬的无私奉献
参照着给自己建了个私人邮局(中间还是踩了些坑的)
晚点放个带webmail的补充版 效果图
回复
yun说道: 2023年8月6日 下午3:21
发表回复 取消回复电子邮件地址不会被公开。必填项已用 标注 __ __