Debian安裝Mailu

安裝Docker

  1. 更新包列表
    首先更新系統(tǒng)的包列表:
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源添加到系統(tǒng)中:
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
    現(xiàn)在可以安裝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

進入下面頁面填寫相關參數(shù)后提交,按照官方給出的配置安裝即可

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

安裝成功后配置郵件到達發(fā)送給指定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容器內(nèi)部的路徑,表示Sieve腳本會在這個目錄中執(zhí)行。

若查詢結果無/mailu/sieve:掛載,請在/mailu/docker-compose.yml文件內(nèi)添加一行如下:

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 目錄掛載到容器內(nèi)部的 /data/sieve/global。你可以將 Sieve 腳本放在 /mailu/sieve 目錄下。

修改后重啟確保掛載生效:

cd /mailu
docker compose down
docker compose up -d

步驟 1:創(chuàng)建 Sieve 目錄
在宿主機上創(chuàng)建目錄,用于存放 Sieve 腳本:

mkdir -p /mailu/sieve

步驟 2:編輯或添加 Sieve 腳本
將你的 Sieve 腳本放入 /mailu/sieve 目錄中。例如,將 filter.sieve 文件放入該目錄。

nano /mailu/sieve/filter.sieve

然后輸入你的 Sieve 規(guī)則,例如:

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

# 第一個參數(shù)是收件人的郵箱地址
RECIPIENT_EMAIL=$1

# 讀取郵件內(nèi)容
EMAIL_CONTENT=$(cat)

# 使用正則表達式提取郵件中需要的數(shù)據(jù),例如訂單編號
# 這里匹配 <span> 標簽中的數(shù)字
MATCHED_CONTENT=$(echo "$EMAIL_CONTENT" | grep -oP ">(\\d+)<\/span>")

# 如果匹配內(nèi)容為空,發(fā)送完整的郵件內(nèi)容
if [ -z "$MATCHED_CONTENT" ]; then
    MATCHED_CONTENT="$EMAIL_CONTENT"
fi

# 發(fā)送匹配到的內(nèi)容到指定API
curl -X POST -H "Content-Type: application/json" \
    -d "{\"recipient\": \"$RECIPIENT_EMAIL\", \"content\": \"$MATCHED_CONTENT\"}" \
    http://x.x.x.x/receive_mail.php

記得賦予文件權限

# 賦予目錄本身適當?shù)臋嘞?chmod 755 /mailu/sieve

# 賦予 Sieve 腳本文件讀取權限
chmod 644 /mailu/sieve/filter.sieve

# 賦予外部腳本執(zhí)行權限
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 命令進入該容器

執(zhí)行編譯命令會生成filter.svbin文件:

sievec /data/sieve/global/filter.sieve

查看編譯文件是否存在:

ls /data/sieve/global/

在主機上創(chuàng)建并編輯配置文件
在主機的 /data/dovecot/conf.d/ 目錄下創(chuàng)建或編輯 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文件使服務器默認執(zhí)行的全局腳本:

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
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容