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

介绍

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

快速安装

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

Dns配置

本文以Debian为例

为了能够正常使用邮件服务,需要配置域名的 MX 记录,将邮件服务器的地址指向你的域名。下文以mail.your-domain.com为例。
记录类型主机记录记录值
Amail1.2.3.4 (your ip)
MXyour-domain.commail.your-domain.com #优先级10
TXTyour-domain.comv=spf1 mx ~all
TXT_dmarcv=DMARC1; p=none; pct=100; rua=mailto:admin@your-domain.com
CNAMEimapmail
CNAMEsmtpmail
CNAMEpopmail
TXT_s20160910378._domainkey.your-domain.com #全部配置完成,去后台Virtual domains,生成DKIM key再填入k=rsa;p=MII……… #全部配置完成,去后台Virtual domains,生成DKIM key再填入
另外需要联系你的 VPS 厂商,设置 PTR 记录,即 IP 反向解析,请设置 1.2.3.4的 PTR 记录为 mail.your-domain.com 提高邮件到达率。

修改VPS hostname

hostnamectl set-hostname mail.your-domain.com
# 修改hosts文件
vi /etc/hosts
# 添加一行
127.0.1.1 localhost.localdomain mail.your-domain.com

使用官方源安装 Docker

以下操作需要在 root 用户下完成,请使用 sudo -i 或 su root 切换到 root 用户进行操作。

首先,安装一些必要的软件包:

apt update -y
apt upgrade -y
apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates -y

然后加入 Docker 的 GPG 公钥和 apt 源:

curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list

然后更新系统后即可安装 Docker CE:

apt update -y
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

此时可以使用 docker version 命令检查是否安装成功:

root@debian ~ # docker version
Client: Docker Engine - Community
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:52:17 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.2
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.4
  Git commit:       659604f
  Built:            Thu May 25 21:52:17 2023
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

安装 Docker Compose

因为我们已经安装了 docker-compose-plugin,所以 Docker 目前已经自带 docker compose 命令,基本上可以替代 docker-compose

root@debian ~ # docker compose version
Docker Compose version v2.18.1

如果某些镜像或命令不兼容,则我们还可以单独安装 Docker Compose:

我们可以使用 Docker 官方发布的 Github 直接安装最新版本:

curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

此时可以使用 docker-compose version 命令检查是否安装成功:

root@debian ~ # docker-compose version
Docker Compose version v2.18.1

修改 Docker 配置

以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘 (泪的教训):

cat > /etc/docker/daemon.json << EOF
{
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "20m",
        "max-file": "3"
    },
    "ipv6": true,
    "fixed-cidr-v6": "fd00:dead:beef:c0::/80",
    "experimental":true,
    "ip6tables":true
}
EOF

然后重启 Docker 服务:

systemctl restart docker

好了,我们已经安装好了 Docker 和 Docker Compose,然后就可以开始愉快的安装各种软件,限于篇幅,我们不再赘述,今后慢慢介绍安装各种 Docker 软件的方法。

安装Poste.io

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

services:
  mailserver:
    image: analogic/poste.io
    hostname: mail.your-domain.com
    environment:
      - LETSENCRYPT_EMAIL=admin@your-domain.com
      - LETSENCRYPT_HOST=mail.your-domain.com
      - VIRTUAL_HOST=mail.your-domain.com
      - DISABLE_CLAMAV=TRUE
      - DISABLE_RSPAMD=TRUE
      - TZ=Asia/Shanghai
      - HTTPS=ON
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./mail-data:/data
    network_mode: "host"
    restart: always
服务端口说明
SMTP25SMTP 服务端口
IMAP143IMAP 服务端口
POP3110POP3 服务端口
SMTPS465SMTPS 服务端口
IMAPS993IMAPS 服务端口
POP3S995POP3S 服务端口
MSA587SMTP 端口主要由电子邮件客户端在 STARTTLS 和身份验证之后使用
Sieve4190远程筛子设置
Webmail80Webmail 服务端口
Webmail443Webmail 服务端口
  • 请注意修改里面的域名和存储路径。
  • 禁用反病毒功能(DISABLE_CLAMAV=TRUE)、禁用反垃圾邮件功能(DISABLE_RSPAMD=TRUE),可以大幅减低内存和CPU占用,请酌情设置禁用选项。
  • 禁用WEB收发功能(DISABLE_ROUNDCUBE=TRUE),可以进一步减少资源占用,不过非必要不建议禁止。
  • 80http端口,可以根据自己的需求修改。(默认开启https支持,如不需要可以修改docker-compose.yml文件)

启动Poste.io

docker-compose up -d

停止/删除Poste.io

docker-compose down

配置Poste.io

通过浏览器访问https://mail.your-domain.com,进入Poste.io的配置页面,按照提示进行配置即可。

配置邮件客户端

协议服务器地址端口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

参考:https://www.nodeseek.com/post-20417-1/https://u.sb/debian-install-docker/

上一篇
下一篇