[新服务] 通过maddy实现个人域名邮箱的自建(mail service)

目的

实现

先在cloudflare设置

  • A记录(maddy.xx.xx -> IP)
  • MX(xx.xx -> maddy.xx.xx)
  • TXT(_dmarc -> v=DMARC1; p=none; rua=mailto:[email protected])
  • TXT (xx.xx -> v=spf1 mx ip4:206.190.your-own.ip/32 -all)

确保端口25,465,587,993,143 可用

lsof -i:25,465,587,993,143

正式安装 – 确保nginx配置文件支持多站点独立配置

apt -y update
apt -y install acl zstd wget certbot
wget https://github.com/foxcpp/maddy/releases/download/v0.4.4/maddy-0.4.4+dcdf4a7-x86_64-linux-musl.tar.zst
unzstd maddy-0.4.4+dcdf4a7-x86_64-linux-musl.tar.zst
tar -xvf maddy-0.4.4+dcdf4a7-x86_64-linux-musl.tar
cd maddy-0.4.4+dcdf4a7-x86_64-linux-musl/

# 还是用默认的/etc/maddy比较好,不然要找默认命令来修改
mkdir /etc/maddy
cp maddy.conf /etc/maddy
cp maddy maddyctl /usr/bin
cp systemd/*.service /etc/systemd/system

# maddy不能直接运行在root用户下,务必创建一个单独的用户:
useradd -mrU -s /sbin/nologin -d /var/lib/maddy -c "maddy mail server" maddy


# (可选) 用certbot申请一个ssl证书
# maddy是没有web客户端的,如果自建web客户端,比如rainloop这类,则需要ssl
# 实际上可以直接用本地的客户端,比如thunderbird、foxmail这些。
### 如果没装nginx
certbot certonly --standalone --agree-tos --no-eff-email --email [email protected] -d maddy.xx.xx
### 如果你的机器上有nginx,安装certbot插件
apt -y install python-certbot-nginx
# 加一个单独站点的配置
cat > /etc/nginx/conf.d/maddy.conf <<EOF
server {
    listen       80;
    server_name  maddy.xx.xx;
}
EOF
# 申请
certbot --nginx --agree-tos --no-eff-email --email [email protected]


# 配置acl,让maddy这个用户有权限读取证书
setfacl -R -m u:maddy:rx /etc/letsencrypt/{live,archive}

# 编辑配置文件
vi /etc/maddy/maddy.conf
# 修改下面列出的配置:
$(hostname) = maddy.xx.xx
$(primary_domain) = xx.xx
$(local_domains) = $(primary_domain)

tls file /etc/letsencrypt/live/$(hostname)/fullchain.pem /etc/letsencrypt/live/$(hostname)/privkey.pem


# 启动并设置自动开机
systemctl enable --now maddy.service
systemctl status maddy.service

cloudflare补充设置dkim

maddy在第一次启动的时候会生成一个dkim密钥,所以现在来补充配置一下dkim的dns解析

# 查看下面的文件(域名换成你自己的)获取dkim密钥:
cat /var/lib/maddy/dkim_keys/xx.xx_default.dns

到此 – 在cloudflare总共需要设置5项

(可选)在搬瓦工的管理界面设置rdns反向DNS查询-提高非spam checker分数

验证域名邮箱的质量 https://www.mail-tester.com/

小技巧 – 可以用你创建的 [email protected] 都可以在[email protected] 收到邮件

Leave a Reply