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.
Puede usarse también con hash:
ResponderEliminarsmtpd_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...
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