====== Postfix, Dovecot Squirrelmail y sasl para correo seguro ====== Cuando instalamos postfix o migramos servidores de windows para linux notamos que la mejoria es enorme pero muchas veces no nos damos cuenta que siempre quedan algunos huecos de seguridad abiertos. Uno de ellos son los puertos smtp sin autenticar, o sea, que haciendole telnet a los servidores de correo se pueden enviar correos anonimos. A continuacion se explica como aunteticar el smtp, aclarando las condiciones siguientes: En el momento del tutorial se requería instalado debian etch 4.0, postfix, dovecot, squirrelmail y usuarios Unix con autenticacion PAM. Hay que adaptarlo para LDAP u otras integraciones. aptitude install postfix-tls sasl2-bin libsasl2 libsasl2-modules ahora editamos el fichero /etc/postfix/main.cf y añadimos las sgtes líneas preferentemente antes de las clases donde se define la salida nacional e internacional para los usuarios PARA SEGURIDAD SASL smtp_sasl_auth_enable = no smtpd_helo_required = yes smtpd_sasl_auth_enable = yes smtpd_sasl_authenticated_header = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes disable_vrfy_command = yes y su usa politicas de salida nacional e internacional, estas deben quedar asi smtpd_sender_restrictions = ... permit_sasl_authenticated, reject smtpd_recipient_restrictions = ... permit_sasl_authenticated, reject cuando pongo los tres puntos suspensivos en estas clases es porque suponemos que tenemos ya cosas creadas ahi, ellas e respetan y solo se les incluye el parametro que relaciono. Crear el fichero /etc/postfix/sasl/smtpd.conf luego touch /etc/postfix/sasl/smtpd.conf luego editamos ese fichero mc -e /etc/postfix/sasl/smtpd.conf y le pones dentro estas dos lineas pwcheck_method: saslauthd mech_list: plain login editamos /etc/default/saslauthd borramos todo loque tiene dentro y ponemos estas lineas START=yes MECHANISMS="pam" MECH_OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd" THREADS=5 OPTIONS="-c" Hacemos los sgte: rm -r /var/run/saslauthd/ mkdir -p /var/spool/postfix/var/run/saslauthd ln -s /var/spool/postfix/var/run/saslauthd /var/run adduser postfix sasl asegurese que en el main.cf del postfix no haya ninguna ip de la red local y que solo exista las ip de los servidores que te hacen smtp permitido Ahora reiniciemos los servicios postfix y saslauth /etc/init.d/postfix restart /etc/init.d/saslauthd start En el squirrelmail en el //config.php// busque y configure estos parametros de este modo $pop_before_smtp = true; $smtp_auth_mech = 'login'; $imap_auth_mech = 'login'; para chequear si el sasl esta trabajando y partiendo que el usuario es pepe y la contraseña es 123 ejecute esto en la consola de ese server testsaslauthd -u pepe -p 123 si esta bien devolvera 0: OK "Success." si esta mal devolvera esto otro 0: NO "authentication failed" Para probar que haciendo telnet no se puede enviar correo pruebelo así telnet localhost 25 luego ejecute esto ehlo nombre del servidor seguido de esto mail from: usuario@dominio luego rcpt to: miusuario@midominio si le da un mensaje como este 554 5.7.1 : Relay access denied entonces ya no tiene problema, si le deja enviar el correo, aún estas en un verdadero problema otra cosa, borre el contenido del fichero //dovecot.conf// y póngale esto dentro protocols = imap pop3 disable_plaintext_auth = no log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:%h/Maildir mail_extra_groups = mail protocol imap { } protocol pop3 { pop3_uidl_format = %08Xu%08Xv } auth default { mechanisms = plain login passdb pam { } userdb passwd { } socket listen { client { # Assuming the default Postfix $queue_directory setting path = /var/spool/postfix/private/auth mode = 0660 # Assuming the default Postfix user and group user = postfix group = postfix } } user = root } dict { } plugin { }