Maddy:多合一邮件服务器(all-in-one mail server)

Maddy是一款用Go语言开发的邮件服务器,它实现了运行电子邮件服务器所需的所有功能。

Maddy用一个具有统一配置和最低维护成本的守护进程取代了Postfix、Dovecot、OpenDKIM、OpenSPF、OpenDMARC 等程序。

上面的介绍摘自项目的主页。通俗点讲就是部署特别方便,就一个二进制文件和一个配置文件,下载下来改改配置就能用。

Maddy是非常适合个人使用的电子邮件服务器,下面记录一下在Debian10部署的过程。

开始之前先配置几个dns解析记录,本文以cloudflare的dns解析界面示例。

添加一个a记录,假设名称是mx1:

添加一个mx记录,名称@,记录值是你之前添加的a记录:

添加一个txt记录,名称_dmarc,记录值:v=DMARC1; p=none; rua=mailto:imlala@233.fi

注:邮箱换成你自己的,用于接收关于dmarc的检测报告。

添加一个txt记录,名称@,记录值:v=spf1 mx ip4:109.238.3.123/32 -all

注:IP地址换成你自己的服务器IP。

做完上面的配置后,现在检查一下机器的25/465/587/993/143端口有没有被占用以及这些端口有没有被服务器商家屏蔽。

有些Debian10的系统默认带有exim4,会占用25端口,可以先卸载掉。

apt remove exim4-base
apt autoremove

安装需要用到的包/下载解压maddy:

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/

创建需要用到的目录,复制相应的文件到对应的目录:

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证书。

如果你的机器上没有nginx(没有任何程序占用80端口)可以直接用certbot内置的web服务器来申请ssl证书:

certbot certonly --standalone --agree-tos --no-eff-email --email xxxxx@example.com -d mx1.233.fi

如果你的机器上有nginx,那么可以再装一个certbot的nginx插件:

apt -y install python-certbot-nginx

然后新建一个nginx站点配置文件:

nano /etc/nginx/conf.d/maddy.conf

写入一个最小的nginx站点配置:

server {
listen       80;
server_name  mx1.233.fi;
}

然后使用certbot的nginx插件来申请ssl证书:

certbot --nginx --agree-tos --no-eff-email --email xxxxx@example.com

maddy是没有web客户端的,考虑到有人可能会自己搭建web客户端,比如rainloop这类,所以这里提供了nginx申请证书的方法。

实际上可以直接用本地的客户端,比如thunderbird、foxmail这些。

现在需要配置acl,让maddy这个用户有权限读取证书:

setfacl -R -m u:maddy:rx /etc/letsencrypt/{live,archive}

接下来编辑maddy的配置文件:

nano /etc/maddy/maddy.conf

修改下面列出的配置:

$(hostname) = mx1.233.fi
$(primary_domain) = 233.fi
$(local_domains) = $(primary_domain)
tls file /etc/letsencrypt/live/mx1.233.fi/fullchain.pem /etc/letsencrypt/live/mx1.233.fi/privkey.pem

启动maddy以及设置开机自启:

systemctl enable --now maddy.service

查看运行状态,确保正常:

systemctl status maddy.service

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

查看下面的文件(域名换成你自己的)获取dkim密钥:

cat /var/lib/maddy/dkim_keys/233.fi_default.dns

内容类似于:

v=DKIM1; k=rsa; p=MIIBIjANCgkqhkiG9w2BAQEFTAOCAJ6AMSIBC......

添加一个txt解析记录:

做完上面这些后,maddy就已经部署好了。现在可以尝试添加用户了。

创建一个用户账号,这里的用户名必须是电子邮件的地址:

maddyctl creds create imlala@233.fi

还需要创建一个imap本地存储账户与之关联,电子邮件的地址务必与用户账号的地址保持一致:

maddyctl imap-acct create imlala@233.fi

在本地使用thunderbird客户端登录,你可以选择多种不同的登录验证方式。

比如说用993/465:

或者143/587:

最后测试一下邮件服务器的得分:

全部为采集文章,文中的 联系方式 均不是 本人 的!

发表评论