Postfix Postgrey

postgreyPostgrey — это реализация технологии серого списка для SMTP сервера Postfix. Суть технологии состоит в том, что SMTP сервер принимает входящее письмо только со второго раза с конкретного адреса электронной почты. При первом соединении, принимающий сервер выдаст временную ошибку, что заставит отправляющий сервер поставить письмо к себе в очередь и повторить попытку пересылки письма позже. Обычно серверы, используемые для спам рассылок, отправляют почту единожды. Если письмо не было доставлено с первого раза, повторная пересылка не выполняется.

Рассмотрим процесс установки и настройки пакета postgrey на почтовом сервере, сконфигурированном в статье Postfix Dovecot LDAP. Для установки postgrey нужно выполнить команду

# apt install postgrey

Сразу после установки, postgrey запустится как служба и будет ожидать соединения на петлевом интерфейсе, на 10023 порте. Укажем, как Postfix должен подключаться к postgrey. Для этого добавим в main.cf следующую строку

# nano /etc/postfix/main.cf
. . .
smtpd_relay_restrictions =
 permit_mynetworks
 permit_sasl_authenticated
 defer_unauth_destination
 check_policy_service inet:127.0.0.1:10023
 check_policy_service unix:private/policyd-spf
. . .

Строка «check_policy_service inet:127.0.0.1:10023» должна идти после ограничения defer_unauth_destination. Чтобы изменения вступили в силу, нужно перезапустит службу Postfix

# postfix reload

Теперь при первой попытке переслать письмо с конкретного адреса электронной почты, отправляющий сервер получит ошибку

Recipient address rejected: Greylisted, see http://postgrey.schweikert.ch/help/4skill.ru.html;

По умолчанию между первой и второй попыткой пересылки почты должно пройти не менее 5 минут. Через 5 минут Postfix исправно примет сообщение и добавит в его заголовок строку, с указанием времени задержки пересылки, по причине применения серого списка.

X-Greylist: delayed 569 seconds by postgrey-1.35 at mail; Mon, 20 Nov 2017 19:41:29 MSK

Также адрес электронной почты отправителя будет добавлен в белый список и все последующие пересылки с этого адреса будут проходить в штатном режиме. Если со времени последней пересылки письма, прошло более 35 дней, то электронный адрес отправителя удалится из белого списка и процедура проверки серого списка запустится заново.

Рассмотренные выше временные параметры проверки описаны в man pages для postgrey, для их просмотра нужно выполнить команду

# man postgrey

Переопределенные параметры указываются в файле /etc/default/postgrey

# nano /etc/default/postgrey
. . .
POSTGREY_OPTS="--inet=10023 --delay=60 --auto-whitelist-clients=1"
. . .

В данном примере переопределен минимальный временной предел между первой и второй попыткой пересылки с 5 минут (300 секунд, значение по умолчанию) на 1 минуту (60 секунд), а также параметр auto-whitelist-clients со значения 5 (значение по умолчанию) на 1. Если пересылающий сервер осуществит указанное в значении параметра auto-whitelist-clients число успешных пересылок, с промежутком не менее чем в 1 час, то адрес пересылающего сервера добавится в белый список и любая дальнейшая пересылка с этого сервера минует проверку серого списка. Для применения изменений нужно перезапутисть службу postgrey

# service postgrey restart

Добавить адрес пересылающего сервера в белый список можно вручную. Для этого используется файл /etc/postgrey/whitelist_clients. По умолчанию он содержит в себе список проверенных SMTP серверов. Данный файл поддерживает записи в формате доменного имени, IP адреса, CIDR и регулярного выражения. Помимо файла whitelist_clients каталог /etc/postgrey содержит в себе файл whitelist_recipients. В нем указываются адреса получателей, почта для которых не должна подвергаться проверке серого списка.

В состав пакета postgrey входит утилита postgreyreport. Postgreyreport открывает для чтения базу /var/lib/postgrey/postgrey.db и считывает на входе данные из почтового лога /var/log/mail.log.
Далее происходит сравнение временных отметок адресатов(триплетов), к которым применялся серый список. Если разница между первой и последней временной отметкой меньше, чем значение параметра —delay=N, то проверка серого списка считается не пройденной.

# cat /var/log/mail.log | postgreyreport --nosingle_line --check_sender=mx,a --separate_by_subnet=":==================\n"
:==================
host.santarosatechnologies.com                                                104.131.128.150
                                  3ff7a55@yandex.kz                           alert@4skill.ru
:==================
mail.iconasters.ru                                                             193.105.174.88
   MX                            info@iconasters.ru                           alert@4skill.ru

В данном примере видно, что адрес отправителя 3ff7a55@yandex.kz не прошел проверку серого списка. Пересылка отброшенного письма осуществлялась с сервера host.santarosatechnologies.com с IP адресом 104.131.128.150. Сервер host.santarosatechnologies.com не имеет MX записи в DNS. Подробную информацию о postgreyreport можно получить из man pages, набрав команду

# man postgreyreport

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

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