Мне нужно понять, как postgrey отслеживает входящую почту. Я знаю концепцию того, как работает greylisting, но мне интересно узнать о фактическом методе. Greylisting подсчитывает количество раз, когда почтовый сервер успешно отправлял сообщение за определенный период времени, и если он достигает желаемого порогового значения, он становится известным почтовым хостом на X период времени.
Я это понимаю.
Но если определенное сообщение приходит в первый раз с неизвестного почтового хоста, как postgrey отслеживает это индивидуальное сообщение? То есть, когда оно возвращается с соответствующего сервера во второй раз, как postgrey узнает, что это было «отложенное» сообщение?
решение1
Подводя итоги поведения: проверка выполняется по IP-адресу+отправителю+получателю. Состояния соединения хранятся в базе данных Berkeley.
При появлении соединения:
- если он входит в определенный белый список, он принимается;
- если его нет в БД, он добавляется в БД и соединение отклоняется;
- если в БД:
- если это первая повторная попытка, она выходит за рамки retry_window и удаляется из БД;
- если он находится в определенном retry_window, соединение будет принято.
ОтСерый список для предотвращения спама
Триплет IP-адреса, отправителя и получателя теперь будет сохранен в базе данных postgrey как «известный отправитель», и последующие письма с того же адреса будут доставляться немедленно, без каких-либо задержек.
Поскольку большинство спамеров этого не делают — попробуйте отправить письмо еще раз — большинство спам-писем будут просто проигнорированы.
Откомментарии к источнику posgrey
выясняем, была ли последняя попытка неудачной, чтобы можно было добавить заголовок, сообщающий, сколько времени пришлось ждать.
....
отбрасываем сохраненный first-seed, если это первая повторная попытка и она находится за пределами retry_window.