Защита почтовика Sendmail от спама и DoS-атак

Алексей Комолов (С.-Петербург)

Sendmail — один из старейших почтовых агентов. Его несложно защитить от спама и DoS-атак.

Для защиты от DoS-атак необходимо в файле sendmail.mc отредактировать некоторые опции:

Define(confCONNECTION_RATE_THROTTLE’,43′)dnl — максимальное число соединений в секунду. Если частота превышена, дополнительные соединения будут поставлены в очередь (не отброшены).

Define(confMAX_DAEMON_CHILDREN’,40′)dnl — максимальное число дочерних процессов sendmail. Если это число будет превышено, дополнительные соединения будут поставлены в очередь (не отброшены).

Define(4configSIN_FREE_BLOCKS’,100′)dnl — если на диске осталось указанное количество блоков, сервер больше не будет принимать сообщения. По умолчанию — 100.

Define(confMAX HEADERS LENGTH’, 4024′)dnl — максимальный размер заголовка входящего сообщения (указана в байтах).

Define(confMAX_MESSAGE_SIZE’,4194304′)dnl — максимальный размер тела входящего сообщения. Значение по умолчанию равно 4 Мб (4 194 302 байта). Но и слишком маленькое значение устанавливать не нужно, так как оно может быть легко превышено вложениями.

Для защиты от спама в том же файле редактируем строки:

FEATURE(relaybasedonMX) — разрешает передачу в случае, если МХ-запись домена получателя указывает на нужный узел. Функция основана на том, что крекеру никогда не удастся модифицировать существующие записи сервера DNS.

FEATURE(relay_hosts_only) — если определена, то в файлах /etc/mail/access и /etc/mail/relay-domains содержатся конкретные имена узлов (или IP-адреса), с которых разрешена передача.

FEATURE(acceptunqualifiedsenders) — по умолчанию Sendmail принимает почту от пользователя, e-mail адрес которого не отвечает RFC, то есть почта от пользователя ivan принята не будет, а если пользователь укажет адрес в правильном формате, к примеру ivan@mail.ru, тогда у него проблем с отправкой сообщения не будет. Если данная опция включена, то разрешается обработка почты с адресов, не сообразных RFC.

FEATURE(acceptunresolvabledomains) — позволяет принимать почту для доменов, существование которых не удалось подтвердить с помощью DNS. Если функция включена, то через сервер можно отправить сообщение для несуществующего домена. Употребление данной функции оправданно, если DNS-серверы настолько загружены, что применение данной функции явно замедляет обработку почты.

FEATURE(dnsbl) — опция позволяет отбрасывать адреса, находящиеся в черном списке на http://mail-abuse.org. Данное удовольствие платное, поэтому ниже будет рассмотренно несколько бесплатных альтернатив.

FEATURE(blacklist_recipients) — включает блокировку почты к/от адресов, указанных в базе данных Access

База данных access, упомянутая в предыдущей опции, — это текстовый файл (обычно /etc/mail/access), позволяющий контролировать пользователей, которые могут получить доступ к почтовому серверу. Каждая запись состоит из узла, IP-адреса (частичного или полного) и одного из действий, перечисленных ниже:

REJECT — узлу запрещено даже подключаться к почтовому серверу

DISCARD — принять сообщение, но одновременно же его удалить (отправитель будет думать, что сообщение удачно отправлено).

RELAY — позволяет передавать почту третьей стороне.

ОК — принять сообщение.

Сообщение об ошибке — пользовательское, совместимое с RFC 821.

Например:

ivan@mail.ru &ltmailto:ivan@mail.ru&gt  OK

1.2.3.4 REJECT spammer.com &lthttp://spammer.com&gt 550 We do not accept mail form your domain

Данный файл содержит три правила. В первом случае почта от пользователя ivan@mail.ru будет принята. Во втором случае запрещается узлу с адресом 1.2.3.4 подключаться к серверу, а в третьем — запрещается передача и сообщается пользователю, что не принимается почта с его домена.

После создания/редактирование файла /etc/mail/access можно сделать из него базу данных access:

Makemap  hash  /etc/mail/access.db  <   /etc/mail/access

Изменения вступили в силу даже без перезагрузки sendmail.

Жлательно также установить опцию PrivacyOptions в sendmail.cf, запретив тем самым употребление команд VRFY и EXPN.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>