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 пользователя.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Введение
SPF allows domain owners to state in their DNS records which IP addressess should be allowed to send mails from their domain. This will prevent spammers from spoofing the.

First domain owners have to create a special  DNS record. Then an SPF-enabled MTA can read this and if the mail originates from a server that is not described in the SPF record the mail can be rejected. An example entry could look like this:

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

The  means to reject all mail by default but allow mail from the ,   and   DNS records. For more info consult further resources below.

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

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

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

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

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

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

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

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

If you wish to use whitelisting and blacklisting you must add the sender and receiver to  after which you create the relation between the two e-mail addresses in   and state if it is whitelisting  or blacklisting.

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

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

This inserts a test user and a Test policy. Adjust these examples to fit your needs. Further explanation of the configuration names can be found in.

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

Конфигурация Spamassassin для использования MySQL
As of Spamassassin 3.0 it is possible to store the Bayes and AWL data in a MySQL database. We will use MySQL as the backend as it can generally outperform other databases. Also, using MySQL for both sets of data makes system management much easier. Here I will show how to easily accomplish this.

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

Now that the database is created we'll create the necessary tables. You can cut and paste the following into the mysql prompt:

MySQL table layout

Конфигурация Spamassassin для использования MySQL
If you have an old Bayes database in the DBM database and want to keep it follow these instructions:

Now give Spamassassin the required info:

Next, change its permissions for proper security:

Now all you have to do is.

Amavisd-new
To troubleshoot Amavisd-new start out by stopping it with  and then start it manually in the foreground with   and watch it for anomalies in the output.

Spamassassin
To troubleshoot Spamassassin you can filter an email through it with. To ensure that the headers are intact you can move it from another machine with IMAP.

If you want you can make get the same information and more with Amavisd-new using.

Повторяющиеся действия после установки
Некоторые из действий, описанных в данной статье нужно повторять после обновлений. Например, команду  из раздела  нужно повторять после каждого обновления 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