Integración de Postfix con Cactus web

Introducción

Puesto la activación de las cuentas de correo es opcional dados los requisitos del sistema, tenemos que construir un mecanismo que rechace el correo hacia aquellos usuarios que no tengan configurado un buzón de correo de Cactus.

Planteamiento

Para este fin hemos colocado un campo booleano en la tabla de usuarios de Cactus que indica si un usuario tiene activo su buzón de Cactus.

Haremos que Postfix se conecte a esta base de datos a través de MySQL y busque los nombres de usuario en ella, aceptando correo sólo para aquellos que tengan este campo a True.

Creación del usuario de Postfix en MySQL

Nos logeamos como administradores en MySQL y creamos un usuario específico para Postfix. Le otorgamos permisos sólo para leer la tabla de usuarios.

mysql -u root -p cactus
create user postfix;
grant select on cactus.cactus_auth_cactususer to postfix identified by 'V52mOyCuspnu5';

Configuración

La variable local_recipient_maps de Postfix indica una tabla donde aparecen los usuarios que pueden recibir correo. Por defecto hace referencia a /etc/passwd y no está mencionada en el archivo de configuración.

Establecemos esta variable en /etc/postfix/main.cf.

local_recipient_maps = mysql:/etc/postfix/sql-users.cf

/etc/postfix/sql-users.cf contendrá una serie de variables que indican cómo conectarse a una base de datos MySQL y qué consulta hacer.

user = postfix
hosts = 127.0.0.1
password = V52mOyCuspnu5
dbname = cactus
query = SELECT username
        FROM cactus_auth_cactususer
        WHERE username = '%s' AND has_cactus_email = 1

Limitamos los permisos de este fichero por seguridad (nuevamente, Postfix se inicia como root, por lo que podrá leerlo de todos modos).

chown root:root sql-users.cf
chmod 600 sql-users.cf

Finalmente reiniciamos Postfix.

service postfix restart

Contenidos

Tema anterior

Configuración de blogs con Wordpress

Próximo tema

Gestión de usuarios

Esta página