Настройка фильтров на почтовом сервере Факультета

Причины для фильтрации

Обычно пользователям требуется обработка почты на стороне сервера по следующим причинам:
  • хочется пересылать почту на другой адрес/адреса
  • хочется фильтровать почту именно на сервере, чтобы фильтрация не зависела от почтовых клиентов:
    • раскладывать по отправителям/тематике
    • фильтровать по признаку спам/не спам
Рассмотрим решение этих задач

Разница между пересылкой и забиранием почты

Для начала Вы должны решить, требуется ли пересылать или забирать почту

Электронная почта создавалась по образу и подобию бумажной:
  • Вы пишите в письме кому и от кого (и вообще говоря в поле "от кого" можно написать что угодно
  • Посылаете письмо через почтовый сервер - отдаете письмо в почтовом отделении (у вас могут и не принять письмо)
  • Письмо приходит в нужное почтовое отделение, где его пытаются доставить в почтовый ящик, что может и не получиться, если:
    • такого ящика нет - в этом случае письмо уходит по адресу отправителя с пометкой о недоставке
    • ящик переполнен (письмо не лезет) - это не столь фатально, посылается письмо о временной недоставке (в отличие от бумажной почты скопировать письмо - легко и дешево)
    • почтовое отделение было недоступно - аналогично предыдущему пункту, только ситуацию обрабатывает Ваш почтовый сервер
    • и т.д.
  • У почтового ящика может быть пометка о пересылке (в самом отделении (на сервере) или на самом ящике), в этом случае вместо доставки почты письмо пересылается по новому адресу (а там может быть тоже пересылка и т.д.)
  • пересылка электронной почты может сочетаться с сохранением почты в локальный ящик (чего нет у бумажной, т.к. физические объекты клонировать сложнее).
  • Каждый пользователь, чтобы забрать почту из ящика, должен иметь ключ (пароль) от ящика. Для доставки письма в ящик ничего иметь не нужно.
Исходя из механизма работы почты, можно сказать, что забирание почты выглядит так:
  • Вы нанимаете курьера, которому даете адрес почтового отделения и ключ от ящика
  • Время от времени курьер посещает почтовое отделение, открыв ящик - забирает всю почту (т.к. письма электронные, то может "клонировать" письма, а не забирать)
  • Если Вы меняете замок (пароль от ящика), то должны выдать курьеру новый ключ (внести в настройки новый пароль)
  • Курьер может доставлять Вам почту как домой (локальная почтовая программа, Thunderbird, например), так и на другой почтовый сервер (если это курьер этого почтового сервера)
  • Письмо из ящика попадает к Вам не сразу (у курьера есть периодичность посещения почтового отделения)
В отличие от забирания, пересылка почты:
  • не требует курьера, поэтому смена замка не влияет на пересылку почты (вы можете даже потерять ключ/заблокировать замок)
  • влияет только на новую почту (уже доставленная почта останется в ящике, в то время как курьер забирает всю почту)

Настройка фильтрации на основе Sieve

Настраиваются через новый web-интерфейс.

Все настройки сохраняются на почтовом сервере в виде файла, который можно настраивать и через файловый доступ на сервер, но так делать не рекомендуется.

В любом случае фильтрация будет на стороне сервера. Т.е. после настройки фильтра каким-бы клиентом Вы не читали почту, ко всей новой почте будут применяться правила фильтра! Т.е. можно настроить sieve-фильтры через новый web-интерфейс, а читать, скажем, через старый.

Рассмотрим создание правил через web-интейфейс.

Справа вверху есть меню/область с кнопкой выхода. Выберите Настройки:

Menu.png

Далее выберите Фильтры, managesieve и нажмите на знак + для добавления фильтра:

Create.png

В данном примере видно уже созданный фильтр antispam, создание которого рассмотрено ниже.

Подключение антиспама

Простой вариант фильтрации на основе оценки факультетского антиспам-сервера

Если факультетский антиспам считает спамом, то он пишет об этом в служебных полях и выставляет флаг X-Spam-Flag в значение YES. Поэтому выбираем условие, что письма с этим флагом надо помещать в корзину.

ALERT! Не забудьте сохранить фильтр!

webmail-antismap-small.png

В этом примере фильтр уже был ранее сохранен, поэтому есть в списке.

Сложный вариант фильтрации с учетом оценки факультетского антиспам-сервера

Использовался тот же пользователь, но с включением английского языка в интерфейсе, поэтому картинки немного отличаются.
Многие спам-рассылки делаются с использованием скрытой копии. В этом случае в поле Кому (To) или Копия (CC) нет самого адреса получателя.
Такой же метод используют и нормальные списки рассылки (например, от факультета), но в этом случае в письме добавляются служебные поля о том, что это за список, как от него отписаться и т.д.
Обычный спам

Небольшое изменение для антиспам-фильтра: включение остановки («Закончить выполнение» или «Stop evaluating rules»)
В предыдущем примере правило было ровно одно, поэтому останавливаться не требовалось (либо подходит под правило, либо нет), здесь у нас их несколько и если не останавливать обработку, то письмо будет помещено/скопировано в несколько мест.

antispam-eng.png

Или на русском:
antispam-rus.png

Trash/Корзина — это внутреннее название одной и той же папки для писем.
Списки рассылки

То, что прошло антиспам-фильтр, и содержит признак стандартной рассылки (в List-Id сообщается имя рассылки, в обычных письмах его нет):
Lists.png
Название можно давать любое. В примере, хоть интерфейс на английском, с русским названием проблем нет.

Для выделенных списков можно создавать дополнительные правила (их надо будет поместить до этого общего), например стандартная рассылка для пользователей Факультета идет с
List-Id, содержащим слово users.lists (users.lists.cs.msu.ru).

Если вы администратор какого-либо фильтра рассылки, то рекомендуется для него создать отдельное правило, что если есть поле X-List-Administrivia , то помещать в отдельную папку.
Это служебные письма вида: письмо в рассылку от неизвестного отправителя, запрос подписчика на подписку к списку и т.д.
Странные списки рассылки

Письма не содержат пользователя (в данном случае — testuser) в поле Кому/Копия и не является обычным списком рассылки.
Если у вас пересылки с каких-то адресов вам, то тоже внесите их в список исключений.

NotUser.png
Порядок правил

Так как внутри каждого правила мы останавливаем обработку, то важно задать нужный порядок:
FilterOrders.png

Фильтры можно перетаскивать мышкой/манипулятором, формируя нужный порядок.

Пересылка почты

В данном примере настроена пересылка всей почты с адреса roman@stud... на roman@cs... Forward.png

Здесь показан момент создания фильтра, он еще не сохранен и в списке фильтров его нет.

Фильтрация по отправителю

Аналогична фильтрации по получателю (выше), только по полю From. Точно также рекомендуется использовать сравнение содержит/contains, т.к. происходит сравнение строк и такие строки считаются разными:
  • «Иванов <ivanov@mail.ru>»
  • «<ivanov@mail.ru>»
  • «ivanov@mail.ru»

Настройка пересылки или фильтрации через файлы на сервере

Как следует из названия, требуется файловый доступ на сервер. ALERT! Редактирование файлов требует большей ответственности, т.к. неправильные настройки могут привести к потере почты, поэтому лучше используйте настройку через Webmail Sieve, рассмотренную выше.

Настройка пересылки через файл

Надо создать файл .forward со своим существующим адресом и вся почта (новая) начнет пересылаться по этому адресу.

Пример:
  • Пусть у вас есть почтовый адрес test@test.ru
  • Пусть ваш логин от почты на факультете testuser
  • Создаете файл (пусть будет forward.txt) с текстом test@test.ru
  • Копируете этот файл на почтовый сервер по ssh-протоколу под именем .forward
    • unix-подобные системы: scp forward.txt testuser@mail.cs.msu.ru:.forward
    • windows системы: копируете с помощью winscp, переименовываете
  • Вот и всё!

Для более сложной логики (пересылать не все, пересылать на разные адреса в зависимости от условий) лучше использовать .procmailrc или рассмотренную выше sieve-фильтрацию.

Настройка фильтрации на основе procmail

Procmail — это программа с богатыми возможностями по обработке почты.

Для сортировки письма на основе оценки (спам/не спам), которую выставляет факультетский почтовый сервер достаточно создать файл .procmail со следующим содержанием:
DEFAULT=$HOME/Maildir/
ORGMAIL=$DEFAULT
DELIVER="/usr/local/libexec/dovecot/deliver"

:0:
* ^X-Spam-Flag: YES
| $DELIVER -m Trash

:0 w
| $DELIVER

Как видно из настройки, если письмо признано спамом (выставлен флаг X-Spam-Flag), то оно будет помещено в Корзину (которая расположена в Trash), остальные письма будут доставлены во Входящие
Topic revision: r9 - 03 Aug 2019, RomanKondakov
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WikiCMC? Send feedback