Является ли обратный 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 не может быть лучшим подходом.
    • Кроме того, вы потратите довольно много времени на выполнение этих разрешений, некоторые из которых могут быть приостановлены, поэтому вы должны следить за тем, чтобы этот скрипт не запускался слишком часто, особенно если его копия уже запущена.
  • Не стесняйтесь взглянуть на 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-адресов.

Другие вопросы по тегам