Mailfiltering Gateway/ru

Данная статья - это пошаговая инструкция по установке технологий по борьбе со спамом для Postfix. Среди них мы рассмотрим Amavisd-new с использованием Spamassassin и ClamAV, серые списки и SPF.

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

Общая картина
Данный документ описывает, как настроить шлюз для фильтрации спама в почтовом трафике со множеством доменов. Такой сервер можно запускать перед настоящими почтовыми серверами, например, Microsoft Exchange или Lotus Notes.

Для данной статьи были выбраны приложения с читаемой конфигурацией и хорошими отзывами о безопасности. Почтовый сервер - Postfix, который достаточно безопасен и который можно достаточно просто правильно настроить. Обычно Postfix проверяет входящую почту на порту 25. При получении, он будет перенаправлять ее Amavisd-new на порт 10024. Amavisd-new затем будет отфильтровывать почту через различные фильтры, а затем отправит ее обратно Postfix по порту 10025, после чего Postfix перенаправит почту следующему почтовому серверу.

Amavisd-new это фреймворк по фильтрации содержимого, использующий приложения-помощники для фильтрации вирусов и фильтрации спама. В данной настройке мы будем использовать два приложения-помощника — ClamAV для фильтрации писем с вирусами и Spamassassin для отфильтровывания спама. Spamassassin сам по себе может служить еще одним слоем фильтрации содержимого, и использовать приложения-помощники, например, Vipul's Razor2 и DCC.

В отличие от многих других технологий борьбы со спамом, вроде RBL, Spamassassin не просто принимает или отбрасывает данное письмо, судя по одному единственному тесту. Он использует множество внутренних тестов и внешних приложений-помощников, чтобы вычислить очки спама для каждого проходящего письма. Эти очки основаны на следующих тестах:


 * Байесова фильтрация
 * Статические правила на основе регулярных выражений
 * Распределенные сети:
 * RBLs
 * Razor2
 * Pyzor
 * DCC

Первая часть (с 1 по 4 главу) данной статьи описывает базовую настройку почтового шлюза с фильтрацией. Следующие главы могут реализовываться по отдельности, без зависимостей между главами. Эти главы опишут, как


 * настроить специальные папки IMAP для обучения фильтра Байеса, а также для доставки ложных срабатываний
 * настроить серые списки в Postfix
 * настроить Amavisd-new для использования MySQL в качестве бэкенда для пользовательских настроек
 * настроить Spamassasin для использования MySQL в качестве бэкенда для данных AWL и Байеса

Планируемая пятая часть будет содержать различные подсказки по поводу быстродействия, а также всяким вещам, о которых вы можете захотеть узнать (запуск в изолированном окружении, ограничения Postfix, и так далее).

Приготовления
Перед тем, как вы начнете, проверьте, что у вас есть рабочая установка Postfix, куда вы можете посылать, и откуда вы можете получать почту. Также вам понадобится почтовый сервер, куда вы будете отправлять почту далее. Если вы не умеете настраивать Postfix, то процесс может быстро стать чересчур сложным, если вы все делаете за один раз. Если вам нужна помощь, вы можете найти ее в отличной статье полный виртуальный почтовый сервер в Gentoo Wiki.

Установка необходимых программ
Мы начнем с установки самых важных программ: Amavisd-new, Spamassassin и ClamAV.

Настройка DNS
Пока программы устанавливаются, запустите еще одну оболочку, и создайте необходимые записи DNS.

Начните с создания записи  для почтового шлюза и записи   для следующего пункта назначения.

Настройка DNS

Открываем файрвол
Кроме разрешения на прохождение нормального почтового трафика, вам нужно разрешить некоторым сервисам прохождение через ваш файрвол, чтобы позволить сетевым проверкам взаимодействовать с серверами.

Razor использует пинги, чтобы определить ближайшие сервера.

Конфигурация Postfix
Сначала нам нужно сказать, чтобы он прослушивал порт 10025, и мы уберем большинство ограничений, так как они уже были применены экземпляром  , который прослушивает порт 25. Также мы убедимся, что на порту 10025 он прослушивает только локальные соединения. Чтобы этого достичь, нам нужно добавить следующие строки в конце файла

Изменяем файл master.cf

Файл сообщает программе master из состава postfix, как запускать каждый индивидуальный процесс postfix. Более подробную информацию можно получить по команде.

Далее нам нужно, чтобы главный экземпляр, слушающий порт 25, фильтровал почту через  , который слушает порт 10024.

Также нам надо установить, куда нужно отправлять почту далее. Скажите Postfix фильтровать всю почту через внешний фильтр содержимого, и включите явный выбор маршрута, чтобы Postfix знал, куда направлять почту.

У Postfix есть множество установленных опций в. Для более детального объяснения данного файла просмотрите, либо то же самое онлайн Параметры Конфигурации Postfix.

