… 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