Forzar el cifrado para SMTP saliente con Postfix

23

¿Alguien sabe cómo decirle a Postfix que cifre el correo saliente?

Lo configuré para usar el cifrado en la recepción, pero no puedo hacerlo con el correo saliente. Este es mi main.cfarchivo:

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
transport_maps = hash:/etc/postfix/transport

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Simon
fuente

Respuestas:

30

smtp_tls_security_level = encrypt o smtp_enforce_tls = yes

Para destinos específicos, puede usar smtp_tls_policy_maps

smtp_use_tls = yes y smtp_enforce_tls = yes están en desuso. Con Postfix 2.3 y posterior, use smtp_tls_security_level en su lugar.

Recuerde: la aplicación del cifrado TLS podría causar problemas de entrega de correo para el host SMTP, que no tiene configurado TLS. Si el servidor se usa para entregar correos solo a su servidor interno con TLS configurado, no es un problema en ese caso. Pero si el servidor se usa para entregar correo a servidores públicos, no puede suponer que todos los servidores tienen soporte TLS. En ese caso, use smtp_tls_security_level = may

sumar
fuente
1
Creo que solo quiere imponerlo desde el cliente de correo del software al servidor de correo remitente. No de servidor de correo a servidor de correo (vea su comentario publicado en Mar 7 '10 a las 23:26)
Cojones
4

La idea es obligar a los usuarios a configurar sus clientes de correo electrónico con un servidor smtp saliente cifrado. Con la configuración actual, Thunderbird les deja la opción de comunicarse con el servidor smtp en texto plano ...

No puede desactivar la opción en Thunderbird sin volver a compilar el código fuente, pero puede configurar el daemon stmpd postfix (que recibe el correo de sus clientes) para aplicar el cifrado. Para hacerlo, use smtpd_tls_security_level = encrypt , que es equivalente a opciones obsoletas smtpd_use_tls = yes y smtp_enforce_tls = yes . smtpd_tls_security_level = cifrar y smtp_enforce_tls = sí implica smtpd_tls_auth_only = sí

De la documentación de postfix sobre smtpd_tls_security_level = encrypt

Cifrado TLS obligatorio: anuncie el soporte STARTTLS a los clientes SMTP y exija que los clientes usen el cifrado TLS. De acuerdo con RFC 2487, esto NO DEBE aplicarse en el caso de un servidor SMTP de referencia pública. En cambio, esta opción solo debe usarse en servidores dedicados.

Si usa un servidor público, no puede aplicar el cifrado de correo electrónico en el puerto 25 / tcp. La mejor solución es deshabilitar la entrega de correo en el puerto 25 / tcp de postfix smtpd daemon de sus clientes y habilitar el daemon de envío de postfix (que es un daemon especial de postfix smtpd usado solo para recibir correo de sus clientes locales descritos en RFC 4409 que se ejecuta en el puerto 587 / tcp) . Para hacer eso, establezca smtpd_tls_security_level = may y elimine permit_sasl_authenticatedde smtpd_recipient_restrictions . En la master.cflínea de comentarios sobre el demonio de envío:

submission inet n       -       n       -       -   submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_resrictions=permit_sasl_authenticated,reject
sumar
fuente
1

Solo por curiosidad, ¿cómo estás diciendo que no está usando TLS? El valor predeterminado para smtp_tls_loglevel (que es diferente de smtpd_tls_loglevel) es 0, por lo que, de manera predeterminada, no verá nada sobre la negociación de TLS para el correo saliente en los registros de Postfix.

Si configura smtp_tls_loglevel = 1 o superior, debería ver una línea como esta en el registro cuando se envía un mensaje:

Mar 7 22:28:10 rack postfix / smtp [27400]: inicializando el motor TLS del lado del cliente

Admito que soy flojo, pero aparte de eso (y las notas de ms arriba), la configuración me parece bien de un vistazo.

jlupolt
fuente
1
He entendido que Simon quiere exigir que todo el correo se cifre con TLS. smtp_use_tls = yes permite el uso postfix de TLS, si el servidor remoto lo admite (smtp_use_tls = yes es equivalente a smtp_tls_security_level = may). El mensaje apropiado debe colocarse en el registro de correo, si el correo saliente se cifró con TLS. Tienes razón en que las opciones smtp_ * son para demonios postfix diferentes a smtpd_ * (smtpd_ * es para recibir correos de servidores remotos, smtp_ * es para enviar correos a servidores remotos).
sumar
En realidad, creo que la pregunta podría ser un poco ambigua. Al menos no puedo decir si Simon quiere que Postfix requiera TLS o simplemente usarlo si el servidor del destinatario lo admite.
jlupolt
1
Gracias por tus palabras, probablemente no me lo explicaste bien. La idea es obligar a los usuarios a configurar sus clientes de correo electrónico con un servidor smtp saliente cifrado. Con la configuración actual, Thunderbird les deja la opción de comunicarse con el servidor smtp en texto plano ... ¿es posible evitar esto? Gracias de antemano, Simon.
Simon
Una manera fácil de identificar si TLS está activo es mirar el mensaje sin procesar en el lado receptor y buscar los resultados de autenticación: domainkeys = neutral (sin sig); Lo que indica que no está usando TLS
Scott Stensland