Файл это обычный файл хэша Postfix. Направьте почту на домен в левой части, и она будет перенаправлена в пункт назначения в правой части.

После того, как мы отредактировали файл, нам нужно запустить команду. Postfix не будет читать данный файл, пока мы не преобразуем его в нужный формат с помощью команды. Тогда будет создан файл. Нет необходимости перезагружать Postfix, так как он увидит изменения автоматически.

Если ваши первые попытки послать почту привели к ошибкам, скорее всего где-то вы допустили ошибки в конфигурации. Пока вы работаете с ошибками конфигурации, попробуйте временно разрешить. Это не даст Postfix отбрасывать письма при ошибках доставки, и Postfix будет считать такие ошибки временными. Он будет оставлять письма в почтовой очереди, пока  не будет отключен, либо убран.

Как только вы закончили создавать рабочую конфигурацию, удостоверьтесь, что вы отключили или убрали  и перезагрузили Postfix.

Конфигурация Amavisd-new
Amavisd-new используется для работы по фильтрации, и позволяет вам легко соединить несколько различных технологий. При получении почтового сообщения, он извлечет письмо, профильтрует его через некоторые фильтры, с поддержкой белых и черных списков, отфильтрует почту с использованием различных вирусных сканеров, и, в конце концов, отфильтрует почту с использованием SpamAssassin.

Amavisd-new и сам имеет некоторое число дополнительных возможностей:


 * он определяет опасные файлы в приложениях к письму, и у него есть политики для их обработки
 * политики (для каждого пользователя, для каждого домена, для всей системы) для:
 * белых списков
 * черных списков
 * границы оценок для спама
 * политики в части вирусов и спама

Кроме  и , все приложения мы будем запускать под пользователем.

Отредактируйте следующие строки в

Создайте каталог для карантина вирусных писем, так как мы не хотим, чтобы они попадали к нашим пользователям.

Конфигурация ClamAV
Мы будем использовать ClamAV в качестве вирусного сканера, так как у него неплохой процент детектирования, сравнимый с коммерческими предложениями, он очень быстр, и у него открытый исходный код. Мы с вами любим файлы логов, поэтому создайте лог, используя   и включите дополнительное логгирование. Кроме того, не запускайте  от пользователя. Теперь отредактируйте

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

Запустите  м , используя инициализационные скрипты, изменив.

В конце, укажите в файле новое положение сокета.

Конфигурация Vipul's Razor
Razor2 это распределенная сеть контрольных сумм писем со спамом. Установите ее с помощью команды  и создайте необходимые файлы конфигурации. Делайте это от пользователя, выполнив команду  , а за ней.

Временно установим оболочку amavis в bash:

Сбросим оболочку на /bin/false:

Конфигурация Distributed Checksum Clearinghouse (dcc)
Как и Razor2, dcc это сеть контрольной суммы спама, являющаяся распределенной и управляемая сообществом. Ее философия состоит в том, чтобы подсчитать число получателей данного письма, идентифицировав каждое письмо некоторой контрольной суммой.

Конфигурация Spamassassin
Amavis сам использует библиотеки Perl для Spamassassin, поэтому нет необходимости запускать сервис. Кроме того, это создает некоторую путаницу в конфигурации, так как некоторые настройки Spamassassin конфигурируются в файле, но, потом, перенастраиваются в.

У каждого хорошего правила есть и хорошие исключения
Как только почта по настоящему начнет проходить через данный почтовый шлюз, вы, скорее всего, выясните, что вышеприведенная настройка несовершенна. Может быть каким-то из ваших клиентов нравится получать письма, которые не нравятся другим. Вы можете достаточно просто создать белые и черные списки для отправителей. Раскомментируйте следующую строку в.

В файле вы помещаете полные адреса электронной почты, либо только их доменные части, а затем указываете положительное/отрицательное количество очков, которое нужно добавить к очкам спама.

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

Не проверять с помощью спам-фильтров почту с ящиков postmaster и abuse

Добавляем больше правил
Если вы хотите использовать больше правил, разработанных ниндзями по борьбе со спамом из SARE (SpamAssassin Rules Emporium), вы можете легко добавлять и удалять их путем механизма, включенного в Spamassassin.

Краткое описание использования наборов правил SARE совместно с  может быть найдено здесь.

Тестирование установки
Теперь, перед запуском  можно проверить вручную, что все работает.

Теперь вы обновили определения вирусов, и вы знаете, что правильно работает.

Проверьте freshclam и amavisd из командной строки, используя тестовые письма amavisd. Запустите  и   следующими командами:

Если все пройдет хорошо, то  теперь должен слушать входящую почту на порту 25, и копии проверенных писем на порту 10024. Для проверки этого, просмотрите ваш файл логов.

