静看光阴荏苒
不管不顾不问不说也不念

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:

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

赞(6)
未经允许不得转载:荒岛 » Maddy:多合一邮件服务器(all-in-one mail server)
分享到: 更多 (0)

评论 14

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    猿粪呐,这几天想找一个邮件程序,博主刚好就发了一个

    光阴逆旅3年前 (2021-07-31) Google Chrome 90.0.4430.212 Google Chrome 90.0.4430.212 Mac OS X  10.15.3 Mac OS X 10.15.3回复
    • 那赶紧试试吧。

      LALA3年前 (2021-08-05) Google Chrome 86.0.4240.198 Google Chrome 86.0.4240.198 Windows 10 x64 Edition Windows 10 x64 Edition回复
  2. #2

    好奇怪只能收信息不能发信息 :cry:

    Foliage3年前 (2021-08-01) Opera 77.0.4054.277 Opera 77.0.4054.277 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 为何,我也是一样的

      苹果味3年前 (2021-08-03) Google Chrome 92.0.4515.107 Google Chrome 92.0.4515.107 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 我也不清楚,估计是只收不发的吧 :???:

        Foliage3年前 (2021-08-03) Opera 77.0.4054.277 Opera 77.0.4054.277 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 防火墙没开 25

      高峰3年前 (2021-08-04) Google Chrome 92.0.4515.107 Google Chrome 92.0.4515.107 Mac OS X  10.15.7 Mac OS X 10.15.7回复
    • 一般vps都是封锁了对外25端口的连接的。所以不能发。

      xbox3年前 (2021-08-04) Google Chrome 88.0.4324.182 Google Chrome 88.0.4324.182 Windows 7 x64 Edition Windows 7 x64 Edition回复
    • 你还在用vultr对吧,如果是的话,我看了下这家应该是不能用25端口:https://www.vultr.com/docs/what-ports-are-blocked
      在客户端把smtp的端口换成465或者587试下。

      LALA3年前 (2021-08-05) Google Chrome 86.0.4240.198 Google Chrome 86.0.4240.198 Windows 10 x64 Edition Windows 10 x64 Edition回复
      • 是的,我还在用Vultr,我尝试了smtp端口换成465或587都不行,估计是封锁了25端口,不过庆幸的是,不用下载thunderbird客户端也可以用,我用Rainloop+Maddy也是可以的。

        Foliage3年前 (2021-08-06) Opera 77.0.4054.277 Opera 77.0.4054.277 Windows 10 x64 Edition Windows 10 x64 Edition回复
  3. #3

    lala,我想知道如何设置多域名呢?我在rn上配置成功了,但是想增加别的域名进去,也用那台rn的机器来作为别的域名的邮件服务器。
    请不吝赐教,谢谢

    weeper2年前 (2022-10-14) Safari 15.6 Safari 15.6 iPhone iOS 15.7 iPhone iOS 15.7回复
    • 抱歉这个我也没配置过,不太清楚,我看了下官方的文档有提到,你可以参考下:https://maddy.email/tutorials/setting-up/

      LALA2年前 (2022-10-17) Google Chrome 106.0.0.0 Google Chrome 106.0.0.0 Windows 10 x64 Edition Windows 10 x64 Edition回复
    • 我配置过,比较简单

      1. 在 maddy 配置的里 $(local_domains) 加上第二个域名(注意配置变更可能导致第一个域名的 DKIMKEY 发生改变,maddy 重启之后,第一个域名的 DKMI DNS 记录可能也要改)
      2. 第二个域名的 mx 记录指向第一个域名的 a 记录,例:我的 lin.moe (第二个域名) 的 mx 记录是指向 mx1.koi.moe (第一个域名) 的
      3. 按照第一个域名同样的方式,配置好第二个域名的 DKIM, SPF 和 DMARC 的 dns 记录。

      完成了。

      Lindsay1年前 (2023-01-14) Firefox 108.0 Firefox 108.0 GNU/Linux x64 GNU/Linux x64回复

分享创造快乐

广告合作资源投稿