poste.io邮局搭建

自建邮局

https://www.xiaoqikeji.com/index.php/archives/52/

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

视频教程:https://www.youtube.com/watch?v=jjysH0AXmZ4

准备工作

服务器一台 配置推荐4h4g 必须支持25端口(如不支持可以发工单可以申请 不过有些厂商确实是不开放这个端口 所以这种就不适合)视频演示中的机器是香港的Niihost BGP线路 点我访问
域名一个 (以下演示平台为CloudFlare 其他平台也一样解析即可)

image_2024-08-11_15-40-53.png

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

记录类型————主机记录————记录值
A————mail————ip
Cname————smtp————mail.your-name.com
Cname————pop————mail.your-name.com
Cname————imap————mail.your-name.com
MX————@————mail.your-name.com
TXT————@————v=spf1 mx -all 10
TXT————XXXXXdomainkey————?(配置完成后生成DKIM Key添加)
TXT———— _dmarc————v=DMARC1; p=none; pct=100; rua=mailto:[email protected](看情况添加)

系统重置为debian12

首先,确保你的服务器已经安装了 Docker 和 Docker Compose。如果还没有安装,可以执行以下命令来安装:

sudo apt update
sudo apt upgrade -y
sudo apt install -y docker.io docker-compose

创建目录结构

sudo mkdir -p /opt/poste/data
sudo mkdir -p /opt/poste/letsencrypt
sudo mkdir -p /opt/poste/www

进入目录

cd /opt/poste

创建 Docker Compose 文件

在 /opt/poste 目录下创建 docker-compose.yml 文件: 推荐在文档编辑,直接粘贴格式打乱可能会报错!!!

sudo nano /opt/poste/docker-compose.yml

(没有安装nano可执行以下命令安装 如安装或系统自带可跳过这步)

sudo apt update
sudo apt install nano

version: '3'

services:
  poste:
    image: analogic/poste.io
    container_name: poste
    hostname: mail.your-name.com
    domainname: your-name.com
    restart: always
    ports:
      - "25:25"
      - "80:80"
      - "443:443"
      - "110:110"
      - "995:995"
      - "143:143"
      - "993:993"
      - "587:587"
    volumes:
      - /opt/poste/data:/data
      - /opt/poste/letsencrypt/live:/etc/letsencrypt/live
      - /opt/poste/letsencrypt/archive:/etc/letsencrypt/archive
      - /opt/poste/letsencrypt/renewal:/etc/letsencrypt/renewal
      - /opt/poste/www:/var/www/html
    environment:
      - HTTPS=ON

  certbot:
    image: certbot/certbot
    container_name: certbot
    volumes:
      - /opt/poste/letsencrypt:/etc/letsencrypt
      - /opt/poste/www:/var/www/html
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done'"

运行 Poste.io 容器 使用 Docker Compose 启动 Poste.io 服务:

sudo docker-compose up -d poste

运行成功后就可以访问站点了 mail.your-name.com
申请TLS证书与配置DKIM Key记录 最后添加到TXT记录即可

2024年11月1号更新

安装Docker

sudo apt update

sudo apt install -y docker.io

启动Docker

sudo systemctl start docker

sudo systemctl enable docker

创建脚本

nano install_poste.sh

#!/bin/bash
# Poste.io 邮件服务器安装脚本

echo "Poste.io 是一个开源的邮件服务器解决方案。"
echo "教程介绍: https://www.youtube.com/watch?v=vGkkoZQlBJ8"
echo "-------------------------------------------------------"

# 检测端口 25 是否可用
echo "端口检测"
port=25
timeout=3
if echo "quit" | timeout $timeout telnet smtp.qq.com $port | grep 'Connected'; then
  echo "端口 $port 当前可用"
else
  echo "端口 $port 当前不可用,请检查网络设置"
  exit 1
fi

echo "------------------------"
echo "1. 安装           2. 更新           3. 卸载"
echo "------------------------"
echo "0. 返回上一级"
echo "------------------------"
read -e -p "输入你的选择: " choice

case $choice in
    1)
        read -e -p "请设置邮箱域名 (例如 mail.your-name.com): " yuming
        mkdir -p /home/docker
        echo "$yuming" > /home/docker/mail.txt
        echo "------------------------"
        echo "先解析以下 DNS 记录:"
        echo "A           mail            <你的服务器IP>"
        echo "CNAME       imap            $yuming"
        echo "CNAME       pop             $yuming"
        echo "CNAME       smtp            $yuming"
        echo "MX          @               $yuming"
        echo "TXT         @               v=spf1 mx ~all"
        echo "TXT         ?               ?"
        echo "------------------------"
        echo "按任意键继续..."
        read -n 1 -s -r -p ""

        # 启动 Poste.io 容器
        docker run \
            --net=host \
            -e TZ=Europe/Prague \
            -v /home/docker/mail:/data \
            --name "mailserver" \
            -h "$yuming" \
            --restart=always \
            -d analogic/poste.io

        echo "Poste.io 已安装完成。访问 https://$yuming 进行配置。"
        ;;

    2)
        echo "正在更新 Poste.io 邮件服务器..."
        docker rm -f mailserver
        docker pull analogic/poste.io
        docker run \
            --net=host \
            -e TZ=Europe/Prague \
            -v /home/docker/mail:/data \
            --name "mailserver" \
            -h "$yuming" \
            --restart=always \
            -d analogic/poste.io
        echo "更新完成,访问 https://$yuming 进行检查。"
        ;;

    3)
        echo "正在卸载 Poste.io..."
        docker rm -f mailserver
        docker rmi -f analogic/poste.io
        rm /home/docker/mail.txt
        rm -rf /home/docker/mail
        echo "Poste.io 已卸载。"
        ;;

    0)
        echo "返回上一级。"
        ;;
    *)
        echo "无效的选择,请重试。"
        ;;
esac


运行脚本

chmod +x install_poste.sh

./install_poste.sh

添加新评论