Instalación y configuración de SSL en el servidor de correo Postfix/Dovecot – Certificados SSL –

En esta guía mostraremos posibles formas de habilitar el cifrado SSL/TLS con un certificado SSL confiable para conexiones entrantes y salientes en un servidor de correo Postfix-Dovecot típico.

Hemos utilizado un certificado PositiveSSL para las pruebas; sin embargo, cualquier certificado ofrecido en es capaz de proteger el servidor de correo de este tipo. Las pruebas se realizaron en la siguiente pila de servidores:

  • ubuntu 16.04
  • Postfijo 3.1.0
  • Palomar 2.2.22

Si hasta el momento no tiene un certificado SSL emitido para el nombre de host de su servidor de correo, no dude en codificarlo.

Cuando se emite el certificado, puede ser o desde el correo electrónico de cumplimiento enviado por la Autoridad de Certificación a la dirección de correo electrónico de contacto administrativo del certificado.

Cargar y concatenar archivos de certificados en el servidor

  1. El archivo de certificado yourdomainname.crt debe cargarse en el servidor junto con un paquete de CA que, a su vez, puede estar en un solo archivo (yourdomainname.ca-bundle) o en archivos separados (COMODORSADomainValidationSecureServerCA.crt, COMODORSAAddTrustCA.crt, AddTrustExternalCARoot .crt como en nuestro caso). Hemos guardado los archivos del certificado y del paquete de CA en el directorio /etc/ssl/certs/ y la clave privada correspondiente (yourdomainname.key) en la carpeta /etc/ssl/private/.
  2. Concatene los archivos cargados usando uno de los siguientes comandos:

    – Crear un archivo con el certificado hoja (servidor) y la cadena CA:

    • cat /etc/ssl/certs/yourdomainname.crt /etc/ssl/certs/yourdomainname.ca-bundle >> /etc/ssl/certs/certificate.crt
    • cat /etc/ssl/certs/yourdomainname.crt /etc/ssl/certs/COMODORSADomainValidationSecureServerCA.crt /etc/ssl/certs/COMODORSAAddTrustCA.crt /etc/ssl/certs/AddTrustExternalCARoot.crt >> /etc/ssl/certs/ certificado.crt

    – Postfix y Dovecot pueden aceptar el certificado, la cadena de CA y la clave privada almacenados en un solo archivo. Utilice uno de los siguientes comandos para crearlo:

    • cat /etc/ssl/certs/yourdomainname.crt /etc/ssl/certs/yourdomainname.ca-bundle /etc/ssl/private/yourdomainname.key >> /etc/ssl/certs/certificate_and_key.crt
    • cat /etc/ssl/certs/yourdomainname.crt /etc/ssl/certs/COMODORSADomainValidationSecureServerCA.crt /etc/ssl/certs/COMODORSAAddTrustCA.crt /etc/ssl/certs/AddTrustExternalCARoot.crt /etc/ssl/private/yourdomainname. clave >> /etc/ssl/certs/certificate_and_key.crt

Para comprobar el contenido del archivo recién creado, ejecute cat /etc/ssl/certs/certificate.crt o cat /etc/ssl/certs/certificate_and_key.crt. Asegúrese de que la salida no contenga espacios en blanco excesivos entre o dentro del certificado codificado PEM y los bloques de claves. Si detecta espacios, puede abrir el archivo en un editor de texto como “vi” o “nano” y eliminarlos manualmente.

Edición de archivos de configuración de Postfix y Dovecot para habilitar SSL/TLS en puertos específicos

Enviar y recibir correo a través de Internet se basa en un sistema complejo de instancias intermedias y de punto final (servidor de correo y software cliente) etiquetadas como agentes de usuario de correo (MUA), agentes de envío de correo (MSA), agentes de transferencia de correo (MTA) y agentes de entrega de correo. (MDA) dependiendo de las funciones que desempeñan. Normalmente, un correo electrónico pasa por cada tipo de las partes mencionadas anteriormente y se utilizan diferentes protocolos de transporte en cada paso, a saber, el protocolo de envío, el Protocolo simple de transferencia de correo (SMTP), el Protocolo de oficina postal (POP3) y el Protocolo de acceso a mensajes de Internet (IMAP). ).

See also  Registro de Dominio .website | Compre .website nuevo gTLD por $1,88

