想自建邮件服务器?来试试 Maddy
介绍:
Maddy 是一款用 Go 语言开发的邮件服务器,部署方便,资源占用少,是一款适合个人使用的邮箱服务器。
环境要求:
需要开放25端口,可以在本地服务器上使用如下指令检测:
telnet [ip地址] 25
如果端口是打开的,你会看到类似这样的输出:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.example.com ESMTP Postfix
如果端口是关闭的,你会看到类似这样的输出:
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
可以尝试发工单要求开放25端口,不过一般很难成功。
部署方法:
第一步:更新源并安装依赖
Ubuntu/Debian:
apt update -y && apt upgrade -y
Centos:
yum update -y && yum upgrade -y
第二步:安装并配置Docker
安装Docker:
curl -fsSL https://get.docker.com -o get-docker.sh && sudo sh ./get-docker.sh
启动Docker:
sudo systemctl start docker
设置Docker在开机时自动启动:
sudo systemctl enable docker
第三步:获取TLS证书
安装Certbot:
Ubuntu/Debian:
sudo apt-get install certbot
Centos:
sudo yum install certbot
获取TLS证书[记得修改成自己域名]:
sudo certbot certonly --standalone -d mail.example.com
按照提示操作,将获得证书和私钥,存储在 /etc/letsencrypt/live/mail.example.com/ 目录下。
第四步:创建Docker数据卷
docker volume create maddydata
第五步:拷贝并重命名TLS证书
cd $(docker volume inspect maddydata --format '{{.Mountpoint}}')
cp /etc/letsencrypt/live/mail.example.com/cert.pem tls_cert.pem
cp /etc/letsencrypt/live/mail.example.com/privkey.pem tls_key.pem
第六步:安装并启动maddy容器
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
第七步:配置 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:postmaster@example.com |
TXT | _mta-sts.example.com | v=STSv1; id=1 |
TXT | _smtp._tls.example.com | v=TLSRPTv1;rua=mailto:postmaster@example.com |
还需要生成 DKIM 密钥来配置 DKIM 记录解析,具体步骤如下:
- 启动一个临时的Docker容器,该容器将使用相同的数据卷(
maddydata
),并运行DKIM密钥生成命令。
docker run --rm -it -v maddydata:/data foxcpp/maddy:latest dkim generate example.com default
- 然后从数据卷中获取生成的DKIM DNS记录。
sudo cat /var/lib/docker/volumes/maddydata/_data/dkim_keys/example.com_default.dns
这将显示类似于 v=DKIM1; k=ed25519; p=nAcUUozPlhc4VPhp7hZl+owES7j7OlEv0laaDEDBAqg=
的内容。为 default._domainkey.example.com
添加TXT记录,值设置为这个内容。
第八步:创建发送账户
docker exec -it maddy sh
maddyctl creds create postmaster@example.com
maddyctl imap-acct create postmaster@example.com
安全上的注意事项:
- 推荐运行启用 DNSSEC 验证的自己的 DNS 解析器。
- SMTP 本身并不受活动攻击的保护。建议使用 MTA-STS 策略,使得发信服务器在发送电子邮件到接收服务器时,强制使用经过身份验证的 TLS 连接,以防止主动的网络攻击。
推荐设置 TLSA (DANE) 记录。
相关地址:
原文链接:https://blog.fuyiran.link/Technology/18.html
版权声明:本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 傅说 (blog.fuyiran.link)