· 13 мин чтения

Dovecot Sieve в офисе: серверная фильтрация почты без сюрпризов

Dovecot Sieve в офисе: серверная фильтрация почты без сюрпризов

Привет! Меня зовут Семёнов Евгений Сергеевич, и я директор ITFresh. За мои пятнадцать лет в этой сфере я успел настроить почтовые серверы, наверное, в нескольких десятках московских офисов — где-то всего десять ящиков, а где-то и все двести. В 2024–2025 годах к нам всё чаще стали обращаться компании, которые уже попрощались с Microsoft Exchange и Google Workspace, перейдя на свой собственный Postfix + Dovecot. И вот тут-то каждый раз всплывает один и тот же, прямо-таки наболевший вопрос: «Куда же делась та самая автосортировка почты по папкам, к которой мы так привыкли?» Мой ответ всегда один — Dovecot Sieve. В этой статье я поделюсь нашим честным, наработанным опытом: расскажу, как мы внедряем его у клиентов. Ведь наша главная цель — чтобы пользователи не разбежались, а руководитель не звонил мне через месяц с криком: «У меня все письма пропали!»

Почему серверная фильтрация важнее, чем кажется

Предлагаешь клиенту: «А давайте перенесём правила почты с Outlook прямо на сервер?» А в ответ, как правило, слышишь: «Да зачем нам это? У нас и так всё прекрасно работает!» Работает, говорите? Да, пока работает. Но это ненадолго. Сейчас объясню, на какие грабли лично наступают клиенты, когда отказываются это делать:

Знаете, Sieve справляется со всеми этими четырьмя проблемами сразу. Сценарий здесь до безобразия простой: письмо сначала летит на сервер, затем проходит через антиспам и проверку DKIM. А потом уже передаётся по LMTP в Dovecot. И вот в этот момент, при самой доставке, Dovecot и запускает пользовательский sieve-скрипт. Только после этого письмо попадает точно в нужную IMAP-папку. И что самое важное — все почтовые клиенты, будь то Outlook, Apple Mail, мобильный Gmail или веб-интерфейс Roundcube, увидят его отсортированным абсолютно одинаково. Это ли не чудо?

Стек, который мы ставим в офисах

За последние пару лет мы в ITFresh не просто выработали, а прямо-таки стандартизировали целый набор решений для наших клиентов. Ниже я покажу вам то, что у нас без единого сбоя работает на двенадцати продакшен-серверах и в самой Москве, и по всему Подмосковью. Это наша гордость!

КомпонентВерсия (апрель 2026)Роль
OSDebian 12 / Ubuntu 24.04 LTSБаза, безопасные обновления
Postfix3.7+SMTP-приём и отправка
Dovecot2.3.20+IMAP, LMTP, Sieve, ManageSieve
Pigeonholeвходит в Dovecotреализация Sieve
Rspamd3.8+антиспам, DKIM-подпись
Roundcube1.6+веб-почта с плагином managesieve
OpenDMARC1.4+проверка DMARC, формирование заголовков

Этот стек просто прекрасно "живёт" у моего самого крупного клиента — это юридическая фирма на 130 ящиков. И "живёт" уже третий год, заметьте! Я ни разу его даже не переустанавливал. Расход памяти? Всего около 3.5 ГБ. Задействовано два ядра, а диск — SSD на 200 ГБ. Поверьте, стоимость владения таким решением — это сущие копейки, особенно если сравнивать с Microsoft 365 Business Premium, где выходит примерно 2 100 рублей за ящик в месяц. Разница очевидна, правда?

Базовая интеграция Postfix + Dovecot LMTP + Sieve

Вот здесь-то частенько и допускают самую распространённую ошибку: оставляют доставку через procmail или вообще через mbox-обработчик. А ведь надо помнить: Sieve работает только тогда, когда за доставку отвечает Dovecot LDA или, что гораздо правильнее, LMTP! Вот как должна выглядеть конфигурация Postfix, чтобы всё работало как часы:

# /etc/postfix/main.cf
mailbox_transport = lmtp:unix:private/dovecot-lmtp
virtual_transport = lmtp:unix:private/dovecot-lmtp
local_recipient_maps = $virtual_mailbox_maps

Сокет на стороне Dovecot:

# /etc/dovecot/conf.d/10-master.conf
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }
}

Включаем плагины Sieve:

# /etc/dovecot/conf.d/15-lda.conf
protocol lda {
  mail_plugins = $mail_plugins sieve
}
protocol lmtp {
  mail_plugins = $mail_plugins sieve
}

# /etc/dovecot/conf.d/90-sieve.conf
plugin {
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_default = /etc/dovecot/sieve/default.sieve
  sieve_default_name = roundcube
  sieve_extensions = +editheader +imapflags +vacation-seconds +variables +environment
  sieve_max_script_size = 1M
  sieve_max_actions = 32
  sieve_max_redirects = 4
}