Теперь, если в файле логов не появилось никаких странных сообщений, то пришло время нового теста.

Используйте  чтобы вручную соединиться с   на порту 10024 и с   на порту 10025.

Добавьте  и   к уровню запуска   (по умолчанию).

Создаем пользователя spamtrap (ловушка для спама)
Создайте аккаунт и каталоги spamtrap.

Дайте пользователю spamtrap какой-либо пароль.

Если вы хотите вручную проверять некоторые письма, чтобы удостовериться, что не произошло ложных срабатываний, вы можете использовать следующую конфигурацию  для перенаправления найденного спама в другие каталоги почты.

Создаем .procmailrc
Проверьте, что Postfix использует  для доставки почты.

Создаем каталоги для почты
Теперь мы создадим папки для хорошей почты (ham) и плохой почты (spam).

Amavisd-new должен иметь возможность читать эти файлы, как и все почтовые пользователи. Поэтому мы добавим всех необходимых пользователей в группу mailuser вместе с amavis.

Это сделает папки spam и ham доступными для записи, но не для чтения. Поэтому пользователи смогут спокойно отправлять свои хорошие письма без боязни, что кто-то еще их прочитает.

Затем запустите следующую команду от пользователя :

Добавляем задачи cron
Теперь запустите, чтобы отредактировать crontab пользователя amavis, чтобы разрешить автоматическое обучение фильтра Байеса каждый час.

Изменяем amavisd.conf
Теперь измените amavis, чтобы он перенаправлял письма со спамом на аккаунт, при этом сохраняя заголовки спама.

Очистка
Мы не хотим хранить почту вечно, поэтому будем использовать, чтобы регулярно ее очищать. Установите эту программу командой. Только  может запустить , так что нам нужно отредактировать файл crontab пользователя.

Введение
Серые списки - это одно из новых моделей оружия в арсенале борьбы со спамом. Как видно из имени, метод очень похож на белые списки и черные списки. Каждый раз, когда неизвестный почтовый сервер пытается доставить почту, эта почта отклоняется с сообщением try again later (попробуйте позже). Это означает, что письмо задерживается, но тупые боты, занимающиеся рассылкой спама, которые не полностью реализуют протокол по стандарту RFC, больше не будут пытаться доставить спам, и никогда не будут повторять попыток. Со временем, скорее всего, спам-боты приспособятся к такой защите, но к тому времени появятся другие технологии для определения спама.

Postfix 2.1 поставляется с простым сервером политик серых списков на Perl, который реализует такую схему. Однако его использование приводит к непредсказуемым результатам, если раздел, на котором находится база данных серых списков, переполняется. Существует улучшенная версия, не страдающая от этой проблемы. Сначала я покажу, как установить встроенную поддержку серых списков, которая поставляется с Postfix, а затем покажу, как настроить улучшенную версию.

Простые серые списки
Нам нужен файл, но ebuild по умолчанию его не устанавливает.

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

Настройка грейлистинга
Теперь, когда все это готово, все что нам остается сделать, это добавить серые списки к конфигурации postfix. Сначала добавим необходимую информацию к :

Изменяем master.cf для использования грейлистинга

Обычно демон spawn программы postfix убивает своих потомков через 1000 секунд, но это слишком мало для процесса работы с серыми списками, поэтому мы увеличим лимит времени в :

Мы не хотим использовать серые списки для всех доменов, а только для тех, которые часто эксплуатируются спамерами. В конце концов, это будет задерживать доставку почты. Список недавно подделанных доменов MAIL FROM можно найти онлайн. Добавьте домены, с которых вы получаете много спама к :

Формат файла sender_access

Если вы хотите более сложный список:

Теперь осталось только инициализировать базу данных :

Настройка простых серых списков окончена.

Конфигурация улучшенного грейлистинга с помощью postgrey
Вы можете установить улучшенную политику серых списков с помощью простой команды  :

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

Наконец, запустите сервер и добавьте его к нужному уровню запуска.

Введение
SPF позволяет доменам определять в своих DNS записях, какие IP адреса могут посылать почту с их домена. Это не дает спамерам подменять.

Сначала, владельцы домена должны создать специальную DNS запись. Затем агент передачи почты (MTA) с поддержкой SPF может прочитать ее, и если почта исходит с сервера, который не описан в записи SPF, то почта может быть отклонена. Например, запись может выглядеть так:

Пример записи SPF

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

В Spamassassin 3.0 есть поддержка SPF, но она не включена по умолчанию. Кроме того, новый демон политик в Postfix также поддерживает SPF, так что давайте установим поддержку SPF для Postfix.

Приготовления
Сначала установите Postfix 2.1, как было описано выше. Когда вы загрузили исходные коды, возьмите файл со следующим содержимым:

Этот скрипт на Perl требует некоторых библиотек Perl, которых нет в portage, но их довольно просто установить:

