Ключевые слова:postfix, acl, limit, (найти похожие документы)
From: Ворона Александр <http://vorona.com.ua/>
Date: Mon, 15 Mar 2007 14:31:37 +0000 (UTC)
Subject: Несколько замечаний о smtpd_*_restrictions в Postfix
Оригинал: http://vorona.com.ua/articles/smtpd.html
Предыстория:
Стоял у меня Postfix настороеный полгода, я думал что всё хорошо и не
напрягался. Спам натыкался на несуществующие адреса, ClamAV и
spamassassin отдыхали. Тока засветил я своё мыло в инете - на
следующий день приходит письмо. От меня ко мне же. А я и не припомню,
чтобы я сам себе писал, да и архив вкладывал с екзешником. Какие-то
ребята из Донецка постарались, ну - не суть важно. Понял я - мелкая
бага в постфиксе - надо постфиксить :) Да и напарник по работе
жаловался, что не получается сделать белый список на основании адреса
отправителя не в ущерб другим проверкам. Да и сам постфикс мой давно
просил проверки адреса отправителя.
Клиентами в этой статье я называю всех кто подключается к Postfix -
будь то почтовые сервера, релеи или непосредственно рабочие станции.
В демоне smtpd есть 4 ограничения(restrictions) для почты
Ограничение Когда проверяется Что проверяется
smtpd_client_restrictions - сразу после установления соединения ip-адрес клиента
smtpd_helo_restrictions - на этапе HELO/EHLO приветсвие клиента
smtpd_sender_restrictions - на этапе MAIL FROM: адрес отправителя
smtpd_recipient_restrictions - на этапе RCPT TO: адрес получателя
В основном именно они используются на передовой линии антиспама.
Проверка происходит в указанном порядке. Если какое-либо из
ограничений даёт негативный ответ - дальнейшая проверка прекращается и
клиент посылается куда подальше.
И есть одна директива, которая управляет временем вычисления значений
и применения ограничений. Это smtpd_delay_reject. Если она равна yes,
Postfix дождётся момента, когда будет доступна полная информация о
клиенте(ip и helo) и письме(от кого и кому), и только после этого
вступят в действие ограничения. Иначе ограничения вычисляются и
применяются соотвественно таблице. По умолчанию директива включена.
Как пишут в мане, это есть хорошо - в логе видно, кому и чья почта "не
дошла". Также это даёт определённые плюсы - возможность оперировать
всеми величинами во всех ограничениях. Поясню на примере.
Есть криво настроенные почтовые сервера, с которых приходится
принимать почту. Перед моим напарником встала задача - принимать почту
с определённого домена (пусть domain.com )во чтобы то ни стало. И не
важно что почтовые сервера, с которых идёт эта почта, редко
повторяются и не имеют преобразования ip в имя. Не требовать обратного
преобразования вообще - засыпают спамом все кому не лень. Ждать пока
засветятся все ip, с которых идёт domain.com' овская почта - долго да
и где гарантися что не будет новых. Вообщем - засада. Вспоминаю с чего
начинал - запретить почту из мира с моим же адресом отправителя.
Заглядываю на форум в своей локалке, где проскакивала эта тема - и
меня осеняет :) .
Оказывается в каждом ограничении можно проверять любой параметр,
например в ограничении получателей smtpd_recipient_restrictions
проверять ip-адрес клиента. Вот соотвествующие наиболее часто
используемые директивы
|Директива что проверяет
check_client_access ip-адрес клиента
check_helo_access приветсвие клиента
check_sender_access адрес отправителя
check_recipient_access адрес получателя
В нашем случае имеем
/etc/postfix/main.cf:
smtpd_delay_reject = yes
smtpd_client_restrictions = check_sender_access hash:/etc/postfix/sender_access,
reject_unknown_client
/etc/postfix/sender_access:
domain.com OK
т.е. письма, приходящие с domain.com, не будут отвергаться, если у
клиента нет преобразования ip в имя. От клиентов, присылающих письма
от другого домена, потребуется наличие преобразования ip в имя.
Аналогично можно обходить для domain.com остальные проверки, если в
этом есть необходимость. В то же время для других писем будут
применены более жёсткие проверки, описание которых выходит за рамки
этой статьи и которые довольно хорошо расписаны без меня.
Удачи!