, но почтовые сообщения отвергаются лишь в процессе взаимодействия с удаленной программой, в частности, в тот момент, когда она передает команду
RCPT TO:
. В результате попытки пересылки писем немедленно прекращаются.
•
sender_reject
. Данная опция блокирует письма от указанных отправителей. Роль отправителя может выполнять либо целый домен, либо отдельный пользователь в домене. Например, опция
должны отвергаться. Сервер 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-адресов. Например, если указана опция
,
сервер 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, и в особенности фильтры, определяемые пользователем, позволяют настроить систему в соответствии с вашими потребностями.
Настройка Postfix
Как и в сервере Exim, конфигурационный файл Postfix достаточно прост. Настроить сервер Postfix сможет каждый, кто хотя бы поверхностно знает терминологию SMTP и способен понять назначение имен. Сервер Postfix имеет модульную структуру, т.е. его функции обеспечиваются совместным выполнением нескольких программ. Postfix предоставляет приблизительно те же возможности, что и Exim. Подобно другим серверам SMTP, Postfix обеспечивает маскировку адресов, прием писем, адресованных в локальные домены, работу в режиме ретрансляции почты, а также предоставляет возможность противодействия распространению спама.
Postfix по умолчанию используется в Mandrake, но также может быть установлен и в других системах, например в Debian и SuSE. Этот сервер также входит в состав PowerTools. RPM-пакет, предназначенный для Mandrake, может быть установлен в других дистрибутивных пакетах Linux, но сценарии содержащиеся в данном пакете, работать не будут. Поскольку Postfix чаще всего применяется совместно с Mandrake, материал данного раздела будет излагаться с учетом конфигурации Postfix, устанавливаемой по умолчанию для данной версии системы. Настройка Postfix для остальных систем отличается от конфигурации для Mandrake лишь отдельными деталями.
Конфигурационный файл Postfix
Особенности выполнения Postfix определяются содержимым конфигурационного файла
main.cf,
который обычно располагается в каталоге
/etc/postfix
. Большинство записей в этом файле представлены в следующем формате:
опция = значение
Некоторые записи
main.cf
определяют переменные, используемые далее в этом файле. Чтобы ссылаться на значение опции как на переменную, надо указать перед именем опции символ
$
и включить полученное имя в правую часть записи. В качестве примера рассмотрим следующие две записи (между которыми могут находиться другие строки):