Me gustaría ejecutar Postfix en un VPS de Debian para enviar correos electrónicos desde mi aplicación. La aplicación (que se ejecuta en otros VPS) se conectaría a Postfix a través de SMTP. Postfix no tiene que manejar el correo electrónico entrante; se trata solo de enviar los mensajes salientes.
Para evitar ser un relé abierto, se debe usar la autenticación SASL. Sin embargo, no quiero ejecutar Dovecot o MySQL para la autenticación SASL.
¿Cómo puedo configurar la autenticación SASL usando un archivo simple (que contiene nombres de usuario y contraseñas)?
Ya encontré una pregunta similar ; sin embargo, no se dieron respuestas satisfactorias allí.
Respuestas:
Postfix actualmente solo admite dos métodos de autenticación SASL. Uno de ellos es Dovecot, que no quieres. El otro es Cyrus, que es lo más parecido a lo que quieres sin reescribir Postfix. Implica ejecutar un demonio de autenticación separado (
saslauthd
), pero el archivo de autenticación es fácil de editar y actualizar.Los conceptos básicos para usar Cyrus SASL se pueden encontrar en el sitio de documentación de postfix , pero aquí hay una breve descripción. ¡ Mire el enlace si algo es confuso de alguna manera!
Comience instalando Cyrus SASL con el complemento
sasldb
. (Cómo hacer eso se deja como un ejercicio para el lector; presumiblemente hay un paquete en cualquier sistema de paquetes que esté utilizando su marca de Unix). Dado que la comunicación entre Postfix y SASL se realizará a través de un socket de dominio Unix, es posible que desee agregue postfix al grupo SASL y asegúrese de que ese grupo tenga permisos de lectura y ejecución en el directorio/var/run/saslauthd
.Configurar SASL
Configure SASL para usar sasldb editando /etc/sasl2/smtpd.conf:
El complemento sasldb significa que sasl usará un archivo Berkeley DB para nombres de usuario y contraseñas. Agrega usuarios con el comando
saslpasswd2
:Tenga en cuenta que especifica un dominio junto con el nombre de usuario, y el usuario deberá usar "[email protected]" en lugar de solo "username" al autenticarse.
Puede verificar qué usuarios han ingresado ejecutando
sasldblistusers2
.Inicie saslauthd y verifique que la autenticación funciona haciendo
Configurar Postfix
Una vez hecho esto, dígale a Postfix que use SASL y dígale a Cyrus que es SMTP que se está autenticando, editando /etc/postfix/main.cf para que contenga
Luego, vuelva a cargar postfix, y debería estar configurado.
fuente
sasldblistusers2
genera correctamente la lista de usuarios que agregué. Sin embargo, cuando se realizatestsaslauthd
, consigo este resultado:0: NO "authentication failed"
. ¿Tienes alguna idea de cómo podría solucionarlo? Esto es de mi/var/log/auth.log
:saslauthd[30471]: do_auth : auth failure: [user=XXX@XXX] [service=smtpd] [realm=] [mech=pam] [reason=PAM auth error]
-s smtpd
. Si fijoMECHANISMS="sasldb"
en/etc/default/saslauthd
y saslauthd reinicio, consigo el mismo resultado de testsaslauthd. El registro de autenticación muestra un mensaje diferente:saslauthd[3706]: do_auth : auth failure: [user=XXX@XXX] [service=smtpd] [realm=] [mech=sasldb] [reason=Unknown]
testsaslauthd -u username -r example.com -p XXX
devuelve0: OK "Success."
. Ahora comprobaré si Postfix puede evitar esto ...-s smtpd
, lo hará usar PAM en lugar de sasldb, así que no haga eso ...SASL es solo una de las numerosas formas de prevenir esto. Otra sería incluir en la lista blanca las IP que usa en los otros VPS o solicitar certificados de cliente TLS (se puede decir que es la forma más segura).
Simplemente configure una CA de firma en la máquina de postfix y firme un certificado por VPS que desee enviar por correo electrónico.
Luego, solicite la verificación completa del certificado del cliente para todo el correo enviado; deshabilitar cualquier otro método de envío.
Lo que pides no es posible, ya que postfix no es compatible con SASL directamente.
fuente
Solo aclarando algunas cosas,
Crear una cuenta en sasldb:
Prueba de autenticación:
(nota: el nombre de usuario no es seguido por el fqdn)
También me gustaría agregar que crear una cuenta raíz
no te permitirá autenticarte,
Pero esto no es un error. Es solo una característica de seguridad.
fuente
Si no necesita manejar el correo entrante, no se moleste con la autenticación. Simplemente bloquee el tráfico entrante con un cortafuegos y / o restringirlo solo a localhost.
No más problemas de retransmisión abierta, y también evita complicar las cosas para las aplicaciones que necesitan enviar correo a través de postfix.
fuente