El funcionamiento de un servidor de correo electrónico depende en gran medida de la correcta configuración de sus servicios asociados: Postfix, Dovecot, TLS/SSL y los mecanismos de autenticación. Sin embargo, incluso con configuraciones sólidas, los errores y accesos indebidos son inevitables. Ante este panorama, el análisis de los archivos de registro del sistema —en particular maillog— se convierte en una práctica esencial para la administración segura y eficiente de la mensajería.
El archivo /var/log/maillog concentra la trazabilidad de los procesos relacionados con el envío, recepción y entrega de correos electrónicos. Allí se registran tanto las actividades legítimas como los intentos fallidos de autenticación, errores de comunicación y rechazos de mensajes. La observación en tiempo real, por ejemplo con el comando citado arriba, permite al administrador detectar de inmediato eventos críticos.
Cada palabra clave buscada refleja un tipo de problema recurrente: unknow
puede estar vinculado a hosts
desconocidos, rejected
señala correos rechazados por políticas de filtrado, relay access denied
suele indicar fallas en la configuración de relay o intentos de uso indebido del servidor,
authentication failed
advierte sobre contraseñas incorrectas o ataques de fuerza bruta, mientras que
SSL_accept error
remite a fallas en el establecimiento de conexiones seguras.
No obstante, el monitoreo en tiempo real, aunque útil para la detección rápida, no siempre es suficiente. Para análisis posteriores resulta más conveniente la extracción histórica de estos eventos en archivos específicos, lo que permite documentar la evolución de la seguridad del sistema, detectar patrones de abuso y justificar ajustes en las políticas de autenticación, cifrado o filtrado de correo.
Comandos simples como tail
, grep
y la redirección de salida en Linux,
aplicados a los registros de correo, representan una poderosa estrategia para asegurar la operación de un servidor
de mensajería. A través de ellos, el administrador convierte el ruido de miles de líneas de log en información valiosa,
capaz de guiar decisiones técnicas y reforzar la seguridad institucional frente a amenazas permanentes.
Cuando procesas los registros (/var/log/maillog) con este script, se busca las direcciones IP que aparecen entre corchetes ([ ]) en cada línea.
El resultado final que se imprime es un conjunto de comandos tipo:
iptables -A INPUT -s 203.0.113.45 -j DROP
iptables -A INPUT -s 198.51.100.22 -j DROP
iptables -A INPUT -s 192.0.2.89 -j DROP
Explicación de cada parte del comando
iptables
Herramienta de Linux para configurar reglas del firewall a nivel de kernel (netfilter).
-A INPUT
Significa que se va a añadir (-A, de append) una regla en la cadena INPUT.
👉 La cadena INPUT controla el tráfico entrante al servidor.
-s 203.0.113.45
Indica la IP de origen a la cual se aplicará la regla. En este caso, esa IP quedó registrada en los logs como generadora de errores (rechazos, intentos de relay, fallas de autenticación, etc.).
-j DROP
La acción a ejecutar es DROP (descartar).
👉 El paquete se elimina silenciosamente sin enviar respuesta al origen (más fuerte que REJECT, porque no da información de vuelta).
Obten el contenido de :
tail -f /var/log/maillog | grep -E "unknow|rejected|relay access denied|authentication failed|SSL_accept error"
o el contenido de:
cat /var/log/maillog | grep -E "unknow|rejected|relay access denied|authentication failed|SSL_accept error" > /path/maillog-fecha.txt
e ingresalo en la caja de texto para obtener las reglas iptables