Автоматическая очистка почтовой папки с помощью dovecot / sieve

Могу ли я автоматически очистить папку в моем почтовом ящике? Допустим, я хочу автоматически удалять сообщения старше 3 месяцев. Есть ли у dovecot / sieve этот параметр?

0
задан 8 September 2020 в 16:01
1 ответ

Применяйте фильтр сита к письмам старше x дней

Для архивирования этой цели можно использовать команды doveadm moveи sieve-filter. Вы также можете использовать doveadm expunge, но с помощью этого приложения вы можете удалять или перемещать письма старше X дней.

Сначала переместите все файлы старше 7 дней во временную папку, в данном случае она называется sieve-tmp:

doveadm move -u test1@example.com INBOX.sieve-tmp user test1@example.com mailbox INBOX BEFORE $(date -d "$now -7 days" +%Y-%m-%d)

Команда принимает следующие аргументы:

-u test1@example.comпочтовый ящик пользователей источника

INBOX.sieve-tmpпапка для копирования писем в (INBOX/tmp)

почтовый ящик пользователя test1@example.comпочтовый ящик конечных пользователей, в моем случае такой же, как почтовый ящик источника

почтовый ящикобязательное ключевое слово

INBOXисходный , в данном случае ВХОДЯЩИЕ

ДО $(дата -d "$now -7 дней" +%Y-%m-%d)фильтр поиска. Этот фильтр возвращает письма, созданные до даты ГГГГ-ММ-ДД. Команда date доставляет дату, Через 7 дней. Вы можете заменить 7 на любое желаемое число.

Создан скрипт сита для применения к письмам старше 7 дней. Я создал его с помощью roundcube и деактивировал его в интерфейсе, чтобы он не применялся к входящим письмам. Я назвал его 7d.

sieve-filter -e -W -C -u test1@example.com /var/mail/example.com/test1/sieve/7d.sieve INBOX.sieve-tmp

-eвключает режим выполнения

-Wвключает режим записи

-Cперед компиляцией. Скрипт компилируется в двоичный файл.

-u test1@example.comзапускает сценарий для этого пользователя.

/var/mail/example.com/test1/sieve/7d.sieveпуть к выполняемому скрипту сита.

Папка INBOX.sieve-tmpдля выполнения скрипта.

После этого все нужные письма обрабатываются, а остальные могут быть перемещены обратно в папку «Входящие»:

doveadm move -u test1@example.com INBOX user test1@example.com mailbox INBOX.sieve-tmp ALL

Final script

#!/bin/bash
doveadm move -u test1@example.com INBOX.sieve-tmp user test1@example.com mailbox INBOX BEFORE $(date -d "$now -7 days" +%Y-%m-%d)
sieve-filter -e -W -C -u test1@example.com /var/mail/example.com/test1/sieve/7d.sieve INBOX.sieve-tmp
doveadm move -u test1@example.com INBOX user test1@example.com mailbox INBOX.sieve-tmp ALL

Если вы хотите, чтобы другой скрипт обрабатывал письма старше X дней, просто скопируйте этот блок и замените ссылку на время.

Скрипт можно вызывать один раз в день через задание cron:

crontab -e
0 0 * * * /opt/filter-my-mails.sh
0
ответ дан 27 February 2021 в 17:07

Теги

Похожие вопросы