Powershell_> Comprobando si estamos en DNSBL

En alguna ocasión, seguro que más de uno se ha encontrado con que algún cliente tiene problemas con el correo, véase el caso típico, le he enviado un mail a XXXXX y me dice que no lo recibe y tras consultarlo con sus informáticos le dicen que estamos en una lista negra, vaya…

No voy a explicar que es DNSBL, ni RBL, ni nada de esto, para ello hay mil páginas que lo explican (hello tito google  XD), lo que os voy a explicar es como prepararnos un script para que dada una ipv4 nos diga si estamos en una lista negra.

Al final del post os dejaré una copia del script, para que no tengáis que escribir mucho. Aquí os dejo un pantallazo de un listado de servidores donde consultaremos si la ip está en sus listas, archivo servidoresDNSBL.txt

Y este va a ser nuestro script:

Veréis que este script hemos añadido varias cosas nuevas, entre ellas, le hemos agregado ayuda, es decir, hemos definido algunas opciones para que cuando hagamos un Get-Help Test-DNSBLIpv4.ps1 nos aparezca una breve synopsis, descripción, ejemplo y link. Líneas de la 5 a la 19.

También hemos agregado la aceptación de parámetros, y además la validamos, y la hacemos obligatoria, veamos que pasa si ejecutamos el script tal cual:

Biennnnn, el ValidatePattern es para que sólo acepte valores incluidos en esa expresión regular, es decir, direcciones ip versión 4, Línea 25.

[ValidatePattern("^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$")]

Ahora viene un tip muy chulo, y ademas de una sola línea, $IPalReves almacenará el resultado de:

1.- El valor de la ip le quita el “.”
2.- Lo almacena en un array ordenado al revés.
3.- y une cada valor del array con un .

Vamos, en nuestro ejemplo, la ip 1.76.98.103 la dejará como 103.98.76.1 esto es necesario ya que más adelante realizamos una consulta dns  y dichas consulta se deben realizar en este formato leer el siguiente articulo de la WIKIPEDIA EN INGLES    también os recomiendo que miréis en el apartado de referencias.

Ahora sólo nos queda leer una lista de servidores DNSBL para poder realizar la consulta, uniendo la $IPalReves con la dirección dns del listado de servidores y para cada servidor comprobar si podemos obtener por ejemplo el Host Addresses, si el resultado es verdadero significa que nuestra ip está en la lista de DNSBL concretas, y en caso de que no aparezca significar que no tenemos de que preocuparnos, ya que al menos en los servidores de este listado no aparecemos.

 En este código vemos que hemos introducido una nueva estructura llamada try/catch sirve para el control de errores, mientras el try funciona no se ejecuta el catch, aquí tenéis la documentación de MS sobre esta estructura.
Una cosilla más….  en el archivo servidoresDNSBL.txt he creado una buena cantidad de servidores de consulta, si queréis añadir más sois libres de hacerlo XD.
Este es el resultado de la ejecucion del comando.
Bueno, en este script de hoy, se va complicando la cosa, hemos utilizado el como documentar el script para la ayuda, hemos aprendido a obligar a introducir una variable, a validarla, hemos tocado array, splitear y join, además hemos utilizado la estructura try/catch … espero que os haya gustado.

6 opiniones en “Powershell_> Comprobando si estamos en DNSBL”

    1. Facil, x web accedes a un formulario comprobando uno o varios servidores, desde el script consultas varios servidores de una tacada, ademas te personalizas directamente tu listado de servidores a comprobar…

  1. Hola!
    Cuando hago click en descargar los archivos, el drive me lleva a descargar los de otro post , exactamente al de usb-blocker.

    Puedes corregir el link ?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *