· 13 мин чтения

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

Меня зовут Семёнов Евгений Сергеевич, я директор АйТи Фреш и за пятнадцать лет настроил почтовые серверы в нескольких десятках московских офисов от 10 до 200 ящиков. В 2024–2025 годах ко мне зачастили компании, которые ушли с Microsoft Exchange и Google Workspace на свой Postfix + Dovecot — и каждый раз всплывает один и тот же вопрос: «А куда делась автосортировка почты по папкам, к которой все привыкли?» Ответ — Dovecot Sieve. В этой статье я честно расскажу, как мы его внедряем у клиентов, чтобы пользователи не разбежались, а руководителю не пришлось через месяц звонить с криком «у меня все письма пропали».

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

Когда я говорю клиенту «давайте перенесём правила почты с Outlook на сервер», в ответ обычно слышу: «А зачем, у нас и так всё работает». Работает — пока. Объясняю, на каких граблях лично топчутся клиенты, которые этого не делают:

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

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

За последние два года мы у клиентов АйТи Фреш стандартизировали следующий набор. Ниже — то, что у нас работает на 12 продакшен-серверах в Москве и Подмосковье без сбоев:

КомпонентВерсия (апрель 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-протокол.

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

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

Расскажу про конкретный случай у клиента, к которому я зашёл в августе 2025 года. Юридическая фирма, 60 человек, бухгалтерия из 4 человек получает в среднем 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 подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.