Cómo instalar y configurar Postfix y Dovecot con soporte para TLS y autenticación en Centos 6

A continuación información basada en el articulo redactado por Joel Barrios Dueñas para instalar y configurar Postfix y Dovecot con soporte para TLS y autenticación en Centos 6, todo el trabajo se lo hace desde una consola como root

Instalar los paquetes postfix, dovecot, cyrus-sasl y cyrus-sasl-plain:

yum -y install postfix dovecot cyrus-sasl cyrus-sasl-plain
yum remove cyrus-sasl-gssapi cyrus-sasl-md5

Definiendo Postfix como agente de transporte de correo predeterminado.

alternatives --config mta

Lo anterior devolverá una salida similar a la siguiente, donde deberá elegir entre postfix y sendmail como MTA predeterminado del sistema:

Hay 2 programas que proporcionan ‘mta’.

Selección Comando
 -----------------------------------------------
 *+ 1 /usr/sbin/sendmail.postfix
 2 /usr/sbin/sendmail.sendmail

Presione Intro para mantener la selección actual[+] o escriba el número de la selección: 1 Si estuviera presente sendmail, detenga éste (es el MTA predeterminado en CentOS 5 y Red Hat Enterprise Linux 5) e inicie postfix:

service sendmail stop
chkconfig sendmail off
service postfix start
chkconfig postfix on

Generando firma digital y certificado.

Acceda al directorio /etc/pki/tls/.

cd /etc/pki/tls/

Los servidores de correo electrónico, como Sendmail y Postfix, pueden utilizar una firma digital creada con algoritmo DSA de 1024 octetos. Para tal fin, se crea primero un archivo de parámetros DSA:

openssl dsaparam 1024 -out dsa1024.pem

A continuación, se utiliza este archivo de parámetros DSA para crear una llave con algoritmo DSA y estructura x509, así como también el correspondiente certificado. En el ejemplo a continuación, se establece una validez por 1095 días (tres años) para el certificado creado.
openssl req -x509 -nodes -newkey dsa:dsa1024.pem -days 1095 -out certs/smtp.crt -keyout private/smtp.key

Lo anterior solicitará se ingresen varios datos:

  • Código de dos letras para el país.
  • Estado o provincia.
  • Ciudad.
  • Nombre de la empresa o razón social.
  • Unidad o sección.
  • Nombre del anfitrión.
  • Dirección de correo.

La salida devuelta sería similar a la siguiente:

