sudo: Jack of all trades, master of some

Protege tus listas de distribución internas de Postfix con postfwd

Comentarios desactivados en Protege tus listas de distribución internas de Postfix con postfwd

Existen 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