Реклама

Архив за Январь 2009

Проверка заголовков
По результатам проверки заголовков Postfix может выполнять разнообразные действия, такие как отклонение или удержание сообщения, удаление заголовков, отбраковка, перенаправление или фильтрация сообщений. На этом сайте будет рассказано о том, как реализовать эти действия.

Тестирование на реальном сообщении
Для проверки фильтра на реальном сообщении выполним команду для передачи нашего теста серверу Postfix:
$ /usr/sbin/sendmail recipient@example.com < /tmp/testpattern
Теперь посмотрим на почтовый журнал, чтобы проверить, записал ли Postfix сообщение для тестового шаблона. Вторая строка данного фрагмента журнала содержит предупреждение:
Mar 30 17:17:52 mail postfix/pickup[2455]: 53CAB633B3: uid=7945
from=<sender@example.com> Mar 30 17:17:52 mail postfix/cleanup[2461]: 53CAB633B3:
warning: header Subject: [...]

Определение проверки в основной конфигурации
Если пока все работает, вы можете отредактировать свой файл main.cf, использовав только что созданный и протестированный файл, содержащий header_checks:
header_checks = regexp:/etc/postfix/header_checks
Перезагрузите конфигурацию и отправьте тестовое сообщение, содержащее тот же самый тестовый шаблон.

Соответствует ли регулярное выражение тестовому шаблону?
Проверим шаблон фильтра, передав карту проверки и тестовый шаблон команде postmap. Выполним, например, такую команду:
$ postmap -q – regexp:/etc/postfix/header_checks < /tmp/testpattern
В случае совпадения команда печатает соответствующую строку тестового шаблона, например:
Subject: FWD: Look at pack from Microsoft WARN Unhelpful virus warning
Если соответствие шаблону не найдено, то команда postmap ничего не выводит.

Создание тестового шаблона
Все, что вам нужно сделать для создания тестового шаблона, – это поместить совпадающее с шаблоном сообщение в файл, например /tmp/ testpattern. В нашем примере это будет такое сообщение:
From: dingdong@example.com
Subject: FWD: Look at pack from Microsoft
blah blah
красный снег 2012

Добавление регулярного выражения и определение действия WARN
Первый этап – это добавление шаблона, который вы хотите проверять, в карту, и определение действия WARN на тот случай, когда содержимое сообщения будет совпадать с тестовым шаблоном. В этом разделе мы будем рассматривать пример, проверяющий на соответствие шаблону заголовок Subject, но вы сможете использовать эту процедуру и для других [...]

Безопасная реализация фильтрации заголовка или тела сообщения
Регулярные выражения могут стать очень сложными, и может получиться так, что ваш шаблон не будет работать, ему будет соответствовать больше строк, чем предполагалось, или вы вообще перестанете понимать, что происходит.
Для отладки шаблонов Postfix предлагает действие WARN. Если вы используете это действие в правой части своего шаблона, то Postfix при [...]

Сборка Postfix с поддержкой карт PCRE
Для того чтобы собрать Postfix с поддержкой PCRE, вам понадобятся библиотеки и заголовочные файлы PCRE. Вы найдете их в инструментальном пакете вашего дистрибутива или можете получить исходные тексты PCRE с сайта http://www.pcre.org и установить их вручную.
Для настройки поддержки PCRE в Postfix необходимо добавить -DHAS_PCRE и флаг препроцессора -I для каталога [...]

Проверка Postfix на поддержку проверок
Postfix по умолчанию поддерживает фильтрацию заголовков и тел сообщений, но т. к. он может использовать карты regexp и (или) PCRE,
вам нужно узнать, поддерживает ли Postfix оба типа регулярных выражений или же только regexp. Чтобы проверить, какие карты поддерживает ваша версия Postfix, выполните команду postconf -m – будут выведены все типы карт, [...]

