qpsmptd y los alias de correo …

… que he tenido que poner en marcha algo más rápido de lo que tenía pensado.

Cuando hablé del plugin aliases de Peter Johannes Holzer dije que lo había descartado porque no me gustaba cómo se definían los alias ni la fase de expansión. En realidad es que quería hacerlo muy a mi manera (y lo haré, eso es seguro) y puse aquello como excusa. Desde entonces he estado dudando entre:

  1. Gestionar los alias en qpsmtpd como el frontal que es.
  2. Gestionar los alias en exim4 como distribuidor real del correo.
  3. Gestionarlos en ambos sitios.

No cabe duda de que la última opción es la más compleja dado que las bases de datos son diferentes y me echaba encima la tarea de mantenerlas sincronizadas. La primera opción parecía la más lógica dado que el programa es el encargado de frenar los intentos de abuso del servidor de correo. Hacerlo en exim4, cuando ya no tiene cómo defenderse, significa almacenar los mensajes de rechazo para no poder enviarlos jamás: las direcciones de los spammers no suelen existir.

Así que he vuelto a echarle un vistazo al complemento. Lo he descargado, instalado en directorios locales y configurado.

/usr/local/share/qpsmtpd/plugins/
└── aliases
    ├── check
    └── rewrite

1 directory, 2 files
root@spin:/etc/qpsmtpd# cat plugin_dirs 
/usr/local/share/qpsmtpd/plugins
/usr/share/qpsmtpd/plugins
root@spin:/etc/qpsmtpd# egrep -C 5 aliases plugins 
# quit_fortune

auth/auth_ldap_bind

#       Comprobación de direcciones locales reescritura
aliases/check
aliases/rewrite

# rcpt_ok -- checks /etc/qpsmtpd/me and /etc/qpsmtpd/rcpthosts to see if the
# recipient hostname is intended to be accepted here.  This should be the last
# plugin before the queue plugin(s), and should not be disabled unless you
# know what you're doing.

El único pero es que en la documentación no aparece la localización del archivo de alias de correo. He tenido que echar un vistazo al fuente para entender que, a menos que se mencione explícitamente el archivo, busca en los siguientes sitios:

  1. $configdir/aliases
  2. $configdir/aliases.d/*

Vale, una vez que sé dónde va a buscarlos crearé los archivos necesarios para que se reciba el correo en todas las cuentas de todos los dominios.

El archivo de alias

Es un archivo de texto plano cuyas líneas están formadas por pares de alias y patrones de alias y listas de expansión separadas por el carácter dos puntos. Los elementos de las listas están separadas por comas. Admite comentarios con el carácter almohadilla (#) y los espacios en blanco no son significativos.

El código no es precisamente claro y, sinceramente, el formato de patrones, alias y expansión no funciona como dice la documentación. Es frustrante porque he tenido que indicar cosas tan estúpidas como que victor@taquiones.net corresponde a victor@taquiones.net porque si no no reconoce el usuario local y se acabó.

Al final tendré que ponerme las pilas con mi sistema porque éste, llevando el correo de cuatro dominios -aunque en tres de ellos las direcciones sean administrativas- empieza a ser una locura.