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 come with a simple Perl greylisting policy server that implements such a scheme. However it suffers from unpredictable results when the partition holding the greylisting database run out of space. There exists an improved version that do not suffer this problem. First I will show how to install the builtin greylisting support that come with Postfix and then I will show how to configure the more robust replacement.

Простой грейлистинг
We need the file but unfortunately the ebuild does not install it as default.

Now we have the file in place we need to create the directory to hold the greylisting database:

Настройка грейлистинга
Now that we have all this ready all that is left is to add it to the postfix configuration. First we add the necessary information to the :

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

The postfix spawn daemon normally kills its child processes after 1000 seconds but this is too short for the greylisting process so we have to increase the timelimit in :

We don't want to use greylisting for all domains but only for those frequently abused by spammers. After all it will delay mail delivery. A list of frequently forged MAIL FROM domains can be found online. Add the domains you receive a lot of spam from to :

Format of sender_access

If you want a more extensive list:

Now we only have to initialize the database:

Now the setup of simple greylisting is complete.

Конфигурация улучшенного грейлистинга с помощью postgrey
You can install the enhanced greylisting policy server with a simple  :

After installing  we have to edit. Changes are almost exactly like the built in greylisting.

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

Введение
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 has support for SPF, however it is not enabled by default and the new policy daemon in Postfix supports SPF so let's install SPF support for Postfix.

Приготовления
First you have to install Postfix 2.1 as described above. When you have fetched the source grab the with:

This Perl script also needs some Perl libraries that are not in portage but it is still quite simple to install them:

Now that we have everything in place all we need is to configure Postfix to use this new policy.

Now add the SPF check in. Properly configured SPF should do no harm so we could check SPF for all domains:

Настройка MySQL
For large domains the default values you can set in might not suit all users. If you configure amavisd-new with MySQL support you can have individual settings for users or groups of users.

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

MySQL table layout

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.

Now that we have created the tables let's insert a test user and a test policy:

Create test user and test policy

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
Now that MySQL is ready we need to tell amavis to use it:

Конфигурация 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.

First start out by creating the new MySQL user and then create the needed tables.

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