最近需要自建一个邮件服务器,主要对比了mailcow和poste,最后选择了poste。因为配置简单,基本功能都有,适合小规模使用。如果需要更多功能或更多自定义选项,可以看看mailcow。
使用默认配置,至少需要2GB内存的服务器,其中反病毒功能占用大部分内存。如果需要在1GB内存服务器部署,建议开1G swap,并禁用反病毒功能CLAMAV。若需要进一步降低内存占用,可以关闭垃圾邮件过滤RSPAMD。我只禁用了反病毒,运行npm和poste,服务器内存占用700M左右,所以负载不大的话1h1g的机器也能流畅运行。
搭建完成后发现mx记录会暴漏服务器ip,且如果邮件服务器域名mail.your-domain.com使用cloudflare在网页端可以收发信,但无法使用smtp。imap和pop3我没试。因此邮件服务器基本还是要独立出来。
1. 部署poste服务
配置docker:
使用docker compose部署poste:
services:
mailserver:
image: analogic/poste.io
container_name: mailserver
hostname: mail.your-domain.de # 修改主机名
ports:
- "8800:80"
- "4433:443"
- "25:25"
- "110:110"
- "143:143"
- "587:587"
- "993:993"
- "995:995"
- "4190:4190"
- "465:465"
environment:
- TZ=Asia/Shanghai
- HTTPS=OFF
- DISABLE_CLAMAV=TRUE # [可选]禁用反病毒功能以减少内存占用
# - DISABLE_RSPAMD=TRUE # [可选]禁用反垃圾邮件以减少内存占用
volumes:
- ./data:/data # 将本地目录挂载到容器的/data目录
restart: unless-stopped
docker compose up -d
解析mail.your-domain.com到服务器,并在npm设置反代、ssl
2. 配置poste服务
访问域名,设置管理员邮箱和密码
添加域名,这里添加you-domain.com
创建邮箱,并生成dkim记录。
设置相关dns解析:
记录类型 | 主机记录 | 记录值 |
---|---|---|
MX | your-domain.com | mail.your-domain.com |
TXT | your-domain.com | v=spf1 mx ~all |
A | 1.2.3.4 (your ip) | |
TXT | _dmarc | v=DMARC1; p=none; pct=100; rua=mailto:mail@your-domain.com |
CNAME | imap | |
CNAME | smtp | |
CNAME | pop | |
TXT | _s20160910378._domainkey.your-domain.com | k=rsa;p=MII……… |
在此可以便捷创建自定义dmarc记录https://powerdmarc.com/zh/dmarc-record-generator/
在vps服务商处添加rDNS解析,比如netcup在scp面板修改:
netcup可以在后台设置hostname,如果服务商无法在后台修改,可以手动设置hostname:
sudo hostnamectl set-hostname mail.your-domain.com
修改hosts文件
vim /etc/hosts
在127.0.0.1后添加一行
127.0.1.1 mail.your-domain.com mail
在此测试邮件健康度https://www.mail-tester.com/
3. 客户端设置
Submission (SMTP for clients)
- host: mail.your-domain.com
- port: 465
- TLS with authentication required
- username is whole email address username@domain.com
IMAP (preferred)
- host: mail.your-domain.com
- port: 993
- TLS
- username is whole email address username@domain.com
or POP3
- host: mail.your-domain.com
- port: 995
- TLS
- username is whole email address username@domain.com
4. api
poste.io的api功能比较全面,可以实现一些web端需要pro版才能使用的功能。poste使用REST API,并通过basic authorization提供管理员账号密码。我测试使用api批量创建邮箱并修改配额,能正常使用。如果在网页运行需要解决跨域问题,我使用了cors-anywhere代理,docker一键搭建https://hub.docker.com/r/testcab/cors-anywhere
参考
https://poste.io/doc/getting-started
https://www.nodeseek.com/post-20417-1
暂无评论内容