La siguiente tabla especifica los puertos utilizados para la ejecución de protocolos de transporte específicos.

Uso de protocolo Texto sin formato/sesión cifrada Solo sesión cifrada POP3 Correo entrante 110 995 IMAP Correo entrante 143 993 SMTP Correo saliente 25 465 Envío Correo saliente 587

La posibilidad de utilizar los puertos 25, 110, 143 y 587 en modo texto plano (sin cifrar) o seguro (cifrado) proviene del enfoque según el cual se invoca un comando STARTTLS cuando hay una sesión activa de texto plano existente.

El aspecto técnico del uso de los puertos 465, 993 y 995 es similar a la forma en que se usa el protocolo HTTP sobre SSL/TLS: 1) los puertos seguros están separados de sus contrapartes “no seguras”; 2) el establecimiento de una sesión cifrada precede a cualquier intercambio de datos.

NOTA: Aunque el puerto 465 no está oficialmente estandarizado en la documentación de la IANA como puerto SMTPS, los administradores de servidores de correo lo han utilizado y lo siguen utilizando para atender el tráfico de correo saliente cifrado.

De hecho, ambas técnicas descritas se utilizan habitualmente en el sistema de correo de Internet hoy en día, y una buena práctica de seguridad es aplicar el certificado SSL en cada puerto de correo que vaya a utilizar.

Sigamos adelante y habilitemos el certificado SSL para los puertos de correo entrante y saliente.

Puerto 25 (SMTP con STARTTLS)

Abra el archivo de configuración main.cf de Postfix para editarlo. Generalmente se almacena en el directorio /etc/postfix/. Busque la sección de parámetros TLS dentro de main.cf y cambie los valores de ciertas directivas como se muestra a continuación:

  • si el certificado y la clave privada se guardan en archivos separados:

    smtpd_tls_cert_file=/etc/ssl/certs/certificate.crt

    smtpd_tls_key_file=/etc/ssl/private/yourdomainname.key
  • si el certificado y la clave privada se guardan en un solo archivo:

    smtpd_tls_cert_file=/etc/ssl/certs/certificate_and_key.crt

    smtpd_tls_key_file=$smtpd_tls_cert_file=$smtpd_tls_cert_file
  • asegúrese de que la directiva smtpd_use_tls esté configurada en sí:

    smtpd_use_tls=sí

Cierre el archivo main.cf y guarde los cambios.

See also  Creadores de sitios vs WordPress: ¿cuál es mejor? - Blog de nombre barato

Puertos 587 (Envío con STARTTLS) y 465 (SMTPS)

Abra el archivo master.cf de Postfix ubicado en el directorio /etc/postfix/ y descomente (y edítelo como se muestra a continuación si es necesario) las siguientes líneas:

  • para abrir y asegurar el puerto 587:

    presentación inet n – y – – smtpd

    -o syslog_name=postfix/envío

    -o smtpd_tls_security_level=mayo

    -o smtpd_sasl_auth_enable=sí
  • para abrir y asegurar el puerto 465:

    smtps inet n – y – – smtpd

    -o nombre_syslog=postfix/smtps

    -o smtpd_tls_wrappermode=sí

    -o smtpd_sasl_auth_enable=sí

Ahora se puede cerrar el archivo master.cf.

Puertos 110 (POP3 con STARTTLS), 143 (IMAP con STARTTLS), 993 (IMAPS) y 995 (POP3S)

Para habilitar el certificado SSL para Dovecot, abra el archivo 10-ssl.conf, que normalmente se encuentra en el directorio /etc/dovecot/conf.d/, y edite las siguientes líneas:

  • si el certificado y la clave privada se guardan en archivos separados:

    ssl_cert = ssl_key =
  • si el certificado y la clave privada se guardan en un solo archivo:

    ssl_cert = ssl_key =
  • La directiva SSL debe establecerse en Sí:

    ssl = sí

Ahora puede cerrar el archivo 10-ssl.conf y guardar los cambios. Eso es todo. Después de aplicar los cambios mencionados anteriormente, el certificado se instala para todos los puertos entrantes.

