Предпочитаю хранить почтовые дискуссии в одном месте, а не держать отправленные письма отдельно в папке Sent, как это по умолчанию делают IMAP-клиенты. Поэтому по добавлению новой почты в папку Sent я вызываю sieve-скрипт для её обработки.++ Конфигурация
** почтовый сервер dovecot, dovecot-imapd, dovecot-sieve
** почта хранится в домашнем каталоге пользователя в формате maildir
** для слежения за состоянием файловой системы используется incron
++ Настройка
Создаём скрипт, фильтрующий отправленные сообщения. Например, такой (расширение imap4flags нужно для сохранения флага \seen у сообщения):
require ["imap4flags", "fileinto", "variables", "date"];
# Сохраняем архив сообщений в папку archive.$год
if currentdate :matches "year" "*" {
set "archiveFolder" "archive.${1}";
}
# Сообщения, отправленные самому себе. Нет смысла иметь копию, так что помещаем в Trash.
if address :is "To" "user@example.com" {
fileinto "Trash";
stop;
}
# Сообщения в списки рассылок сразы кладём в архив.
if address :is "To" "debian-russian@lists.debian.org" {
fileinto "${archiveFolder}";
stop;
}
# Если письмо является ответом на что-то, то кладём его в INBOX.
if exists "In-Reply-To" {
fileinto "INBOX";
}
# Все прочие сообщения будут оставлены на своём месте.
Проверяем скрипт на папке Sent (путь к месту расположения берётся из конфигурации dovecot). Скрипт выведет список действий, которые будут проведены с каждым письмом. Убеждаемся, что он делает именно то, что нужно:
sieve-filter /path/to/script Sent
Далее настраиваем таблицу incron. Для этого записываем в редакторе нижеприведённую при вызове incrontab -e. sieve-скрипт будет вызываться при перемещении новых писем в maildir-папку Sent и будет обрабатывать всё там находящееся.
/home/user/Maildir/.Sent/cur IN_MOVED_TO /usr/bin/sieve-filter -e -W /path/to/script
При следующей отправке письма папка отсортируется.
Замечу, что подобным образом можно фильтровать любую другую папку при помещении в неё писем.
URL:
Обсуждается: http://www.opennet.dev/tips/info/2728.shtml