jueves, 26 de enero de 2012

evitar remplazo de dominio

Resulta que SASL no es tan bueno nada. Con postfix en estado natural podemos autenticarnos con un usuario y mandar con otro. Pregunte en la lista de correo local si había una solución  pero acabe respondiéndome yo mismo. Para que tenga una idea de lo que hablo:


AUTH fulano@dominio.tld
MAIL FROM: siclano@dominio.tld


Y se envia sin problemas porque ya autenticamos como fulano, no importa como salga el correo. Supuestamente postfix tiene como controlar eso con:


reject_unauthenticated_sender_login_mismatch
reject_authenticated_sender_login_mismatch
reject_sender_login_mismatch




Pero ni mierda!



No funciona. Sucede algo incrible. Cuando envias como fulano. Te dice que fulano, no ortenece al usuario fulano. Apesar de que tengan el nombre IDENTICO. Entonces...


Como resuelve?


Simple pero no sencillo. Primero necesitamos postfix con las extensión pcre. Si eres usaurio de debian te salvaste. 


aptitude install postfix-pcre


Con eso tendremos la extensión de perl para postfix, ahora podemos crear ficheros con expresiones regulares de perl. Ahora le agregamos esto al main.cf


smtpd_sender_login_maps = pcre:${config_directory}/sender_login.pcre



...y conjuramos este echizo. En el pertinente archivo /etc/postfix/sender_login.pcre le ponemos esto:


/^(.*)@tudominio\.tld$/ $1



Entonces es cuando viene a jugar la sentencia que ya habiamos visto.


smtpd_recipient_restrictions =
     [...]
     reject_sender_login_mismatch,
     permit_sasl_authenticated


OJO, debe ir antes de permit. Ya solo faltaría reinicar postfix.

2 comentarios:

  1. Puede usarse también con hash:

    smtpd_sender_login_maps = hash:${config_directory}/sender_login

    en sender_login

    fulano@dominio.tld fulano@dominio.tld
    ciclano@dominio.tld ciclano@dominio.tld

    y ya lo demás...

    ResponderEliminar
  2. de esa maner, habrás de agregar todas las direcciones una a una y mantener la lista debidamente actualizada cada vez que se cree una cuenta. El negocio es que se haga solo...

    ResponderEliminar

Si vas a decir groserias, aclara el significado para los que no somos de tu mismo país.