Total Pageviews

Tuesday 3 August 2021

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

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

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

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

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

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

添加一个a记录.假设hostname是mx1.

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

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

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

添加一个txt记录,名称@,记录值:v=spf1 mx ip4:vps-public-ip/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.urdomain.com

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

apt -y install python-certbot-nginx

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

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

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

server {
    listen       80;
    server_name  mx1.urdomain.com;
}

然后使用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.urdomain.com
$(primary_domain) = urdomain.com
$(local_domains) = $(primary_domain)

tls file /etc/letsencrypt/live/mx1.urdomain.com/fullchain.pem /etc/letsencrypt/live/mx1.urdomain.com/privkey.pem

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

systemctl enable --now maddy.service

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

systemctl status maddy.service

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

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

cat /var/lib/maddy/dkim_keys/urdomain.com_default.dns

内容类似于:

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

添加一个txt解析记录.

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

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

maddyctl creds create imlala@urdomain.com

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

maddyctl imap-acct create imlala@urdomain.com

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

比如说用993/465:


-------------------------------------------------

Composable all-in-one mail server.

maddy.email

Maddy Mail Server

Maddy Mail Server implements all functionality required to run a e-mail server. It can send messages via SMTP (works as MTA), accept messages via SMTP (works as MX) and store messages while providing access to them via IMAP. In addition to that it implements auxiliary protocols that are mandatory to keep email reasonably secure (DKIM, SPF, DMARC, DANE, MTA-STS).

It replaces Postfix, Dovecot, OpenDKIM, OpenSPF, OpenDMARC and more with one daemon with uniform configuration and minimal maintenance cost.

Note: IMAP storage is "beta". If you are looking for stable and feature-packed implementation you may want to use Dovecot instead. maddy still can handle message delivery business.

builds.sr.ht status Issues tracker


from https://github.com/foxcpp/maddy/






































No comments:

Post a Comment