qpsmtpd como frontal para mi correo …

12 Abr

… con muchas ideas para realizar si funciona correctamente.

Comenzaré explicando el por qué me he decidido a utilizar un frontal como qpsmtpd para dar servicio SMTP si con el programa exim4 que estoy empleando parece ser suficiente. La razón fundamental es que el envío de correo, que es algo más que solucionado desde hace tiempo, y la identificación del spam juntos no forman buena mezcla.

exim4 puede lidiar con ello, por supuesto, pero entre que nunca he llegado a cogerle el punto a su configuración y que los mecanismos antispam empiezan a necesitar medidas desesperadas, su configuración ha crecido de forma excesiva y se ha vuelto para mi poco manejable.

Encontré en el programa qpsmtpd una buena base para separar las dos tareas y darme posibilidades futuras:

  • Sus funciones son muy claras: aceptar conexiones SMTP externas y envíar correo para que otros lo despachen.
  • Está escrito en Perl y puede ampliarse si se conoce el lenguaje.
  • Incluye un buen número de controles de acceso ya de base.

Así que lo he instalado en mi dominio principal (taquiones.net) y le he dado una oportunidad que no me ha defraudado, exceptuando el complemento tls para las conexiones seguras de usuarios con detalles como los que cuento más abajo.

qpsmptd tras la instalación está listo para aceptar correo y reenviarlo al servidor local exim4 que debemos haber desviado para que sólo acepte conexiones locales (127.0.0.1).

La configuración es simple: emplea un archivo llamado

/etc/qpsmtpd/plugins

donde se definen los complementos que tiene que cargar y permite en cada línea indicar los posibles parámetros. Algunos complementos hacen uso de esta característica y otros además (ó unicamente) leen archivos contenidos en el directorio de configuración.

Dado que los complementos están escritos como módulos Perl para leer su documentación (si existe) se puede emplear la siguiente construcción

$ perldoc /usr/share/qpsmtpd/plugins/PLUGIN

Características

Conexiones seguras (tls)

Para activar conexiones seguras vía TLS se tiene que activar este complemento indicando dónde están los certificados digitales:

tls /etc/qpsmtpd/ssl/server.crt /etc/qpsmtpd/ssl/private.key /etc/qpsmtpd/ssl/ca.crt

Ojo que si no tiene acceso a dichos archivos (no existen o no hay permisos para ello) es díficil averigüar el por qué. Una forma de saber si lo hemos hecho bien es realizar una conexión normal y saludarle:

victor@sarajevo:~$ telnet taquiones.net smtp
Trying 178.62.25.73...
Connected to taquiones.net.
Escape character is '^]'.
220 spin.taquiones.net ESMTP qpsmtpd 0.84 ready; send us your mail, but not your spam.
ehlo sarejevo
250-spin.taquiones.net Hi 240.red-79-148-243.staticip.rima-tde.net [79.148.243.240]
250-PIPELINING
250-8BITMIME
250-STARTTLS
250 AUTH PLAIN LOGIN
quit
221 spin.taquiones.net closing connection. Have a wonderful day.
Connection closed by foreign host.
victor@sarajevo:~$ 

Si no hay listada la línea resaltada (STARTTLS) no está funcionando.

Usuarios autentificados con LDAP

Para ello tenemos que activar el complemento auth/auth_ldap_bind (el primer auth/ es porque está en un subdirectorio) incluyendo la línea en el archivo de configuración e indicarle dónde buscar. Aunque acepta parámetros me parece más cómodo usar el archivo

/etc/qpsmtpd/ldap

con un contenido tan simple como el siguiente:

ldap_base ou=users,dc=taquiones,dc=net

Se pueden indicar más cosas pero la forma más rápida de ponerlo en marcha es esa. Le indica que conecte con el servidor local LDAP e intente hacer una conexión con los parámetros que ha recibido del usuario. Si funciona el usuario está acreditado para enviar correo y si no pues no.

Registro de eventos

El complemento logging está activo de forma predeterminada. Si echamos un vistazo al archivo 

/etc/qpsmtpd/logging

vemos que está cargando el complemento especializado logging/file para registrar sobre un archivo

logging/file loglevel LOGDEBUG /var/log/qpsmtpd/qpsmtpd.log

El nivel de registro se indica con un simple valor numérico en el archivo

/etc/qpsmtpd/loglevel

.

Enlaces y referencias