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:
最后测试一下邮件服务器的得分:
猿粪呐,这几天想找一个邮件程序,博主刚好就发了一个
那赶紧试试吧。
好奇怪只能收信息不能发信息
为何,我也是一样的
我也不清楚,估计是只收不发的吧
防火墙没开 25
一般vps都是封锁了对外25端口的连接的。所以不能发。
你还在用vultr对吧,如果是的话,我看了下这家应该是不能用25端口:https://www.vultr.com/docs/what-ports-are-blocked
在客户端把smtp的端口换成465或者587试下。
是的,我还在用Vultr,我尝试了smtp端口换成465或587都不行,估计是封锁了25端口,不过庆幸的是,不用下载thunderbird客户端也可以用,我用Rainloop+Maddy也是可以的。
lala,我想知道如何设置多域名呢?我在rn上配置成功了,但是想增加别的域名进去,也用那台rn的机器来作为别的域名的邮件服务器。
请不吝赐教,谢谢
抱歉这个我也没配置过,不太清楚,我看了下官方的文档有提到,你可以参考下:https://maddy.email/tutorials/setting-up/
我配置过,比较简单
1. 在 maddy 配置的里 $(local_domains) 加上第二个域名(注意配置变更可能导致第一个域名的 DKIMKEY 发生改变,maddy 重启之后,第一个域名的 DKMI DNS 记录可能也要改)
2. 第二个域名的 mx 记录指向第一个域名的 a 记录,例:我的 lin.moe (第二个域名) 的 mx 记录是指向 mx1.koi.moe (第一个域名) 的
3. 按照第一个域名同样的方式,配置好第二个域名的 DKIM, SPF 和 DMARC 的 dns 记录。
完成了。