O DNS reverso é um bom método para promover IPs cinzentos de domínios confiáveis para branco?

4

Estou tentando configurar um servidor de e-mail usando o OpenBSD, OpenSMTPD, spamd e pf . O primeiro problema que encontrei é que muitos provedores grandes de webmail - como o Gmail - tentam fazer a entrega de um servidor diferente com um endereço IP diferente, dificultando a passagem da lista cinza para a lista branca. Escrevi um script que achei que poderia ajudar realizando uma solicitação PTR no conjunto de tuplas GRAY do IP e comparando o domínio resultante com uma lista mantida manualmente de domínios em que eu confio.

  • Primeiro, esta é uma abordagem razoável? Quais problemas posso encontrar?
  • Em segundo lugar, por que não o CINZA registros desaparecem de spamdb depois que eu os coloquei na lista de permissões via spamdb -a X.X.X.X e eles aparecem como um registro WHITE? Uma vez que eles estão na lista de permissões, deve ser para o IP inteiro e eu imagino que a tupla GRAY está obsoleta até esse ponto. Qual é o ciclo de vida típico dessas spamdb tuplas? Eu vi alguns desaparecerem, alguns duplicados (CINZAS depois BRANCOS), etc.
  • Em terceiro lugar, devo escrever esses IPs na lista de desbloqueio do meu script em um arquivo e, em seguida, carregar esse arquivo como uma tabela pf que transmite conexões desses domínios confiáveis diretamente para smtpd ? Em outras palavras, em vez de passar por spamd e colocar esses IPs na lista de permissões com spamdb -a que são adicionados à tabela <spamd-white> pf, eu deveria apenas ignorar spamdb , deixando-os greylisted e ir diretamente para uma lista branca whitelist? mesa.

Aqui está o rascunho do script que escrevi para ser executado periodicamente para colocar na lista de permissões os domínios confiáveis encontrados e na lista cinza:

#!/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
    
por rcampbell 15.11.2015 / 21:18

1 resposta

1

  • Depende ™:

    • Lembre-se de que os registros DNS PTR podem ser falsos - só porque você obtém .google.com como parte do PTR , não significa que seja o Google que controla o endereço IP em questão. Para ter certeza, você também pode querer fazer uma resolução antecipada antes de tomar qualquer ação (embora, para ser justo, o impacto no caso de greylisting seja muito limitado, já que qualquer pessoa capaz de modificar PTR provavelmente também será capaz de contornando com sucesso a sua greylisting em primeiro lugar).
    • O tratamento da entrada de internet de sh pode não ser a melhor abordagem.
    • Além disso, você gastará um pouco de tempo fazendo essas resoluções, algumas das quais podem expirar, portanto, certifique-se de não executar esse script com muita frequência, especialmente se outra cópia já estiver em execução.
  • Sinta-se à vontade para dar uma olhada no link . O código não parece ter sido escrito para ser muito legível, no entanto.

  • Acho que qualquer abordagem deve estar bem. Provavelmente será mais fácil usar apenas spamdb para manter essa lista de permissões automatizada, pois ela cuidará da manutenção, expiração e um pouco de estatísticas. No entanto, se você mantiver sua própria lista, terá o benefício adicional de fazer uma lista de permissões para toda a rede.

Além disso, se você quiser limitar isso apenas ao Google, Amazon e outros provedores que mantêm registros SPF corretos, considere que você pode seguir em frente, obtendo todos os seus endereços IP de uma só vez, mesmo através de meios automatizados (com a ajuda do SPF, por exemplo). Consulte o link . Você pode até mesmo usar uma biblioteca SPF existente para obter uma lista de todos esses endereços IP.

    
por 03.07.2016 / 17:37