Generating a 1024 bit DSA private key
 writing new private key to 'smtp.key'
 -----
 You are about to be asked to enter information that will be
 incorporated into your certificate request.
 What you are about to enter is what is called a Distinguished Name
 or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [GB]:MX
 State or Province Name (full name) [Berkshire]:Distrito Federal
 Locality Name (eg, city) [Newbury]:Mexico
 Organization Name (eg, company) [My Company Ltd]:Empresa, S.A. de C.V.
 Organizational Unit Name (eg, section) []:Direccion Comercial
 Common Name (eg, your name or your server's hostname) []:*.dominio.com
 Email Address []:[email protected]

Si definió un nombre de anfitrión absoluto (ejemplo: mail.dominio.com), el certificado solo será válido cuando el servidor de correo electrónico sea invocado con el nombre definido en el campo Common Name. Es decir, solo podrá utilizarlo cuando se defina mail.dominio.com como servidor SMTP con soporte TLS desde el cliente de correo electrónico. Funcionará incorrectamente si se invoca al servidor como, por mencionar un ejemplo, dominio.com. Es por eso que se sugiere utilizar *.dominio.com si se planea acceder hacia el mismo servidor con diferentes subdominios del mismo dominio.

Al terminar, ya no será necesario conservar el archivo dsa1024.pem, mismo que puede eliminarse con plena seguridad.

rm -f dsa1024.pem

Es indispensable que todos los archivos de claves y certificados tengan permisos de acceso de solo lectura para el usuario root:

chmod 400 certs/smtp.crt private/smtp.key

Cambie al directorio /etc/pki/dovecot/.

cd /etc/pki/dovecot/

Elimine los certificados de prueba creados durante la instalación.

rm -f private/dovecot.pem certs/dovecot.pem

La creación de la firma digital y certificado para Dovecot es más simple, pero requiere utilizar una clave con algoritmo RSA de 1024 octetos, con estructura X.509. En el ejemplo a continuación, se establece una validez por 1095 días (tres años) para el certificado creado.

openssl req -x509 -nodes -newkey rsa:1024 -days 1095 -out certs/dovecot.pem -keyout private/dovecot.pem
openssl x509 -subject -fingerprint -noout -in certs/dovecot.pem

De forma similar a como ocurrió con el certificado para el servidor correo electrónico, lo anterior solicitará se ingresen varios datos. La salida devuelta debe similar a la siguiente:

Generating a 1024 bit RSA private key
 ................++++++
 .++++++
 writing new private key to 'dovecot.pem'
 -----
 You are about to be asked to enter information that will be
 incorporated into your certificate request.
 What you are about to enter is what is called a Distinguished Name
 or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [GB]:MX
 State or Province Name (full name) [Berkshire]:Distrito Federal
 Locality Name (eg, city) [Newbury]:Mexico
 Organization Name (eg, company) [My Company Ltd]:Empresa, S.A. de C.V.
 Organizational Unit Name (eg, section) []:Direccion Comercial
 Common Name (eg, your name or your server's hostname) []: *.dominio.com
 Email Address []:[email protected]

Es indispensable que todos los archivos de claves y certificados tengan permisos de acceso de solo lectura para el usuario root:

chmod 400 private/dovecot.pem certs/dovecot.pem

Regrese al directorio de inicio del usuario root.

cd

Configuración de Postfix.
Editar el archivo /etc/postfix/master.cf:

vim /etc/postfix/master.cf

Debe descomentar las siguientes líneas resaltadas en negrita:

smtp inet n - n - - smtpd
<strong> submission inet n - n - - smtpd</strong>
<strong> -o smtpd_tls_security_level=encrypt</strong>
<strong> -o smtpd_sasl_auth_enable=yes</strong>
<strong> -o smtpd_client_restrictions=permit_sasl_authenticated,reject</strong>
<strong> -o milter_macro_daemon_name=ORIGINATING</strong>
<strong> smtps inet n - n - - smtpd</strong>
<strong> -o smtpd_tls_wrappermode=yes</strong>
<strong> -o smtpd_sasl_auth_enable=yes</strong>
<strong> -o smtpd_client_restrictions=permit_sasl_authenticated,reject</strong>
<strong> -o milter_macro_daemon_name=ORIGINATING</strong>

A continuación, se debe editar el archivo /etc/postfix/main.cf:

vim /etc/postfix/main.cf

Respetando el resto del contenido original de este archivo y asumiendo que el nombre de anfitrión del servidor es mail.dominio.com y que se va a utilizar para gestionar el correo electrónico de dominio.com, solo se deben localizar y configurar los siguientes parámetros:

# Todo lo siguiente solo requiere descomentarse o bien modificar la línea
 # correspondiente que esté descomentada.
# Definir el nombre de anfitrión del sistema (hostname).
 myhostname = mail.dominio.com
# Definir el dominio principal a gestionar.
 mydomain = dominio.com
myorigin = $mydomain
# Definir se trabaje por todas las interfaces.
 # De modo predeterminado solo trabaja por la interfaz de retorno del sistema
 # (loopback), es decir, solo escucha peticiones a través de sobre 127.0.0.1
 #inet_interfaces = localhost
 inet_interfaces = all
# Si se van a manejar más dominios de correo electrónico, añadirlos también.
 mydestination = $myhostname, $mydomain, localhost.localdomain, localhost
# Definir tus redes locales, ejemplo asume que tu LAN es 192.168.1.0/24
 mynetworks = 192.168.1.0/24, 127.0.0.0/8
# Si se van a manejar más dominios de correo electrónico, añadirlos también.
 relay_domains = $mydestination
# Importante para poder utilizar procmail para filtrar correo.
 mailbox_command = /usr/bin/procmail
# Todo lo siguiente está ausente en la configuración.
 # Añadir todo al final del archivo main.cf
 #
 smtpd_tls_security_level = may
 smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
 # Las rutas deben corresponder a las del certificado y firma digital creados.
 smtpd_tls_key_file = /etc/pki/tls/private/smtp.key
 smtpd_tls_cert_file = /etc/pki/tls/certs/smtp.crt
 smtpd_tls_auth_only = no
 smtp_use_tls = yes
 smtpd_use_tls = yes
 smtp_tls_note_starttls_offer = yes
 smtpd_tls_loglevel = 1
 smtpd_tls_received_header = yes
 smtpd_tls_session_cache_timeout = 3600s
 tls_random_source = dev:/dev/urandom
# Soporte para autenticar a través de SASL.
 # smtpd_sasl_local_domain = # Solo como referencia.
 smtpd_sasl_auth_enable = yes
 smtpd_sasl_security_options = noanonymous
 broken_sasl_auth_clients = yes
 smtpd_sasl_authenticated_header = yes
 smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination

Se debe editar también el archivo /etc/aliases:

vim /etc/aliases

Se debe definir que el correo del usuario root se entregue al cualquier otro usuario del sistema. El objetivo de esto es que jamás se tenga necesidad de utilizar la cuenta del usuario root y se prefiera en su lugar una cuenta de usuario sin privilegios. Solo se requiere descomentar la última línea de este archivo, que como ejemplo entrega el correo del usuario root al usuario marc y definir un usuario existente en el sistema

#root: marc
 root: fulano

Al terminar, se ejecuta el mandato postalias para generar el archivo /etc/aliases.db que será utilizado por Postfix:

postalias /etc/aliases

Configuración de Dovecot en CentOS 6 y Red Hat Enterprise Linux 6.

Edite el archivo /etc/dovecot/dovecot.conf y descomente el parámetro protocolos, estableciendo como valor pop3 imap lmtp.

# Protocols we want to be serving.
 protocols = imap pop3

Parámetros del archivo /etc/dovecot/conf.d/10-mail.conf.

Alrededor de la línea 30 del archivo /etc/dovecot/conf.d/10-mail.conf, establezca mbox:~/mail:INBOX=/var/mail/%u como valor del parámetro mail_location.

mail_location = mbox:~/mail:INBOX=/var/mail/%u

Parámetros del archivo /etc/dovecot/conf.d/10-ssl.conf.

# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
 ssl = yes
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
ssl_cert = /etc/pki/dovecot/certs/dovecot.pem
ssl_key = /etc/pki/dovecot/private/dovecot.pem

 Iniciar servicios y añadir éstos al arranque del sistema.

Se deben añadir al arranque del sistema e iniciar (o reiniciar) los servicios saslauthd, dovecot y postfix:

chkconfig saslauthd on
 chkconfig dovecot on
 chkconfig postfix on
 service saslauthd start
 service dovecot start
 service postfix restart

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Blue Captcha Image
Refrescar

*