介绍
poste.io 邮件服务基于 Docker 搭建,用的是 Haraka + Dovecot + SQLite 邮件系统,能够轻易实现邮件收发、多域名控制、邮箱容量控制、邮件杀毒、邮件过滤以及 Webmail 等基础功能。同时,Poste 还提供了投递统计分析、客户端自动适配、一键安装SSL、邮件转发、邮件别名、Catch-All 等相当有用的功能。
快速安装
poste.io原生支持docker,占用资源较少,安装简单,适合个人使用。
dns配置
为了能够正常使用邮件服务,需要配置域名的 MX 记录,将邮件服务器的地址指向你的域名。下文以
mail.your-domain.com
为例。
记录类型 | 主机记录 | 记录值 |
---|---|---|
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:[email protected] |
CNAME | imap | |
CNAME | smtp | |
CNAME | pop | |
TXT | s20160910378.domainkey.your-domain.com | k=rsa;p=MII......... |
最后还需要到 VPS 服务商处添加一个反向 DNS,也就是 rDNS 解析,把 IP 解析到 mail.your-domain.com 这个邮件域名就好了,这个为可选项,有些 VPS 商家不提供这种服务。
以上 DNS 解析,至少需要添加前面三个 A 解析和 MX 解析,后面几个解析为可选,不添加也能用。
修改VPS hostname
hostnamectl set-hostname mail.your-domain.com
# 修改hosts文件
vim /etc/hosts
# 添加一行
127.0.1.1 localhost.localdomain mail.your-domain.com
安装docker
# 安装docker
curl -sSL https://get.docker.com/ | sh
# 启动docker
systemctl start docker
# 设置开机启动
systemctl enable docker
安装poste.io
用docker compose安装,在要部署
poste.io
的目录下创建docker-compose.yml文件
version: '3.7'
services:
mailserver:
image: analogic/poste.io
hostname: mail.your-domain.com
ports:
- "25:25"
- "110:110"
- "143:143"
- "587:587"
- "993:993"
- "995:995"
- "4190:4190"
- "465:465"
- "8808:80"
- "8843:443"
environment:
- [email protected]
- LETSENCRYPT_HOST=mail.your-domain.com
- VIRTUAL_HOST=mail.your-domain.com
- DISABLE_CLAMAV=TRUE
- TZ=Asia/Shanghai
- HTTPS=OFF
volumes:
- /etc/localtime:/etc/localtime:ro
- ./mail-data:/data
服务 | 端口 | 说明 |
---|---|---|
SMTP | 25 | SMTP 服务端口 |
IMAP | 143 | IMAP 服务端口 |
POP3 | 110 | POP3 服务端口 |
SMTPS | 465 | SMTPS 服务端口 |
IMAPS | 993 | IMAPS 服务端口 |
POP3S | 995 | POP3S 服务端口 |
MSA | 587 | SMTP 端口主要由电子邮件客户端在 STARTTLS 和身份验证之后使用 |
Sieve | 4190 | 远程筛子设置 |
Webmail | 8808 | Webmail 服务端口 |
Webmail | 8843 | Webmail 服务端口 |
请注意修改里面的域名和存储路径。
禁用反病毒功能(DISABLE_CLAMAV=TRUE)、禁用反垃圾邮件功能(DISABLE_RSPAMD=TRUE),可以大幅减低内存和CPU占用,请酌情设置禁用选项。
禁用WEB收发功能(DISABLE_ROUNDCUBE=TRUE),可以进一步减少资源占用,不过非必要不建议禁止。
8808
为http端口,可以根据自己的需求修改。
# 启动poste.io
docker-compose up -d
配置NGINX反向代理
upstream poste_backend {
server 127.0.0.1:8808;
}
server {
listen 80;
listen 443 ssl http2;
server_name mail.your-domain.com;
ssl_certificate /etc/nginx/conf.d/ssl/cert.pem;
ssl_certificate_key /etc/nginx/conf.d/ssl/key.pem;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
access_log /var/log/nginx/mail.log main;
location ^~ /.well-known {
proxy_pass http://poste_backend;
}
location / {
proxy_pass http://poste_backend;
proxy_set_header Host $host;
proxy_intercept_errors off;
# real-ip
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
# websocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_read_timeout 86400;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
if ($server_port = 80 ) {
return 301 https://$host$request_uri;
}
}
配置poste.io
通过浏览器访问
https://mail.your-domain.com
,进入poste.io的配置页面,按照提示进行配置即可。
1、设置管理员账户以及密码,然后进入后台管理页面。
配置 Let’s Encrypt 证书。
创建 dkim 密钥,生成 key,添加到 DNS 解析记录,就是上面最后一条解析 s20160910378.domainkey.your-domain.com
左侧点击 Virtual domains 然后点击域名进行配置。
点击 DKIM keys,然后点击 Generate new key,生成 key,添加到 DNS 解析记录,就是上面最后一条解析 s20160910378.domainkey.your-domain.com
配置邮件客户端
第三方客户端
SMTP/IMAP/POP3
配置
协议 | 服务器地址 | 端口 | SSL |
---|---|---|---|
SMTP | mail.your-domain.com,smtp.your-domain.com | 25, 465, 587 | STARTTLS |
IMAP | mail.your-domain.com,imap.your-domain.com | 993, 143 | STARTTLS |
POP3 | mail.your-domain.com,pop.your-domain.com | 995, 110 | STARTTLS |