Какие действия могут вызвать проверки?
Для каждого шаблона поиска вы можете определить только одно соответствующее действие. В настоящее время Postfix поддерживает следующие действия:
REJECT [необязательный текст...]
Отказывает сообщению в приеме. Необязательный текст будет отправлен клиенту, пытающемуся передать сообщение. Postfix также запишет этот текст в почтовый журнал.
$ telnet mail.example.com 25
220 mail.example.com ESMTP Postfix
HELO client.example.com
250-mail.example.com
MAIL FROM:<sender@example.com>
250 Ok
RCPT TO:<recipient@example.com>
250 Ok
DATA
354 End [...]

Когда Postfix применяет проверки?
Клиент передает сообщение после успешного завершения первоначального SMTP-диалога. То есть Postfix обрабатывает параметры *_checks после обработки параметров ограничений smtpd_*_restrictions.

Что особенного в этих параметрах?
Postfix 2.x обрабатывает тело сообщения как состоящее из n сегментов, при этом каждый сегмент помечен MIME-заголовком. Такая MIME-об-работка включена по умолчанию, но вы можете отменить ее, указав
disable_mime_input_processing = yes в своем файле main. cf.
Синтаксический анализатор MIME исследует каждую прочитанную строку, выясняя, к заголовку или к сегменту тела она относится. От ответа [...]

Применение проверок
к отдельным разделам сообщения
Postfix использует отдельный параметр конфигурации для каждого известного ему раздела сообщения. Приведем перечень параметров проверок (имейте в виду, что по умолчанию в файле main.cf они не включены).
header_checks
Эти проверки применяются к заголовку сообщения, т. е. ко всему от первой строки сообщения до первой пустой строки, включая заголовки, которые физически занимают несколько строк.
body_checks
Эти [...]

Как работают проверки?
Проверки просматривают сообщения, выполняя поиск заданных образцов. В случае совпадения какого-то элемента содержимого с образцом выполняется некоторое действие. Postfix может применять разные фильтры к разным разделам сообщения. В настоящее время Postfix поддерживает следующие разделы:
• Заголовки сообщений
• MIME-заголовки
• Тело сообщения, включая вложения
• Заголовки вложенных сообщений
Для создания набора проверок вы определяете отдельные шаблоны в отдельных картах, а затем назначаете [...]

Использование классов ограничений
В примере, рассматриваемом в данном разделе, ограничения на отправителей конверта накладываются с двух сторон. Во-первых, мы требуем, чтобы у сообщений, приходящих извне, адрес отправителя не относился к нашему домену, и во-вторых, чтобы сообщения от внутренних клиентов имели адрес отправителя, относящийся к нашему домену.
Идея заключается в том, чтобы Postfix сначала проверял, относится ли входящее [...]

Порядок введения ограничений
Борьба со спамом весьма затратна с точки зрения системных ресурсов. Рассмотрим пример того, как следует упорядочивать параметры, предотвращающие прием спама:
smtpd_recipient_restrictions = reject_non_fqdn_recipient reject_non_fqdn_sender reject_unknown_sender_domain reject_unknown_recipient_domain permit_mynetworks О (permit_sasl_authenticated) (pop-before-smtp) reject_unauth_destination
check_recipient_access hash:/etc/postfix/roleaccount_exceptions check_helo_access pcre:/etc/postfix/helo_checks 0 reject_non_fqdn_hostname reject_invalid_hostname
check_sender_mx_access cidr:/etc/postfix/bogus_mx © check_sender_access hash:/etc/postfix/rhsbl_sender_exceptions О ‘e]ect_rhsbl_sender dsn.rfc-ignorant.org ©
check_sender_access hash:/etc/postfix/common_spam_senderdomains 0 check_sender_access regexp:/etc/postfix/common_spam_senderdomain_keywords permit
Общая идея заключается в том, [...]

Выборочная проверка адресов отправителей
По мере возрастания нагрузки на ваш почтовый сервер процедура проверки адресов получателей, вероятнее всего, приведет к нехватке ресурсов. В этот момент следует перейти к выборочной проверке адресов отправителей.
Выборочная проверка адресов отправителей работает на основе карты обычно используемых спамерами доменов отправителей конвертов. Если домен отправителя входящего сообщения присутствует в карте, то Postfix проверяет [...]