Перезапускаем Dovecot и Postfix. Готово? Теперь нужно проверить, доходит ли письмо до Sieve. Для этого есть простейший test-скрипт — он нам всё покажет:

# /etc/dovecot/sieve/default.sieve
require ["fileinto","mailbox"];
if header :contains "Subject" "TEST-SIEVE" {
  fileinto :create "Test";
  stop;
}

Скомпилируйте: sievec /etc/dovecot/sieve/default.sieve. Отправьте сами себе письмо с темой «TEST-SIEVE» — оно должно лечь в папку Test. Если осталось в INBOX — лезьте в /var/log/mail.log, там 90 % проблем видно сразу: либо нет прав у dovecot на чтение скрипта, либо LMTP-сокет не доступен Postfix.

Боевой набор правил, которые я ставлю всем

В каждом нашем офисе всегда есть базовый default-скрипт, он срабатывает абсолютно для всех ящиков. А ещё, конечно, мы предусмотрели пользовательский personal-скрипт, который каждый сотрудник может самостоятельно отредактировать прямо через Roundcube. Вот вам, кстати, пример отличного рабочего default-скрипта, который я обычно прописываю своим клиентам:

require ["fileinto","mailbox","imap4flags","envelope","regex","variables"];

# 1. Спам с оценкой выше 8 — в Junk
if header :contains "X-Spam-Flag" "YES" {
  fileinto :create "Junk";
  setflag "\\Seen";
  stop;
}

# 2. Письма от провалившейся DMARC — в отдельную папку
if header :contains "Authentication-Results" "dmarc=fail" {
  fileinto :create "Suspicious";
  stop;
}

# 3. Внешние отправители помечаются префиксом для пользователей
if not header :matches "From" "*@itfresh.ru" {
  if header :matches "Subject" "*" {
    addheader "X-External-Sender" "yes";
  }
}

# 4. Системные уведомления (мониторинг, бэкапы) в отдельную папку
if anyof (
  header :contains "From" "zabbix@itfresh.ru",
  header :contains "From" "backup@itfresh.ru",
  header :contains "Subject" "[CRON]"
) {
  fileinto :create "Monitoring";
  stop;
}

А теперь — тот самый пользовательский шаблон, который я даю руководителям и, конечно, бухгалтерии. Они через Roundcube видят его в абсолютно человеческой форме «если — то», но под капотом, разумеется, обычный Sieve. Никакой магии, только удобство!

require ["fileinto","mailbox","vacation-seconds","envelope"];

# Письма от налоговой и контрагентов с 1С — в Бухгалтерия
if anyof (
  address :is "From" "report@nalog.gov.ru",
  address :matches "From" "*@1c-edo.ru",
  header :contains "Subject" "ЭДО"
) {
  fileinto :create "Бухгалтерия";
}

# Договоры в отдельную папку
if header :contains "Subject" "договор" {
  fileinto :create "Договоры";
}

# Автоответ на время отпуска (10 дней)
vacation
  :days 1
  :subject "Я в отпуске до 30 апреля"
  :addresses ["ivanov@itfresh.ru"]
  "Здравствуйте! Я в отпуске до 30 апреля 2026 года. По срочным вопросам обращайтесь к Петрову (petrov@itfresh.ru).";

Vacation у нас работает с задержкой :days 1 — это значит, что одному и тому же отправителю автоответ уйдёт не чаще раза в сутки. Без этой опции вы получите цикл из автоответов между двумя сервисами и положите свой почтовый сервер за час. Это та грабля, на которую я наступил у первого же клиента в 2014 году — до сих пор помню тот пожар.

ManageSieve и Roundcube: чтобы пользователи могли сами

Самая главная "фишка" для всех пользователей? Это, конечно, возможность самостоятельно менять правила! Для этого мы просто включаем ManageSieve в Dovecot. Это так просто и так важно!

# /etc/dovecot/conf.d/20-managesieve.conf
service managesieve-login {
  inet_listener sieve {
    port = 4190
  }
}
protocols = imap lmtp sieve

В Roundcube ставим плагин managesieve и в его конфиге указываем сервер 127.0.0.1:4190. Пользователь заходит в веб-почту, в настройках появляется раздел «Фильтры» — простой графический редактор. Под капотом скрипт сохраняется в ~/sieve/roundcube.sieve, и подключается через managesieve-протокол.

Я обучаю каждого нового сотрудника клиента работать с этим разделом всего за пятнадцать минут. Не верите? Все типовые сценарии, такие как сортировка по теме или отправителю, маркировка важным флагом или даже переадресация заместителю, легко "кликаются" мышью. Если же правила вдруг сложнее — например, с регулярными выражениями или проверкой сразу по нескольким полям — тогда уже зовут меня. Но поверьте, 90% всех задач пользователь совершенно спокойно делает сам. Вот это экономия времени!

