Algumas vezes ajudo o pessoal de mensageria a arrumar algumas configurações de DNS ou procurar as causas de um anti-spam ter ou não bloqueado alguma mensagem,,,
Basicamente tudo começa com a análise do cabeçalho da mensagem e as configurações de DNS do remetente…
O processo em sí é bem simples, mas toma um tempo em ficar fazerndo as pesquisas de DNS como conectar em um servidor de DNS, ver se o domínio é valido, se tem SPF se tem MX, se o IP do MX é um A válido, etc. etc. etc….
resolvi diminuir um pouco esse trabalho e montei um script em Powershell para ajudar a fazer uma parte dessas consultas…
ele não está 100%,,,, ainda apresenta uma ou outra falha dependendo do domínio,,, mas já ajuda em uns 90% dos casos…
#domínio que você quer consultar $procurar = "leka.com.br" #servidor de DNS que utilizaremos para consulta do DNS $DNSserver = "4.2.2.2" #localiza os registros de MX do domínio $MXs = Resolve-DnsName $procurar -Type MX -Server $DNSserver | Select-object -ExpandProperty NameExchange #localiza o registro TXT para ajudar a ver o SPF $TXT = Resolve-DnsName $procurar -Type TXT -Server $DNSserver | Select-object -ExpandProperty Strings Write-Host Consultas utilizando = $DNSserver Write-Host $procurar Write-Host SPF = $TXT foreach($MX in $MXs) { #Verifica se o registro de MX possui uma entrada A $IPA = Resolve-DnsName $MX -Type A -Server $DNSserver #| Select-Object -ExpandProperty IP4Address foreach($IP in $IPA.IP4Address) { #Verifica se o IP da entrada A possui um reverso tipo A $PTR = Resolve-DnsName $IP -Type PTR -Server $DNSserver | Select-Object -ExpandProperty NameHost #Verifica se o A do reverso é valido If(Resolve-DnsName "$PTR" -type A -Server $DNSserver ) { $ok = $IPA.Name, $IP, $PTR $ok | Select-Object @{N="MX";E={$IPA.Name}}, @{N="IP";E={$IP}}, @{N="Reverso";E={$PTR}}, @{N="Status";E={"A Valido"}} -Unique } else { $falha = $IPA.Name, $IP, $PTR $ok | Select-Object @{N="MX";E={$IPA.Name}}, @{N="IP";E={$IP}}, @{N="Reverso";E={$PTR}}, @{N="Status";E={"A Invalido"}} -Unique } } }
A idéia é bem simples:
- coloca-se o domínio que vamos pesquisar e um servidor de DNS que será usado para executar a pesquisa das informações..
- verifico se existe MX para esse domínio
- localizo a entrada TXT e você vê as configurações de SPF, não sabe o que é SPF ? leia um pouco aqui.
- Verifico que o MX tem um registro A
- Verifico se IP do registro A tem um PTR (DNS reverso)
- testo se o PTR aponta para um A válido.
Ainda estou trabalhando para melhorar o tratamento de erro em algumas partes do script, mas só isso já ajuda a identificar alguns problemas…
Para uma próxima versão espero conseguir fazer testes de relay e fazer uma análise entre os registros de SPF e os IP´s informados de MX para saber se são validos… mas isso está sendo um pouco mais complicado….