怎样使用Poste.io自建邮局

2023年9月15日 | 分类: 【技术】

原文:https://www.nodeseek.com/post-20417-1

介绍

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
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:
      - 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. 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