Кэширование
По умолчанию Postfix хранит проверенные адреса отправителей в оперативной памяти. Когда вы перезагружаете параметры или перезапускаете Postfix, то теряете их, если только не будете использовать (что не обязательно) дополнительную базу данных для постоянного хранения адресов. Для того чтобы работать с базой данных, задайте путь кней в параметре address_verify_map (убедившись, что в выбранной файловой системе достаточно [...]

Отправитель пробного конверта
Когда Postfix формирует пробное сообщение для проверки отправителя, он сам должен представиться удаленному серверу – указать своего отправителя конверта. Вы можете задать этот адрес в параметре ad-
dress_verify_sender. Значение по умолчанию – postmaster@$myorigin.
При желании указать другого отправителя конверта для пробного сообщения добавьте параметр address_ve rify_sender в файл main.cf:
address_verify_sender = sender@example.com
Конечно, такой адрес отправителя должен [...]

Настройка проверки адреса отправителя
Для включения проверки адреса отправителя добавьте параметр re-
ject_unverified_sender в свой список ограничений smtpd_recipient_re-strictions, например:
smtpd_recipient_restrictions = ‘eject_non_fqdn_recipient ‘eject_non_fqdn_sender ‘eject_unknown_sender_domain ‘eject_unknown_recipient_domain permit_mynetworks reject_unauth_destination ‘eject_rbl_client relays.ordb.org
check_recipient_access hash:/etc/postfix/roleaccount_exceptions
reject_non_fqdn_hostname
reject_invalid_hostname
check_helo_access pcre:/etc/postfix/helo_checks check_sender_access hash:/etc/postfix/rhsbl_sender_exceptions ‘eject_rhsbl_sender dsn.rfc-ignorant.org reject_unverified_sender
permit
Кроме reject_unverified_sender существуют и другие параметры, которые можно добавить в ограничения. Однако параметры обладают разумными значениями по умолчанию, и служат они скорее для [...]

Проверка отправителя
Бриллиант в короне средств Postfix борьбы со спамом – это проверка адреса отправителя, в ходе которой проверяется, существует ли в домене отправителя адрес отправителя, и если такого отправителя не существует, то Postfix не принимает сообщение.
К сожалению, эта функциональность является весьма дорогостоящей, т. к. проверка занимает много времени и требует дополнительных системных ресурсов. Рассмотрим ее [...]

Настройка домена, в который адресована почта
Для локальных клиентов Postfix будет служить ретранслятором в том смысле, что он будет принимать почту для тех доменов, в которых он не является конечным или промежуточным сервером. Все, что вам нужно сделать в конфигурации с одним доменом, – это задать значение параметра mydestination.
Примечание
Устанавливая значение параметра mydestination, вы можете задать место [...]

Исключения для доменов отправителя из черных списков
Если вы хотите отклонять сообщения от почтовых серверов, которые не следуют правилам, но при этом вам необходимо поддерживать связь с некоторым доменом, который попадает под ограничения (так что почта из него была бы отклонена), можно создать список исключений. Для реализации исключений используйте параметр check_sender_ access и карту исключений.
Сначала создайте [...]

Проверка вручную на вхождение в черный список
Проверка домена на вхождение в RHSBL аналогична процедуре проверки IP-адреса, с тем лишь отличием, что не нужно менять порядок элементов. Просто добавьте имя сервера черных списков после имени домена, который вы хотите проверить, и выполните поиск в DNS.
Здесь проверка была проведена для домена, которого не оказалось в черном списке:
$ [...]

Отказ отправителям из доменов черных списков
В дополнение к запрещению почты от определенных IP-адресов вы можете блокировать сообщения тех отправителей, домены которых занесены в черные списки. Такие списки называются RHSBL (Right-Hand-Side Blacklist – черный список правых частей)). Настройка Postfix для использования RHSBL требует выполнения тех же операций, что и для DNSBL. В качестве примера в этом [...]