TLS/SSL a través de SMTP en un servidor postfix con Centos 5.X

publicado por Carlos Torres el 16/06/2011 18:02

En este artículo describimos como un canal seguro TLS (SSL) a través de SMTP en un servidor postfix con Centos 5.X

Generar Certificados SSL

Instalar las utilidades:

$yum install crypto-utils

Generar un certificados con expiración de 1 año (10 años 3650), Esto se puede realizar en otra máquina y después transferir los ficheros generados.

$genkey --days 365 mail.example.com

La entrada más importante es el nombre del host, ya que debe coincidir con el nombre que los usuarios utilizarán para conectarse al servidor.

Esto sería mail.example.com, pero lo más probable es que sea el nombre que tenemos en el registro DNS MX del servidor de correo.

Si suponemos que los servicios SMTP e IMAP/POP3 se están ejecutando en el mismo servidor, entonces se puede usar los mismos certificados, tanto para los clientes entrantes en mail.example.com (IMAP/POP3) y salientes del servidor smtp.

Si están los servidores SMTP e IMAP/POP3 separados, entonces se tendrán que crear crear certificados separados para cada uno.

Genkey dará la opción de crear una solicitud de firma de certificado (CSR) si se requiere obtener un certificado firmado por una autoridad de certificación raíz de confianza (Thawte, Verisign...).

Finalmente, se ofrece opción de cifrar la clave privada con contraseña... NO cifrar la clave privada, de otro modo, siempre que el servidor o el servicio se reinicia, esperará el prompt para introducir la contraseña (nada práctico en un servidor remoto!).

El par de claves de certificados se crean en:

/etc/pki/tls/certs/mail.example.com.cert # public cert
/etc/pki/tls/private/mail.example.com.key # private key

Configurando SSL/TLS en postfix

Ahora que hemos generado nuestros certificados, se puede configurar postfix para que los utilice para cifrar las sesiones de autenticación SASL.
Tenemos que añadir lo siguiente a /etc/postfix/main.cf:

smtpd_tls_security_level = may
smtpd_tls_key_file = /etc/pki/tls/private/mail.example.com.key
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.example.com.cert
# smtpd_tls_CAfile = /etc/pki/tls/root.crt
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache
tls_random_source = dev:/dev/urandom
# smtpd_tls_auth_only = yes

'smtpd_tls_security_level = may' Ssustituye a la antigua 'smtpd_use_tls = yes' en postfix 2.3 y permite el uso de TLS.

Hemos comentado 'smtpd_tls_CAfile' ya que se debe utilizar esta configuración para especificar el certificado emitido por autoridad raíz, cuando se utilizan certificados firmados.

'smtpd_tls_loglevel = 1' registrará las sesiones TLS para el log de postfix (ajuste de nivel 0 se desactiva el registro de TLS y el nivel 2 puede ser útil para propósitos de depuración).

'smtpd_tls_session_cache' cachea las claves de sesión TLS durante 1 hora entre las sesiones y es recomendable debido al costo relativamente alto en varias ocasiones de claves de sesión para cada conexión de negociación TLS.

'smtpd_tls_auth_only = yes', fuerza el uso de TLS para la autenticación SASL y no se permite la autenticación de claves en plano amenos que se establezca a una sesión SSL/TLS. Comentar esta opción si los clientes siguen enviando en plano.

Recargar la configuración de postfix:

$postfix reload
 

Añadir un comentario:

Nombre:

E-Mail:

Comentario: :

Enviar >>