Cómo identificar el MTA instalado en un servidor

En Tutoriales y Guías por

Cuando llega un servidor a nuestras manos no es habitual que el cliente nos diga que programas se han instalado y configurado, tendremos que averiguarlo nosotros mismos. Hoy nos centraremos en identificar el MTA instalado en el servidor. Cuando digo MTA instalado, me refiero al MTA que está activo y funcionando en el sistema.

Cómo identificar el MTA instalado en un servidor

Antes de continuar, aclarar que este tutorial está dirigido entornos Linux (aunque alguno de los métodos es aplicable en Windows) y mostraremos diferentes métodos para conseguir nuestro objetivo. Algunos de estos métodos requieren acceso a la shell del sistema y otros no.

Entre usuarios poco experimentados es muy habitual usar scripts que instalan un servidor web automáticamente y que incluso instalan y configuran el servidor de correo de forma automática. Más tarde, si hay que resolver alguna incidencia en ese servidor, como primer paso nos tocará descubrir el software instalado. Así que sin más rodeos vamos a ver cómo podemos averiguar el MTA del sistema.

¿Qué es un MTA?

Si has llegado hasta aquí doy por hecho que sabes lo que es un MTA, pero para estar seguros haré una pequeña introducción. La palabra MTA viene del inglés «Mail Transfer Agent» y no es más que un software que nos permite configurar un servidor de correo electrónico.

Un MTA implementa tanto las funciones de envío de correo como las de recepción, aunque después podemos configurarlo para que desempeñe una o ambas funciones. Los MTA emplean por defecto el puerto 25 TCP para el protocolo SMTP (Simple Mail Transfer Protocol), que es el más usado .

Existen diferentes programas diseñados para funcionar como un MTA, pero algunos de los más conocidos son: postfix, sendmail, exim, qmail, Microsoft Exchange Server, etc.

Cómo identificar el MTA instalado en un servidor Linux.

Como ya dijimos al principio, vamos a mostrar diferentes métodos y empezaremos por los más rápidos empleando la terminal del sistema.

Buscando pistas del MTA en el archivo /etc/passwd.

Una forma sencilla que nos puede dar pistas sobre los MTA instalados es usar el comando cat /etc/passwd para leer el contenido de este archivo.

Por lo general los servidores de correo mantienen un usuario propio y su carpeta de trabajo está asociada con la ruta /var/spool/, donde se encuentran los programas que necesitan trabajar con colas, como es el caso de los servidores de correo. Vemos por ejemplo el contenido del archivo /etc/passwd donde podemos identificar Postfix como MTA:

nginx:x:111:117:nginx user,,,:/nonexistent:/bin/false
mysql:x:112:118:MySQL Server,,,:/var/lib/mysql:/bin/false
postfix:x:113:120::/var/spool/postfix:/bin/false

Este método no es infalible, pero nos puede dar pistas. Para estar seguros podemos recurrir a los siguientes métodos.

Usando el comando lsof.

La primera opción y la más sencilla es usar el comando lsof para averiguar el PID del proceso que está a la escucha en el puerto 25. Ejecutamos el comando sudo lsof -i :25 y nos mostrará en pantalla algo parecido a:

zeo@zeohost:~$ sudo lsof -i :25
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
master  1452 root   12u  IPv4  17410      0t0  TCP localhost:smtp (LISTEN)
master  1452 root   13u  IPv6  17411      0t0  TCP localhost:smtp (LISTEN)

A veces, en la columna COMMAND ya nos aparece el nombre del MTA, pero en este caso no es así, por lo que tendremos que hacer una segunda comprobación con el PID.
Vemos que el PID en nuestro ejemplo es 1452. Ahora ejecutamos el comando ps p 1452 y veremos en pantalla algo como:

zeo@zeohost:~$ ps p 1452
  PID TTY      STAT   TIME COMMAND
 1452 ?        Ss     0:02 /usr/lib/postfix/sbin/master

Si prestamos un poco de atención, podemos ver que el MTA en funcionamiento en el sistema es Postfix.

Usando telnet para conectarnos al host a través del puerto 25.

Una segunda opción es usar telnet y conectarnos al host usando el puerto 25. Para esto ejecutamos el comando telnet localhost 25 y cuando se establezca la conexión, generalmente aparece un mensaje donde se muestra el nombre del MTA como podemos ver a continuación:

zeo@zeohost:~$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 vozidea.com ESMTP Postfix (Debian)
quit
221 2.0.0 Bye
Connection closed by foreign host.

Para cerrar la conexión hay que escribir la orden quit y pulsar Entrar.

Identificar el servidor de correo usado analizando las cabeceras de los emails.

Otra forma de averiguar el servidor de correo que se está usando es analizar las cabeceras de los correos electrónicos. Para esto, simplemente necesitamos una cuenta de correo Gmail y tener la posibilidad de recibir un correo de nuestro servidor en esta cuenta Gmail.

Para enviar este email podemos recurrir a las siguientes opciones:

  • Usar el sistema de registro o de recuperación de contraseña de algún script que tengamos instalado en el servidor (WordPress, phpBB, Drupal, etc).
  • Enviar el email desde la consola con el comando: echo "Hola, soy el cuerpo del correo" | mail -s "Email de prueba" usuario@gmail.com
  • Podríamos crear un pequeño script en PHP para enviar un email de prueba.

Una vez hemos recibido el email en nuestra cuenta de Gmail, lo abrimos y accedemos a la opción «Mostrar original», accesible desde el menú desplegable que se encuentra al lado de la hora en que fue recibido el correo.

mostrar original gmail

Ahora en el mensaje original podemos examinar las cabeceras, pero la que nos interesa es la que empieza por Received: by ... ya que ahí podremos identificar el MTA tal y como se ve en el siguiente ejemplo:

Received: by ns540796.ip-144-211-11.net (Postfix, from userid 10004) id D073A431BC; Sat,  8 Jul 2017 06:58:08 -0400 (EDT)

Seguramente existan más métodos para identificar el MTA instalado, pero con los métodos mostrados a lo largo de este tutorial debería ser suficiente. Si conoces algún otro método interesante, no dudes en comentarlo.