Si su versión de Dovecot es 1.x, las directivas SSL en los archivos de configuración son ligeramente diferentes:

  • Asegúrese de que /etc/dovecot/dovecot.conf tenga la siguiente línea:

    protocolos = imap pop3 imaps pop3s

  • Edite el archivo /etc/dovecot/conf.d/10-ssl.conf como se muestra a continuación:

    ssl_disable = no

    – si el certificado y la clave privada se guardan en archivos separados

    ssl_cert_file = sl_key_file =

    – si el certificado y la clave privada se guardan en un solo archivo

    ssl_cert_file = sl_key_file =

Ajustes avanzados

Esta sección contiene una breve descripción de algunas configuraciones adicionales que serán útiles para ajustar el manejo SSL/TLS de su servidor de correo. No dude en leer también la documentación oficial sobre este asunto.

  1. Es posible utilizar un puerto STARTTLS en Postfix en el modo “wrapper” con la directiva smtpd_tls_wrappermode, lo que implica inicializar una conexión segura desde el principio en lugar de anunciar el soporte STARTTLS y esperar la solicitud correspondiente de un cliente remoto. La directiva debe agregarse a /etc/postfix/master.cf (ver ejemplo a continuación):

    smtps inet n – n – – smtpd

    -o smtpd_tls_wrappermode=sí

  2. En Dovecot, es posible establecer la directiva SSL en el valor requerido (ssl=requerido), lo que implica forzar el protocolo de enlace SSL antes de cualquier intento de inicio de sesión. Por lo tanto, la contraseña se enviará únicamente a través de un canal cifrado, mientras que con ssl = yes los clientes de correo electrónico no están obligados a utilizar SSL/TLS con prioridad. Esta configuración se aplica a los mecanismos de autenticación de texto sin formato y sin formato.
  3. Para deshabilitar el mecanismo de autenticación de texto plano, puede usar la directiva enable_plaintext_auth (/etc/dovecot/conf.d/10-auth.conf):

    enable_plaintext_auth=yes

  4. Para eliminar los cifrados que es mejor no utilizar debido a la baja potencia de cifrado, puede configurar las siguientes directivas en Dovecot (/etc/dovecot/dovecot.conf):

    ssl_dh_parameters_length = 2048

    ssl_cipher_list = TODOS:!BAJO:!SSLv2:!EXP:!aNULL

  5. En Postfix, el parámetro smtpd_tls_ciphers controla el grado mínimo de cifrado y está configurado en nivel medio de forma predeterminada, lo cual es suficiente para proporcionar una seguridad sólida. Aún así, si necesita excluir ciertos cifrados o protocolos para cifrado oportunista (STARTTLS) u obligatorio (SSL normal), utilice las siguientes directivas en /etc/postfix/main.cf y asígneles los valores correspondientes:

    – para TLS obligatorio

    smtpd_tls_mandatory_exclude_ciphers =

    smtpd_tls_mandatory_protocols =!

    – para TLS oportunista

    smtpd_tls_exclude_ciphers =

    smtpd_tls_protocols =!

  6. Para preferir la lista de cifrado del lado del servidor a la del lado del cliente, puede utilizar estas directivas:

    – en Dovecot (/etc/dovecot/conf.d/10-ssl.conf)
    ssl_prefer_server_ciphers = sí

    – en Postfix (/etc/postfix/main.cf)
    tls_preempt_cipherlist = sí

  7. Comprobando la instalación SSL

    Usando OpenSSL

    El kit de herramientas OpenSSL permite verificar la instalación del certificado SSL en un servidor de forma remota o local. Para verificar los puertos STARTTLS, ejecute el siguiente comando reemplazando con el número de puerto y con el valor smtp, pop3 o imap (consulte el ejemplo a continuación) respectivamente:

    openssl s_client -connect ejemplo.com: -servername ejemplo.com -starttls

    Se puede usar el mismo comando pero sin el modificador -starttls para verificar puertos que no son STARTTLS:

    openssl s_client -connect ejemplo.com: -servername ejemplo.com

    Usando damas en línea

    También hay una serie de herramientas en línea que permiten verificar la conectividad de su servidor de correo a través de SSL/TLS. Sólo necesitará ingresar el nombre de host del servidor y el número de puerto o una cuenta de correo electrónico existente y ejecutar la prueba, que generalmente demora unos minutos. Puede encontrar los enlaces a esas herramientas de prueba a continuación:

Loading Facebook Comments ...
Loading Disqus Comments ...