• Фильтры, определяемые пользователем. Сервер 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-адресов доменным именам. Системы спамеров часто бывают неверно сконфигурированы, поэтому передаваемые ими письма не выдерживают подобной проверки. Однако следует учитывать, что серверы, с которых поступают обычные письма, также бывают некорректно настроены. В этом случае будут потеряны нужные вам сообщения.
Читать дальше