web-dev-qa-db-ja.com

逆引きDNSは、信頼できるドメインから白に灰色のIPを昇格させるための良い方法ですか?

OpenBSD、OpenSMTPD、spamd、およびpfを使用してメールサーバーをセットアップしようとしています。私が遭遇した最初の問題は、Gmailのような多くの大規模なウェブメールプロバイダーが、異なるIPアドレスを持つ異なるサーバーからの配信を再試行し、グレーリストをホワイトリストに渡すのを困難にすることです。 GRAYタプルのIPでPTRリクエストを実行し、結果のドメインを手動で管理されている信頼できるドメインのリストと比較することで役立つと思われるスクリプトを作成しました。

  • まず、これは合理的なアプローチですか?どのような問題が発生する可能性がありますか?
  • 次に、GRAYレコードをspamdb -a X.X.X.Xでホワイトリストに登録した後、spamdbから消えて、WHITEレコードとして表示されないのはなぜですか。それらがホワイトリストに登録されると、それはIP全体に適用されるはずであり、その時点でGRAYタプルは廃止されていると思います。これらのspamdbタプルの典型的なライフサイクルは何ですか?いくつかが消えたり、いくつかが複製されたり(GREY、WHITE)などが見られました。
  • 第3に、代わりに、これらのホワイトリストに登録されたIPをスクリプトからファイルに書き込み、そのファイルをpfテーブルとしてロードして、これらの信頼できるドメインからの接続を直接smtpdに渡す必要がありますか?つまり、spamdを通過してこれらのIPをspamdb -aでホワイトリストに登録し、それを<spamd-white> pfテーブルに追加するのではなく、spamdbをバイパスしてそのままにします。それらはグレーリストに登録されており、いくつかのpfホワイトリストテーブルに直接移動します。

定期的に実行して、検出されグレーリストに登録された信頼済みドメインを自動的にホワイトリストに登録するために作成したドラフトスクリプトを次に示します。

#!/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
4
rcampbell
  • それは異なります™:

    • DNS PTRレコードがfalseになる可能性があることに注意してください-PTRの一部として.google.comを取得したからといって、でIPアドレスを制御しているのがGoogleであるとは限りません。質問。確かに、アクションを実行する前に前方解決を行うこともできます(ただし、公平を期すために、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アドレスのリストを取得できます。

2
cnst