Кейс: бухгалтерия юрфирмы и 4 200 писем в неделю

Хочу рассказать вам про один очень конкретный случай, который произошёл у клиента, к которому я приехал в августе 2025 года. Это была юридическая фирма, где работало шестьдесят человек. А бухгалтерия, состоящая из четырёх сотрудников, получала в среднем 4 200 писем в неделю! Раньше они сидели на Microsoft 365, и каждый бухгалтер настроил себе от 40 до 60 правил прямо в Outlook. Когда в фирме решили мигрировать на свой собственный Postfix, я предложил им собрать все эти разрозненные правила в один общий sieve-include и подключить его сразу ко всем ящикам бухгалтерии. Это было настоящее испытание!

Получилась структура: /etc/dovecot/sieve/global/buhgalteria.sieve — 180 строк правил, и в персональном скрипте каждого бухгалтера через include :global "buhgalteria" подключается общий блок плюс его личные правила. Когда меняется банк-клиент или налоговая обновляет адреса — я меняю один файл, и все 4 человека сразу получают актуальные правила. До этого приходилось каждый раз ходить и править 4 разных Outlook-профиля.

Какой был эффект? Главбух сама написала мне сообщение буквально через месяц: «Евгений, я даже не представляю, как мы вообще раньше без этого работали!» Мы сэкономили им примерно 6 часов в неделю только на ручном разборе писем. На четырёх человек это вышло в 24 часа! А это, между прочим, половина рабочего дня одного сотрудника. Моя работа (12 часов на настройку и обучение) окупилась всего за две недели. Представляете, как быстро?

Безопасность и грабли, на которые наступают чаще всего

За все эти годы у меня скопилась целая коллекция типичных ошибок, которые админы совершают, когда в первый раз настраивают Sieve. Делюсь ими с вами, чтобы вы, дорогие читатели, не наступали на те же самые грабли. Учитесь на чужом опыте!

Мониторинг: как я проверяю, что Sieve вообще работает

Без постоянного мониторинга Sieve моментально превращается в такой себе «чёрный ящик»: правила вроде бы и есть, но пользователь всё равно жалуется, что ничего не работает. Как так? Поэтому я всегда ставлю Zabbix-агента и внимательно слежу за следующими проверками. Только так можно быть уверенным!

Закажите аудит почтовой инфраструктуры

Я лично приезжаю на аудит почтовых серверов в Москве и в радиусе 50 км от МКАД. Всего за 2–3 рабочих дня вы получите от меня подробный письменный отчёт, где будет оценка текущего состояния Postfix/Dovecot, выявленные уязвимости SPF/DKIM/DMARC, а также чёткий план перехода на серверную фильтрацию через Sieve. И всё это — без каких-либо обязательств с вашей стороны.

Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш

FAQ — что чаще всего спрашивают перед внедрением

Зачем нужен серверный Sieve, если есть правила Outlook?
Outlook-правила работают только когда клиент запущен. Sieve фильтрует на сервере до доставки в IMAP — правила работают всегда, даже если ноутбук закрыт, и одинаково применяются на десктопе, телефоне и в веб-почте.
Можно ли подключить Sieve к Postfix?
Да, через LDA-интеграцию. Postfix передаёт письмо в Dovecot LMTP, а тот вызывает Sieve-плагин при доставке в почтовый ящик пользователя.
Как пользователю самому редактировать правила?
Через ManageSieve-протокол (порт 4190) и веб-почту Roundcube с плагином managesieve. Пользователь видит человеческий интерфейс, но в файле лежит обычный sieve-скрипт.
Сколько стоит настройка под ключ?
В АйТи Фреш развёртывание Postfix + Dovecot + Sieve + Roundcube для офиса до 50 ящиков обходится в 35 000–55 000 руб. Включает SPF/DKIM/DMARC, антиспам и обучение администратора.
Что чаще всего ломается при первой настройке?
Права на каталог ~/sieve, отсутствие LMTP-сокета у Postfix и забытая директива sieve_default. Симптом — письма уходят в дефолтный INBOX, правила игнорируются.

Подпишитесь на рассылку ITfresh

Надоели скучные инструкции? Раз в неделю мы отправляем только практические гайды, разработанные специально для IT-руководителей и сисадминов. Никакой воды! Здесь вы найдёте проверенные решения: от повышения безопасности и тонкостей работы с 1С до сложных миграций и надёжного резервного копирования. И, конечно, бесценные лайфхаки, которые мы добыли в реальных проектах. Пользуйтесь!

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.