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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355