介绍

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            mail                                               1.2.3.4 (your ip)
TXT            _dmarc                        v=DMARC1; p=none; pct=100; rua=mailto:mail@your-domain.com
CNAME    imap                                               mail.your-domain.com
CNAME    smtp                                               mail.your-domain.com
CNAME    pop                                               mail.your-domain.com
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:
      - LETSENCRYPT_EMAIL=admin@your-domain.com
      - 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.设置管理员账户以及密码,然后进入后台管理页面。

2.配置 Let’s Encrypt 证书。

Common name 输入 mail.huyal.com,然后点保存生成证书。

创建 dkim 密钥,生成 key,添加到 DNS 解析记录,就是上面最后一条解析 _s20160910378._domainkey.your-domain.com

左侧点击 Virtual domains 然后点击域名进行配置。
点击 DKIM keys,然后点击 Generate new key,生成 key,添加到 DNS 解析记录,就是上面最后一条解析
s20250329318._domainkey.huyal.com. IN TXT "k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtll3MSSm4BCVuJKdu5sU0nNJPcaaLEM/Ik7xsr+k08m760qd3xWd0gGsugibwuzK/kHFOmGRqhKb8rYgNh7teuSwuOGoOLR7YJZ8CDWXHfEl3Oznh4PNwbCUQdQrpjCQy3ZYRX1HWbqHpnfvWitS7DwfLqvlEeR01t13NjQ417U0oksez6aeYn+H9jS+diIKWhzOpc4J4B5hylAXD4vT"

域名:s20250329318._domainkey.huyal.com
TXT
k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtll3MSSm4BCVuJKdu5sU0nNJPcaaLEM/Ik7xsr+k08m760qd3xWd0gGsugibwuzK/kHFOmGRqhKb8rYgNh7teuSwuOGoOLR7YJZ8CDWXHfEl3Oznh4PNwbCUQdQrpjCQy3ZYRX1HWbqHpnfvWitS7DwfLqvlEeR01t13NjQ417U0oksez6aeYn+H9jS+diIKWhzOpc4J4B5hylAXD4vT

配置邮件客户端

第三方客户端 SMTP/IMAP/POP3 配置
协议    服务器地址    端口    SSL
SMTP    mail.your-domain.com,smtp.your-domain.com    25, 465, 587    SSL/TLS
IMAP    mail.your-domain.com,imap.your-domain.com    993, 143    SSL/TLS
POP3    mail.your-domain.com,pop.your-domain.com    995, 110    SSL/TLS

参考:https://poste.io/doc

最后修改:2025 年 03 月 30 日
如果觉得我的文章对你有用,请随意赞赏