Для архивирования этой цели можно использовать команды 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
#!/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