Настройка Exim для противодействия распространению спама
Настройка Exim для противодействия распространению спама
В сервере Exim предусмотрен набор правил фильтрации. С помощью этих правил вы можете задавать адреса узлов, которым должна быть запрещена передача писем, указывать пользователей, от которых почта не должна приниматься, а также выполнять другие проверки на основе самых разнообразных критериев. Основные опции фильтрации описаны ниже.
• host_reject. Данная опция задается в конфигурационном файле exim.conf. Ее значение представляет собой список имен узлов и доменов, а также IP-адресов, разделенных двоеточиями. Почта, переданная с компьютеров, указанных посредством данной опции, должна блокироваться. Например, запись host_reject = *.badspammer.net:10.16.8.0/24 указывает на то, что письма из домена badspammer.net, а также из сети 10.16.8.0/24 должны отвергаться. Система отказывается взаимодействовать с удаленным компьютером, заданным с помощью опции host_reject, уже на этапе установления соединения. В результате удаленный компьютер предпринимает повторные попытки обращения к вашему серверу, но связанная с этим дополнительная нагрузка на линии связи и компьютеры небольшая.
• host_reject_recipients. Данная опция действует так же, как host_reject, но почтовые сообщения отвергаются лишь в процессе взаимодействия с удаленной программой, в частности, в тот момент, когда она передает команду RCPT TO:. В результате попытки пересылки писем немедленно прекращаются.
• sender_reject. Данная опция блокирует письма от указанных отправителей. Роль отправителя может выполнять либо целый домен, либо отдельный пользователь в домене. Например, опция sender_reject = spammer@abigisp.com:badspammer.net указывает на то, что письма из домена badspammer.net и от пользователя spammer@abigisp.com должны отвергаться. Сервер Exim прекращает взаимодействие сразу же, как только сможет идентифицировать отправителя. В некоторых случаях это приводит к повторным попыткам передачи сообщений, предпринимаемым удаленными программами.
• sender_reject_recipients. Данная опция действует подобно опции sender_reject, но взаимодействие с удаленным компьютером прекращается после того, как выполняющаяся на нем программа укажет адрес получателя, т.е. передаст команду RCPT TO:. Данный подход более эффективен по сравнению с использованием опции sender_reject, так как при этом удаленная система больше не предпринимает попыток передачи сообщений.
• Фильтры, определяемые пользователем. Сервер Exim предоставляет пользователям возможность создавать собственные фильтры. Для их формирования используются файлы .forward, находящиеся в рабочих каталогах пользователей. Возможность создания новых фильтров превращает Exim в чрезвычайно мощный и гибкий инструмент. Фильтры, определяемые пользователем, во многом похожи на фильтры Procmail, которые будут рассматриваться далее в этой главе. Подробное описание средств создания пользовательских фильтров содержится файле filter.txt.gz, который поставляется в составе Exim. В Debian GNU/Linux этот файл располагается в каталоге /usr/doc/exim; распаковать его можно с помощью утилиты gunzip.
Если вам необходимо задать длинный список отправителей, письма от которых не должны приниматься, вы должны указать их в отдельном файле, а ссылку на этот файл задать в качестве значения соответствующей опции. Помимо перечисленных выше средств, в сервере Exim также предусмотрен ряд опций, предназначенных для работы со списками IP-адресов. Эти опции, располагающиеся в файле exim.conf, кратко описаны ниже.
• rbl_domains. Значением этой опции является перечень адресов серверов, поддерживающих списки IP-адресов (эти серверы описаны в табл. 19.1). Адреса серверов разделяются двоеточиями и могут сопровождаться последовательностями символов /warn или /reject. Значение /warn указывает серверу Exim на то, что он должен добавить поле заголовка с предупреждающим сообщением (который впоследствии может быть использован фильтром Procmail), a /reject означает, что письмо должно быть отвергнуто. Кроме того, в составе данной опции могут также использоваться последовательности символов /accept (формирование "белого списка") и /skiprelay (если домен отправителя указан в опции host_accept_relay, то список IP-адресов не должен использоваться).
• rbl_hosts. По умолчанию принимается значение * данной опции; оно указывает на то, что сервер должен проверять все узлы, с которыми он взаимодействует, на соответствие спискам IP-адресов, указанных посредством опции rbl_domains. При необходимости вы можете освободить некоторые серверы от этой проверки. Чтобы сделать это, вам надо указать их имена перед символом *; каждому имени должен предшествовать символ !. Например, выражение rbl_hosts = !ok.pangaea.edu:* освобождает ok.pangaea.edu от проверки на принадлежность спискам IP-адресов.
• rbl_reject_recipients. Последовательности символов /warn и /reject в составе значения опции rbl_domains указывают, следует ли добавить к письму поле заголовка с предупреждающим сообщением или отказаться от получения письма. Если эти последовательности не указаны, Exim по умолчанию отказывается от письма. Изменить поведение сервера позволяет опция rbl_reject_recipients. Если вы зададите в конфигурационном файле выражение rbl_reject_recipients = no, Exim будет по умолчанию добавлять в заголовки писем предупреждающие сообщения.
• recipients_reject_except. Данная опция позволяет задавать исключения из списков IP-адресов. Например, если указана опция recipients_reject_except = posmaster@threeroomco.com, сервер Exim будет получать письма, адресованные пользователю postmaster@threeroomco.com, даже в том случае, если они были отправлены с компьютера, указанного в списке IP-адресов.
Дополнительную информацию об опциях, предназначенных для работы со списками IP-адресов, вы найдете в документации, поставляемой в комплекте с сервером Exim. Помимо опций, рассмотренных выше, Exim поддерживает дополнительные опции, имеющие лишь косвенное отношение к борьбе со спамом. Эти опции перечислены ниже.
• headers_check_syntax. Exim может проверить формат сообщений и отвергнуть их, если они составлены некорректно. Серверы некоторых спамеров неправильно формируют заголовки, поэтому, отвергая подобные сообщения, вы избавляетесь от писем с рекламными сообщениями. Чтобы сервер блокировал некорректно составленные письма, необходимо задать значение true опции headers_check_syntax.
• helo_verify. В процессе взаимодействия по протоколу сервер SMTP передает команду HELO или EHLO, указывая в ее составе свое имя. Обычно Exim не требует этой команды, но при необходимости вы можете задать список узлов, которые должны соблюдать все правила взаимодействия серверов. Так, например, выражение helo_verifу = * указывает, что все удаленные серверы должны строго следовать протоколу обмена. Опция helo_verifу не только требует передавать команду HELO или EHLO, но также включает проверку соответствия IP-адресов доменным именам. Системы спамеров часто бывают неверно сконфигурированы, поэтому передаваемые ими письма не выдерживают подобной проверки. Однако следует учитывать, что серверы, с которых поступают обычные письма, также бывают некорректно настроены. В этом случае будут потеряны нужные вам сообщения.
• message_size_limit. Данная опция также имеет лишь отдаленное отношение к борьбе со спамом, но с ее помощью можно избавиться от некоторых рекламных сообщений. По умолчанию устанавливается значение 0 опции message_size_limit, которое отменяет ограничения на размер писем. Если вы зададите положительное значение данной опции, оно будет определять максимальный размер письма. Это предотвратит получение рекламных сообщений большого объема.
Средства фильтрации сообщений, предоставляемые Exim, и в особенности фильтры, определяемые пользователем, позволяют настроить систему в соответствии с вашими потребностями.