自建邮局 | Poste.io邮箱服务搭建教程

AI摘要

正在生成中……


介绍

poste.io 邮件服务基于 Docker 搭建,用的是 Haraka + Dovecot + SQLite 邮件系统,能够轻易实现邮件收发、多域名控制、邮箱容量控制、邮件杀毒、邮件过滤以及 Webmail 等基础功能。同时,Poste 还提供了投递统计分析、客户端自动适配、一键安装SSL、邮件转发、邮件别名、Catch-All 等相当有用的功能。

快速安装

poste.io原生支持docker,占用资源较少,安装简单,适合个人使用。

dns配置

为了能够正常使用邮件服务,需要配置域名的 MX 记录,将邮件服务器的地址指向你的域名。下文以mail.your-domain.com为例。

记录类型主机记录记录值
MXyour-domain.commail.your-domain.com
TXTyour-domain.comv=spf1 mx ~all
Amail1.2.3.4 (your ip)
TXT_dmarcv=DMARC1; p=none; pct=100; rua=mailto:mail@your-domain.com
CNAMEimapmail
CNAMEsmtpmail
CNAMEpopmail
TXT_s20160910378._domainkey.your-domain.comk=rsa;p=MII………

最后还需要到 VPS 服务商处添加一个反向 DNS,也就是 rDNS 解析,把 IP 解析到 mail.your-domain.com 这个邮件域名就好了,这个为可选项,有些 VPS 商家不提供这种服务。

posteio

以上 DNS 解析,至少需要添加前面三个 A 解析和 MX 解析,后面几个解析为可选,不添加也能用。

修改VPS hostname

1
2
3
4
5
6
7
hostnamectl set-hostname mail.your-domain.com

# 修改hosts文件
vim /etc/hosts

# 添加一行
127.0.1.1 localhost.localdomain mail.your-domain.com

安装docker

1
2
3
4
5
6
# 安装docker
curl -sSL https://get.docker.com/ | sh
# 启动docker
systemctl start docker
# 设置开机启动
systemctl enable docker

安装poste.io

用docker compose安装,在要部署poste.io的目录下创建docker-compose.yml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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
服务端口说明
SMTP25SMTP 服务端口
IMAP143IMAP 服务端口
POP3110POP3 服务端口
SMTPS465SMTPS 服务端口
IMAPS993IMAPS 服务端口
POP3S995POP3S 服务端口
MSA587SMTP 端口主要由电子邮件客户端在 STARTTLS 和身份验证之后使用
Sieve4190远程筛子设置
Webmail8808Webmail 服务端口
Webmail8843Webmail 服务端口

请注意修改里面的域名和存储路径。

禁用反病毒功能(DISABLE_CLAMAV=TRUE)、禁用反垃圾邮件功能(DISABLE_RSPAMD=TRUE),可以大幅减低内存和CPU占用,请酌情设置禁用选项。

禁用WEB收发功能(DISABLE_ROUNDCUBE=TRUE),可以进一步减少资源占用,不过非必要不建议禁止。

8808为http端口,可以根据自己的需求修改。

1
2
# 启动poste.io
docker-compose up -d

配置NGINX反向代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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、设置管理员账户以及密码,然后进入后台管理页面。

posteio

  1. 配置 Let’s Encrypt 证书。

posteio

posteio

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

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

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

posteio

配置邮件客户端

第三方客户端 SMTP/IMAP/POP3 配置

协议服务器地址端口SSL
SMTPmail.your-domain.com,smtp.your-domain.com25, 465, 587STARTTLS
IMAPmail.your-domain.com,imap.your-domain.com993, 143STARTTLS
POP3mail.your-domain.com,pop.your-domain.com995, 110STARTTLS