Теперь мы все сделали, и все, что нам осталось - это настроить Portage, чтобы он использовал новую политику.

Теперь добавьте проверку SPF в. Правильно настроенный SPF не должен повредить, поэтому мы можем проверять SPF для всех доменов:

Настройка MySQL
Для больших доменов, значения по умолчанию, которые вы можете установить в могут не устроить всех пользователей. Если вы настроите поддержку MySQL для amavisd-new, вы сможете использовать индивидуальные настройки для пользователей или групп пользователей.

Теперь, после создания базы данных, нам нужно создать необходимые таблицы. Вы можете вырезать и вставить следующие команды в поле ввода программы mysql:

Создаем таблицы MySQL

Если вы хотите использовать белые и черные списки, вам нужно добавить отправителя и получателя, после чего вы можете создать отношение между двумя адресами электронной почты в  , и указать, является ли это белым списком  или черным списком.

После создания таблиц, давайте заведем тестового пользователя и тестовую политику:

Создаем тестового пользователя и тестовую политику

Данный текст добавляет тестового пользователя и тестовую политику. Измените эти примеры так, как вам необходимо. Более детальное объяснение имен конфигурации можно найти в файла.

Конфигурация amavisd для использования MySQL
Теперь, когда мы настроили MySQL, нужно сообщить Amavis, что его нужно использовать:

Конфигурация Spamassassin для использования MySQL
Начиная с версии 3.0, Spamassassin может сохранять данные Байеса и AWL в базе данных MySQL. Мы будем использовать MySQL как бэкенд, так как он обычно работает быстрее остальных баз данных. Кроме того, использование MySQL для обоих наборов данных делает работу с системой гораздо быстрее. Я покажу, как быстро этого достичь:

Сначала создайте нового пользователя MySQL, затем создайте необходимые таблицы.

Теперь, после создания базы данных, создадим необходимые таблицы. Вы можете вырезать и вставить следующие команды в поле ввода программы mysql:

Структура таблиц MySQL

Конфигурация Spamassassin для использования MySQL
Если у вас старая база данных Байеса в базе данных DBM, и вы хотите ее сохранить, то следуйте следующим инструкциям:

Теперь дадим Spamassassin требуемую информацию:

Далее измените разрешения для необходимой безопасности:

Теперь, все что вам осталось сделать, это.

Amavisd-new
Чтобы разобраться с проблемами Amavisd-new, начните с его остановки командой, а затем запустите его вручную на переднем плане с помощью  , и посмотрите на какие-либо аномалии в выводе.

Spamassassin
Чтобы разобраться с проблемами Spamassassin вы можете отфильтровать почтовое сообщение с помощью. Чтобы удостовериться, что заголовки не повреждены, вы можете перенести его с другой машины по IMAP.

Если хотите, вы можете получить ту же самую информацию (и даже больше) с помощью Amavisd-new, используя.

Повторяющиеся действия после установки
Некоторые из действий, описанных в данной статье нужно повторять после обновлений. Например, команду  из раздела  нужно повторять после каждого обновления amavisd-new.

К счастью, Gentoo дает вам способ сделать это автоматически. В главе вмешиваемся в процесс установки, настольная книга Gentoo объясняет, как выполнять задачи после установки конкретного пакета, вроде такого:

Пример bashrc для запуска вышеописанного chown

Получение помощи
Если вам нужна помощь, то можете зайти в список рассылки amavis-user. Перед тем, как вы зададите вопрос, попробуйте поискать в архиве списка рассылки Amavis User. Если вы не найдете там ответа, вы можете подписаться на список рассылки Amavis User

Если ваш вопрос конкретно относится к SpamAssassin, DCC, Razor или Postfix, зайдите на их домашние страницы, описанные ниже.

Для более детальной информации

 * Установка Amavisd-new
 * Документация по использованию Amavisd-new с Postfix
 * Документация по банку политик Amavisd-new
 * Документация по SQL в Spamassassin
 * Грейлистинг
 * Политики SMTPD для Postfix
 * Блокирование спамеров с помощью контроля HELO Postfix
 * Обзор
 * Подсказки от Jim Seymour по поводу Postfix Anti-UCE

Общие источники

 * Spamassassin
 * Amavisd-new
 * Кусочки документации по Amavisd-new
 * Vipuls's Razor
 * Pyzor
 * Distributed Checksum Clearinghouse
 * Maia Mailguard

Другая документация

 * Достаточно защищенный анти-спам шлюз с использованием OpenBSD, Postfix, Amavisd-new, SpamAssassin, Razor и DCC

Благодарности
Мы хотели бы поблагодарить следующих авторов и редакторов за их вклад в это руководство:


 * Sune Kloppenborg Jeppesen
 * Jens Hilligs
 * Joshua Saddler