Protege tus listas de distribución internas de Postfix con postfwd
Comentarios desactivados en Protege tus listas de distribución internas de Postfix con postfwdExisten disímiles formas de gestionar listas de distribución en un servidor de correo electrónico, en mi caso, utilizo grupos de LDAP. Lo mismo puede hacerse con grupos en Microsoft Active Directory o Samba 4. Otros utilizan mailman o similares que resuelven el problema sin tener que acudir a terceros.
postfwd está escrito en perl y combina un conjunto de reglas de Postfix muy similares a las que se utilizan en la mayoría de los cortafuegos. postfwd utiliza el protocolo de delegación de Postfix para controlar el acceso al sistema de correo antes de que el mensaje se acepte. Permite utilizar acciones como ‘reject’ o ‘dunno’ para una combinación de parámetros SMTP, como sender y recipient address, entre otros. Se publica bajo la licencia BSD y está disponible en los repositorios de distribuciones más populares.
Para integrar postfwd con Postfix debemos configurarlo como sigue en el archivo de configuración /etc/postfix/main.cf.
smtpd_sender_restrictions =
reject_sender_login_mismatch
check_policy_service inet:127.0.0.1:10040
permit_mynetworks
permit_sasl_authenticated
smtpd_recipient_restrictions =
check_policy_service inet:127.0.0.1:10040
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
smtpd_end_of_data_restrictions =
check_policy_service inet:127.0.0.1:10040
Es posible que existan otro grupo de restricciones en dependencia del entorno, sin embargo es muy importante colocar las líneas relacionadas con postfwd en el orden correcto.
El puerto que recomiendan en la documentación es 10040, si existe otro demonio corriendo en ese puerto, es posible utilizar otro.
A continuación debemos escribir el conjunto de reglas que controlará el acceso en el archivo de configuración /etc/postfwd.cf.
Es importante comentar que debemos decidir cuál es la política por defecto que tomará postfwd en nuestro sistema. Se pudiera adoptar la posición de denegar todo o aceptar todo, que por supuesto, esta decisión depende de muchos factores. En este caso se adoptará la política de permitir todo.
id=LIST_FOO_OK
action = OK
recipient == lista-foo@dominio.tld
sender == remitente@dominio.tld
sender =~ \@otrodominio\.tld$
sender =~ \@sub\.otrodominio\.tld$
id=LISTA_FOO_REJECT
action = REJECT Acceso denegado
recipient == lista-foo@dominio.tld
id=POLITICA_POR_DEFECTO
action = DUNNO
Una línea de configuración consiste en pares opcionales elemento=valor action=resultado.
Para identificar reglas en los archivos de registros es posible añadir un identificador único para cada una de estas utilizando id=identificador
En la configuración anterior se identificó la regla como LISTA_A_OK para especificar que es la que permite el envío y LISTA_FOO_REJECT para la que deniega el acceso. En la primera la acción es OK, y en la segunda REJECT, válidas para este ejemplo, sin embargo existen otras para reglas más complejas.
Si llega un mensaje con destinatario lista-foo@dominio.tld en el que el remitente es remitente@dominio.tld, o cualquier usuario en el dominio otrodominio.tld o subdominio sub.otrodominio.cu, entonces el mensaje es aceptado. Nótese el uso de expresiones regulares para hacer las reglas mucho más potentes. Finalmente cualquier otro mensaje enviado a este destinatario será rechazado por la siguiente regla.
Postfwd puede hacer mucho más que proteger listas de distribución internas, la potencia de sus reglas hace que se utilice para combatir spam y hacer más seguro el sistema de correo.
El objetivo de esta entrada no es más que presentar a postfwd a través de un ejemplo práctico y puntual para incentivar su uso y explotar todas sus características.
Referencias