Настройка фильтров на почтовом сервере Факультета
Причины для фильтрации
Обычно пользователям требуется обработка почты на стороне сервера по следующим причинам:
- хочется пересылать почту на другой адрес/адреса
- хочется фильтровать почту именно на сервере, чтобы фильтрация не зависела от почтовых клиентов:
- раскладывать по отправителям/тематике
- фильтровать по признаку спам/не спам
Рассмотрим решение этих задач
Разница между пересылкой и забиранием почты
Для начала Вы должны решить, требуется ли пересылать или забирать почту
Электронная почта создавалась по образу и подобию бумажной:
- Вы пишите в письме кому и от кого (и вообще говоря в поле "от кого" можно написать что угодно
- Посылаете письмо через почтовый сервер - отдаете письмо в почтовом отделении (у вас могут и не принять письмо)
- Письмо приходит в нужное почтовое отделение, где его пытаются доставить в почтовый ящик, что может и не получиться, если:
- такого ящика нет - в этом случае письмо уходит по адресу отправителя с пометкой о недоставке
- ящик переполнен (письмо не лезет) - это не столь фатально, посылается письмо о временной недоставке (в отличие от бумажной почты скопировать письмо - легко и дешево)
- почтовое отделение было недоступно - аналогично предыдущему пункту, только ситуацию обрабатывает Ваш почтовый сервер
- и т.д.
- У почтового ящика может быть пометка о пересылке (в самом отделении (на сервере) или на самом ящике), в этом случае вместо доставки почты письмо пересылается по новому адресу (а там может быть тоже пересылка и т.д.)
- пересылка электронной почты может сочетаться с сохранением почты в локальный ящик (чего нет у бумажной, т.к. физические объекты клонировать сложнее).
- Каждый пользователь, чтобы забрать почту из ящика, должен иметь ключ (пароль) от ящика. Для доставки письма в ящик ничего иметь не нужно.
Исходя из механизма работы почты, можно сказать, что
забирание почты выглядит так:
- Вы нанимаете курьера, которому даете адрес почтового отделения и ключ от ящика
- Время от времени курьер посещает почтовое отделение, открыв ящик - забирает всю почту (т.к. письма электронные, то может "клонировать" письма, а не забирать)
- Если Вы меняете замок (пароль от ящика), то должны выдать курьеру новый ключ (внести в настройки новый пароль)
- Курьер может доставлять Вам почту как домой (локальная почтовая программа, Thunderbird, например), так и на другой почтовый сервер (если это курьер этого почтового сервера)
- Письмо из ящика попадает к Вам не сразу (у курьера есть периодичность посещения почтового отделения)
В отличие от забирания,
пересылка почты:
- не требует курьера, поэтому смена замка не влияет на пересылку почты (вы можете даже потерять ключ/заблокировать замок)
- влияет только на новую почту (уже доставленная почта останется в ящике, в то время как курьер забирает всю почту)
Настройка фильтрации на основе Sieve
Настраиваются через
новый web-интерфейс.
Все настройки сохраняются на почтовом сервере в виде файла, который можно настраивать и через
файловый доступ на сервер, но так делать не рекомендуется.
В любом случае фильтрация будет на стороне сервера. Т.е. после настройки фильтра каким-бы клиентом Вы не читали почту, ко всей новой почте будут применяться правила фильтра! Т.е. можно настроить sieve-фильтры через новый web-интерфейс, а читать, скажем, через старый.
Рассмотрим создание правил через web-интейфейс.
Справа вверху есть меню/область с кнопкой выхода. Выберите
Настройки:
Далее выберите
Фильтры, managesieve и нажмите на знак
+ для добавления фильтра:
В данном примере видно уже созданный фильтр
antispam, создание которого рассмотрено ниже.
Подключение антиспама
Простой вариант фильтрации на основе оценки факультетского антиспам-сервера
Если факультетский антиспам считает спамом, то он пишет об этом в служебных полях и выставляет флаг
X-Spam-Flag в значение
YES.
Поэтому выбираем условие, что письма с этим флагом надо помещать в корзину.
Не забудьте сохранить фильтр!
В этом примере фильтр уже был ранее сохранен, поэтому есть в списке.
Сложный вариант фильтрации с учетом оценки факультетского антиспам-сервера
Использовался тот же пользователь, но с включением английского языка в интерфейсе, поэтому картинки немного отличаются.
Многие спам-рассылки делаются с использованием скрытой копии. В этом случае в поле Кому (To) или Копия (CC) нет самого адреса получателя.
Такой же метод используют и нормальные списки рассылки (например, от факультета), но в этом случае в письме добавляются служебные поля о том, что это за список, как от него отписаться и т.д.
Обычный спам
Небольшое изменение для антиспам-фильтра: включение остановки («Закончить выполнение» или «Stop evaluating rules»)
В предыдущем примере правило было ровно одно, поэтому останавливаться не требовалось (либо подходит под правило, либо нет), здесь у нас их несколько и если не останавливать обработку, то письмо будет помещено/скопировано в несколько мест.
Или на русском:
Trash/Корзина — это внутреннее название одной и той же папки для писем.
Списки рассылки
То, что прошло антиспам-фильтр, и содержит признак стандартной рассылки (в List-Id сообщается имя рассылки, в обычных письмах его нет):
Название можно давать любое. В примере, хоть интерфейс на английском, с русским названием проблем нет.
Для выделенных списков можно создавать дополнительные правила (их надо будет поместить до этого общего), например стандартная рассылка для пользователей Факультета идет с
List-Id, содержащим слово users.lists (users.lists.cs.msu.ru).
Если вы администратор какого-либо фильтра рассылки, то рекомендуется для него создать отдельное правило, что если есть поле X-List-Administrivia , то помещать в отдельную папку.
Это служебные письма вида: письмо в рассылку от неизвестного отправителя, запрос подписчика на подписку к списку и т.д.
Странные списки рассылки
Письма не содержат пользователя (в данном случае — testuser) в поле Кому/Копия и не является обычным списком рассылки.
Если у вас пересылки с каких-то адресов вам, то тоже внесите их в список исключений.
Порядок правил
Так как внутри каждого правила мы останавливаем обработку, то важно задать нужный порядок:
Фильтры можно перетаскивать мышкой/манипулятором, формируя нужный порядок.
Пересылка почты
В данном примере настроена пересылка всей почты с адреса roman@stud... на roman@cs...
Здесь показан момент создания фильтра, он еще не сохранен и в списке фильтров его нет.
Фильтрация по отправителю
Аналогична фильтрации по получателю (выше), только по полю From. Точно также рекомендуется использовать сравнение
содержит/contains, т.к. происходит сравнение строк и такие строки считаются разными:
- «Иванов <ivanov@mail.ru>»
- «<ivanov@mail.ru>»
- «ivanov@mail.ru»
Настройка пересылки или фильтрации через файлы на сервере
Как следует из названия, требуется
файловый доступ на сервер.
Редактирование файлов требует большей ответственности, т.к. неправильные настройки могут привести к потере почты, поэтому лучше используйте настройку через 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), остальные письма будут доставлены во
Входящие