Dovecot + Sieve: Сортировка почты на сервере

Dovecot + Sieve: Сортировка почты на сервереПри работе с почтовым сервером dovecot по умолчанию все письма складываются в одну папку. Но это достаточно неудобно, хотелось бы как, например, в Google Mail, создавать правила, чтобы письма автоматически раскладывались по папкам на основе каких-то заданных правил, удалялись, либо отправлялся автоматический ответ. И такая возможность есть. Для этого нам потребуется установить и настроить поддержку sieve для работы совместно с сервером dovecot, а также настроить почтовый клиент для работы с правилами sieve.

Что такое sieve

Sieve — это язык описания правил фильтрации почтовых сообщений. Язык достаточно старый (первая спецификация датируется январем 2001 года), но при этом он простой и гибкий. Спецификация несколько раз совершенствовалась, и ее последняя версия датируется 2008 годом. Есть отдельный вики-сайт, посвященный этому языку, на котором можно найти много информации о самом языке, а также о программном обеспечении, которое поддерживает этот язык, как о серверном, так и о клиентском.

Установка sieve-плагина для dovecot

Для поддержки правил фильтрации в dovecot необходимо установить пакеты dovecot-sieve и dovecot-managesieved.

apt-get install dovecot-sieve dovecot-managesieved

Затем правим конфиги dovecot. В первую очередь правим файл /etc/dovecot/conf.d/15-lda.conf. Меняем

protocol lda {
  mail_plugins = $mail_plugins
}

на

protocol lda {
  mail_plugins = $mail_plugins sieve
}

Следующий файл, который надо изменить — /etc/dovecot/conf.d/20-managesieve.conf. Раскомментируем там следующие строчки:

service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}
service managesieve {
}
protocol sieve {
  managesieve_max_line_length = 65536
}

Теперь закомментируем в файле /etc/dovecot/dovecot.conf строчку

!include_try /usr/share/dovecot/protocols.d/imapd.protocol

И добавим после нее строчку

protocols = $protocols imap sieve

После этого рестартуем dovecot

service dovecot restart

И проверяем, слушается ли порт 4190

netstat -npl | grep 4190
tcp   0      0 0.0.0.0:4190       0.0.0.0:*          LISTEN      15771/dovecot

Если порт слушается, значит мы теперь можем менять правила сортировки почты.

Если вы используете postfix, то вам нужно будет сделать еще одно изменение. В файле /etc/postfix/main.cf нужно изменить опцию mailbox_command, задав следующее значение:

mailbox_command = /usr/lib/dovecot/deliver -d $LOGNAME

 

Установка расширения для Thunderbird/Icedove

Для работы с правилами сортировки почты нужно установить расширение для почтового клиента с названием Sieve. После установки расширения вы можете увидеть его в списке установленных расширений (Tools -> Add-ons)

Dovecot + Sieve: Сортировка почты на сервере

Редактирование правил

После установки плагина необходимо включить поддержку правил в настройках почтовой программы.

Dovecot + Sieve: Сортировка почты на сервере

В появившемся окне нужно включить поддержку работы с правилами

Dovecot + Sieve: Сортировка почты на сервере

И нажать кнопку «Редактировать  фильтры» для редактирования правил сортировки. Вы увидите список фильтров. Каждый фильтр может включать несколько правил. В редакторе правил справа показывается помощь, а сам редактор может использовать два режима работы — визуальный и в виде исходного кода.

Исходный код правил выглядит примерно так:

# rule:[Jira]
if header :contains ["From"] "JIRA"
{
    fileinto "INBOX/Jira";
    stop;
}
# rule:[Confluence]
if header :contains ["From"] "Confluence"
{
    fileinto "INBOX/Confluence";
    stop;
}

В принципе, сразу понятно, что должно происходить с такими письмами. Если в заголовке «From» встречается «JIRA», то письмо кладется в папку «INBOX/Jira», если этот заголовок содержит «Confluence», то письмо кладется в папку «Confluence». На сайте, который я указывал выше, можно почитать более подробно, но, вполне возможно, вам хватит встроенной помощи плагина, поскольку сам язык sieve очень простой и логичный.