Является ли обратный DNS хорошим методом для продвижения серых IP-адресов из доверенных доменов в белые?
Я пытаюсь настроить почтовый сервер, используя OpenBSD, OpenSMTPD, spamd
, а также pf
, Первая проблема, с которой я столкнулся, заключается в том, что многие крупные провайдеры веб-почты, такие как Gmail, будут повторять доставку с другого сервера с другим IP-адресом, что затрудняет им перемещение и передает серый список в белый список. Я написал скрипт, который, как мне показалось, мог бы помочь, выполнив запрос PTR для IP-адресов серых кортежей и сравнив полученный домен с поддерживаемым вручную списком доменов, которым я доверяю.
- Во-первых, это разумный подход? С какими проблемами я могу столкнуться?
- Во-вторых, почему серые записи не исчезают из
spamdb
после того, как я внес их в белый списокspamdb -a X.X.X.X
а потом они появляются как БЕЛАЯ пластинка? После того, как они занесены в белый список, они должны быть для всего IP, и я думаю, что кортеж GREY к этому моменту устарел. Каков типичный жизненный цикл этихspamdb
кортежи? Я видел, как некоторые исчезают, некоторые дублируются (серый, белый) и т. Д. - В-третьих, я должен вместо этого записывать эти белые IP-адреса из моего скрипта в файл, а затем загружать этот файл как
pf
таблица, которая передает соединения из этих доверенных доменов напрямуюsmtpd
? Другими словами, вместо того, чтобы пройтиspamd
и внесение в белый список этих IP-адресов сspamdb -a
которые затем добавляются к<spamd-white>
пф таблица, я должен просто обойтиspamdb
оставив их в сером списке и перейдите непосредственно к некоторому белому списку.
Вот черновой сценарий, который я написал для периодического запуска для автоматического добавления доверенных доменов в белый список:
#!/bin/sh
set -A whitelist \
amazon.com \
google.com
spamdb | while read line
do
IFS="|"
set -A fields $line
status=${fields[0]}
if [[ $status = "GREY" ]]
then
ip=${fields[1]}
ptr=`host ${ip}`
IFS="."
set -A tokens $ptr
size=${#tokens[*]}
domain="${tokens[size-2]}.${tokens[size-1]}"
found=false
IFS=" "
for whitelisted in ${whitelist[@]}
do
if [[ $domain = $whitelisted ]]
then
found=true
fi
done
if (($found))
then
echo "+ $ip ($domain) has been whitelisted"
spamdb -a "$ip"
else
echo "- $ip ($domain) is unrecognized"
fi
fi
done
exit 0
1 ответ
Это зависит от ™:
- Имейте в виду, что DNS
PTR
записи могут быть ложными - только потому, что вы получаете.google.com
как частьPTR
, не означает, что именно Google контролирует данный IP-адрес. Чтобы быть уверенным, вы также можете сделать предварительное решение, прежде чем предпринимать какие-либо действия (хотя, если честно, влияние в случае с серым списком будет очень ограниченным, так как любой, способный изменитьPTR
вероятно, будет также в состоянии успешно обойти ваш серый список в первую очередь). - Обработка интернет-ввода от
sh
не может быть лучшим подходом. - Кроме того, вы потратите довольно много времени на выполнение этих разрешений, некоторые из которых могут быть приостановлены, поэтому вы должны следить за тем, чтобы этот скрипт не запускался слишком часто, особенно если его копия уже запущена.
- Имейте в виду, что DNS
Не стесняйтесь взглянуть на http://BXR.SU/OpenBSD/usr.sbin/spamdb/spamdb.c#dbupdate. Код, похоже, не был написан, чтобы быть слишком читабельным, хотя.
Я думаю, что любой подход должен быть в порядке. Наверное, будет проще использовать
spamdb
поддерживать этот автоматический белый список, так как он позаботится об обслуживании, истечении срока и немного статистики. Однако, если вы поддерживаете свой собственный список, вы получаете дополнительное преимущество создания белого списка для всей сети.
Кроме того, если вы хотите, чтобы это ограничивалось только Google, Amazon и другими провайдерами, которые ведут правильные записи SPF, учтите, что вы можете пойти прямо вперед, получив все их IP-адреса сразу, даже с помощью автоматических средств (с помощью SPF, например). См. https://support.google.com/a/answer/60764. Скорее всего, вы даже можете использовать существующую библиотеку SPF, чтобы получить список всех этих IP-адресов.