При работе с почтовым сервером 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)
Редактирование правил
После установки плагина необходимо включить поддержку правил в настройках почтовой программы.
В появившемся окне нужно включить поддержку работы с правилами
И нажать кнопку «Редактировать фильтры» для редактирования правил сортировки. Вы увидите список фильтров. Каждый фильтр может включать несколько правил. В редакторе правил справа показывается помощь, а сам редактор может использовать два режима работы — визуальный и в виде исходного кода.
Исходный код правил выглядит примерно так:
# 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 очень простой и логичный.