699 字
3 分钟
Docker部署Poste.io企业邮局

前言#

很多企业都有自建邮局的需求,本篇介绍如何使用Docker部署开源的Poste.io邮局系统。

需要占用的端口

80 - HTTP(用于 web 界面和未加密的邮件服务)
443 - HTTPS(用于加密的 web 界面和邮件服务)
25 - SMTP(用于发送邮件)
587 - SMTP(用于加密的邮件发送)
993 - IMAP(用于加密的 IMAP 邮件接收)
995 - POP3(用于加密的 POP3 邮件接收)
110 - POP3(用于未加密的 POP3 邮件接收)
143 - IMAP(用于未加密的 IMAP 邮件接收)

1:检查25端口是否能通#

apt update && apt install telnet -y
telnet smtp.gmail.com 25
  • 如果显示下面的信息就代表是通的
Connected to smtp.gmail.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP d2e1a72fcca58-71dd9d6e713sm17347b3a.23 - gsmtp

2:域名解析(以cloudflare为例)#

类型名称内容代理状态TTL
Amail服务器IP仅 DNS自动
CNAMEimapmail.example.com仅 DNS自动
CNAMEpopmail.example.com仅 DNS自动
CNAMEsmtpmail.example.com仅 DNS自动
MXexample.commail.example.com仅 DNS自动
TXTexample.comv=spf1 mx ~all仅 DNS自动
TXTs20241002362._domainkeyk=rsa; p=MIIBIjA…xXX仅 DNS自动

最后一条TXT记录需要部署完成后进面板查看名称和内容。

替换example.com为你的域名

3:docker-compose.yaml启动#

services:
  mailer:
    image: analogic/poste.io
    container_name: mailer
    restart: always
    hostname: mail.example.com  # 容器内主机名替换你的域名
    network_mode: host
    environment:
      - TZ=Asia/Shanghai  # 时区设置
      - DISABLE_CLAMAV=TRUE  # 禁用 ClamAV
      - DISABLE_RSPAMD=FALSE  # 启用 Rspamd
      - DISABLE_ROUNDCUBE=FALSE  # 启用 Roundcube
    volumes:
      - ./mailer:/data

4:进入面板#

  • mail.example.com使用这个域名进入管理面板

  • 第一行默认,第二行设置管理员邮箱,例如:admin@example.com,第三行输入管理员密码,smtp密码也是这个

  • 左侧选择系统设置,然后上面找到TLS证书,然后申请证书。通用名默认,替代名称里把smtp这些域名也填入进去,然后申请,查看下面的日志,申请完成后保存即可。

  • 然后左侧选择虚拟域名,然后点击域名,找到DKlM key,然后点击钥匙按钮激活,然后域名解析TXT类型的验证。

  • 然后用管理员邮箱登录,测试发邮件即可。


poste.io批量创建邮箱脚本#

#!/bin/bash

# Poste.io 容器ID或名称
CONTAINER_ID="mailer"

# 邮箱的@后缀,也就是根域名
DOMAIN="example.com"

# 所有邮箱账户的统一密码
PASSWORD="admin123456"

# 如果域名不存在,则创建域名
echo "创建域名 $DOMAIN (如果不存在)"
docker exec $CONTAINER_ID poste domain:create $DOMAIN

# 创建邮箱账户
for i in {100..200}
do
    EMAIL="$i@$DOMAIN"
    echo "正在创建邮箱: $EMAIL"
    docker exec $CONTAINER_ID poste email:create $EMAIL $PASSWORD
    
    # 检查上一个命令的退出状态
    if [ $? -eq 0 ]; then
        echo "成功创建邮箱 $EMAIL"
    else
        echo "创建邮箱 $EMAIL 失败"
    fi
    
    # 可选:添加小延迟以避免对服务器造成过大压力
    sleep 1
done

echo "邮箱创建过程完成。"

Docker部署Poste.io企业邮局
https://emohe.cn/posts/14/
作者
阿涛の小破站
发布于
2025-01-14
许可协议
CC BY-NC-SA 4.0