Debian安装Mailu

安装Docker

  1. 更新包列表
    首先更新系统的包列表:
apt update
  1. 安装依赖
    确保安装以下必要的依赖包:
apt install apt-transport-https ca-certificates curl gnupg lsb-release -y
  1. 添加Docker的GPG密钥
    使用以下命令添加Docker官方的GPG密钥:
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 设置Docker的APT源
    通过以下命令将Docker的APT源添加到系统中:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 更新APT包索引
    添加Docker源后,更新APT包索引:
apt update
  1. 安装Docker CE
    现在可以安装Docker CE:
apt install docker-ce docker-ce-cli containerd.io -y
  1. 验证Docker安装
    安装完成后,验证Docker是否正确安装:
docker --version
  1. 启动并配置Docker自启动
    启动Docker服务并设置开机自启动:
systemctl start docker
systemctl enable docker

安装Mailu

进入下面页面填写相关参数后提交,按照官方给出的配置安装即可

https://setup.mailu.io/2024.06/

安装成功后配置邮件到达发送给指定API

1、查看sieve目录挂载的路径

cat /mailu/docker-compose.yml

注意看

services:
  imap:
    image: mailu/dovecot:latest
    environment:
      - "SIEVE=enabled"
    volumes:
      - "/path/to/your/sieve/scripts:/data/sieve/global"

其中:
/path/to/your/sieve/scripts 是你服务器上存放Sieve脚本的路径。
/data/sieve/global 是Mailu容器内部的路径,表示Sieve脚本会在这个目录中执行。

若查询结果无/mailu/sieve:挂载,请在/mailu/docker-compose.yml文件内添加一行如下:

imap:
  image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06}
  restart: always
  env_file: mailu.env
  logging:
    driver: journald
    options:
      tag: mailu-imap
  volumes:
    - "/mailu/mail:/mail"
    - "/mailu/overrides/dovecot:/overrides:ro"
    - "/mailu/sieve:/data/sieve/global"  # 添加这个行来挂载 Sieve 脚本目录
    - "/data/dovecot/conf.d/90-sieve.conf:/etc/dovecot/conf.d/90-sieve.conf" # 添加这个行持久化配置
  networks:
    - default
  depends_on:
    - front
    - resolver
  dns:
    - 192.168.203.254

解释:

  • "/mailu/sieve:/data/sieve/global":这行配置将宿主机 /mailu/sieve 目录挂载到容器内部的 /data/sieve/global。你可以将 Sieve 脚本放在 /mailu/sieve 目录下。

修改后重启确保挂载生效:

cd /mailu
docker compose down
docker compose up -d

步骤 1:创建 Sieve 目录
在宿主机上创建目录,用于存放 Sieve 脚本:

mkdir -p /mailu/sieve

步骤 2:编辑或添加 Sieve 脚本
将你的 Sieve 脚本放入 /mailu/sieve 目录中。例如,将 filter.sieve 文件放入该目录。

nano /mailu/sieve/filter.sieve

然后输入你的 Sieve 规则,例如:

require ["fileinto", "regex", "vnd.dovecot.execute"];

if allof (header :regex "from" ".*@example.com", header :regex "subject" "订单") {
    execute "post_to_api" "${recipient}";
}

编辑或添加 sh脚本
将你的 sh 脚本放入 /mailu/sieve 目录中。例如,将 post_to_api.sh 文件放入该目录。

#!/bin/bash

# 第一个参数是收件人的邮箱地址
RECIPIENT_EMAIL=$1

# 读取邮件内容
EMAIL_CONTENT=$(cat)

# 使用正则表达式提取邮件中需要的数据,例如订单编号
# 这里匹配 <span> 标签中的数字
MATCHED_CONTENT=$(echo "$EMAIL_CONTENT" | grep -oP ">(\\d+)<\/span>")

# 如果匹配内容为空,发送完整的邮件内容
if [ -z "$MATCHED_CONTENT" ]; then
    MATCHED_CONTENT="$EMAIL_CONTENT"
fi

# 发送匹配到的内容到指定API
curl -X POST -H "Content-Type: application/json" \
    -d "{\"recipient\": \"$RECIPIENT_EMAIL\", \"content\": \"$MATCHED_CONTENT\"}" \
    http://x.x.x.x/receive_mail.php

记得赋予文件权限

# 赋予目录本身适当的权限
chmod 755 /mailu/sieve

# 赋予 Sieve 脚本文件读取权限
chmod 644 /mailu/sieve/filter.sieve

# 赋予外部脚本执行权限
chmod +x /mailu/sieve/post_to_api.sh

nano命令说明:
保存文件:按 Ctrl + O (即按住 Ctrl 键并按下字母 O)。这将提示您确认保存文件名。
按 Enter 以确认文件名(保持默认名 /mailu/sieve/filter.sieve)。
退出编辑器:按 Ctrl + X (即按住 Ctrl 键并按下字母 X)。这将关闭 nano 编辑器并返回命令行。

步骤 3:编译 Sieve 脚本
进入imap容器

docker exec -it mailu-imap /bin/sh

mailu-imap只是示例,每个人的不一定相同,查看方式:

docker ps

在输出的 NAMES 列中,你可以找到 Mailu 的 imap 容器的名称,类似于 mailu-imap。找到正确的名称后,你就可以使用 docker exec 命令进入该容器

执行编译命令会生成filter.svbin文件:

sievec /data/sieve/global/filter.sieve

查看编译文件是否存在:

ls /data/sieve/global/

在主机上创建并编辑配置文件
在主机的 /data/dovecot/conf.d/ 目录下创建或编辑 90-sieve.conf 文件:

mkdir -p /data/dovecot/conf.d
nano /data/dovecot/conf.d/90-sieve.conf

在该文件中写入您的 Sieve 配置,例如:

plugin {
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_default = /mailu/sieve/filter.sieve
  sieve_user_log = /mailu/sieve/dovecot-sieve.log
}

修改90-sieve.conf文件使服务器默认执行的全局脚本:

vi /etc/dovecot/conf.d/90-sieve.conf

#将这一行的注释取消
#sieve_default = /var/lib/dovecot/sieve/default.sieve  
#并将原来的路径替换为下方路径
sieve_default = /data/sieve/global/filter.svbin

修改后重启确保生效:

cd /mailu
docker compose down
docker compose up -d
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。