Темой нашей сегодняшней беседы будет анти-relay и анти-spam в почтовых серверах. Надо сказать, что проблема эта становится все более актуальной в связи с нарастанием энтропии в сети Интернет. Вообще говоря, упоминать продукты небезызвестной компании (типа Exchange 5.5 и Exchange 2000) совершенно не хочется, в связи с тем, что в оных практически отсутствуют гибкие средства для защиты от спама. Особенно это касается Exchange 5.5. Наибольшее количество хостов в Интернете использует ОС UNIX вкупе с Sendmail - MTA, который идет в составе практически всех дистрибутивов ОС UNIX.
Именно этому <мыльному агенту> и будет посвящено несколько последующих строчек. Для начала, вкратце, напомним, что в настоящее время конфигурационный файл Sendmail создается с помощью макро-компилятора m4, и вручную редактируется очень редко. Также заметим, что Sendmail до версии 8.9 (т.е. 8.8 и старше) по умолчанию разрешает relaying. Всем, кто использует версию 8.8 и ниже настоятельная рекомендация установить что нибудь поновее. Более новые версии (8.9 и выше) по умолчанию запрещают relaying. Итак, определимся в терминах. Relaying - это передача любой, не адресованной на ваш домен, почты от чужого хоста через ваш сервер. Т.е. почта, адресованная на ваш домен, отправляемая чужим хостом, не считается relaying.
Итак, функции и параметры:
Для начала, функции, использование которых не всегда желательно.
FEATURE(`relay_based_on_MX') - разрешает relay в случае, если MX-record для домена-получателя указывает на ваш хост. Эта функция рассчитана на то, что злоумышленник ни коим образом не может изменить существующие записи серверов DNS. В обратном случае, если имеется возможность указать для некоторого домена MX-запись, указывающую на ваш сервер, можно получить relay.
FEATURE(`accept_unresolvable_domains') - принимать почту для доменов, существование которых не удалось разрешить с помощью службы имен DNS. При использовании данной функции существует возможность отправить почтовое сообщение через ваш сервер для несуществующего домена. Применение этой функции оправдано только в случае чрезмерной загрузки DNS-серверов, из-за которой замедляется процесс приемки и обработки почтовых сообщений (для каждого адреса получателя необходим DNS-запрос).
FEATURE(`promiscuous_relay') - крайне не рекомендуется. В версии Sendmail 8.9 и выше открывает relay по умолчанию для всех. Использование оправдано только, наверное, во время тестирования и выявления неполадок почтовой системы в целом.
FEATURE(`accept_unqualified_senders') - по умолчанию Sendmail не принимает почтовые сообщения, где не указан адрес отправителя в формате, соответствующему RFC для SMTP, т.е. например user вместо user@somewhere.net. Если данная функция включена, послания от таких отправители будут обработаны.
Конфигурационные файлы:
/etc/mail/relay-domains позволяет указать, для каких доменов разрешен relaying. Обычно тут указывают имена своих доменов, или домены, для которых на данный хост имеется MX-запись с меньшим приоритетом (backup MX). mydomain.ru local.mydomain.ru Если определена функция FEATURE(`access_db') то имеется возможность использования следующих удобных средств, а именно файлов /etc/mail/access а точнее его хешированного братца /etc/mail/access.db - База доступа, в которой определен список доменов и IP-адресов, позволяющая администратору вручную назначить право на доступ и/или запретить его. Формат записей в этой базе следующий:
После обновления записей в файле access следует заново создать хешированного брата access.db помощью команды # makemap hash /etc/mail/access < /etc/mail/access
Во второй строчке указан кусочек блока IP-адресов, определяющий сеть класса C, имеющей право на relaying. В третьей строчке указан конкретный адрес отправителя, при попытке relaying с которого Sendmail выдаст вежливое сообщение о произощедшей ошибке.
Функции для различных применений
FEATURE(`relay_hosts_only') - если определена, тогда в файлах /etc/mail/access и /etc/mail/relay-domains указываются только конкретные хосты и адреса, с которых разрешен relaying.
FEATURE(`relay_entire_domain') - аналогично указанию в файле /etc/mail/relay-domains всех своих поддоменов. Если эта функция активизирована, хостам, входящим в ваш домен и имеющим соответственно, соответствующую запись в DNS автоматически разрешается relaying.