介绍

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:[email protected]

CNAME

imap

mail

CNAME

smtp

mail

CNAME

pop

mail

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. 1、设置管理员账户以及密码,然后进入后台管理页面。

083f086e6c0ea80ae6036.png

  1. 配置 Let’s Encrypt 证书。

665601ef7b20bb48a4795.png
a3b5cea8a6e3a6b61ef07.png

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

左侧点击 Virtual domains 然后点击域名进行配置。

点击 DKIM keys,然后点击 Generate new key,生成 key,添加到 DNS 解析记录,就是上面最后一条解析 s20160910378.domainkey.your-domain.com

8b0c46665218fb98acd17.png

配置邮件客户端

第三方客户端 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

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