Instalar y configurar Postfix + Dovecot + TLS + Autenticación en CentOS

| 2013-05-17 | No hay comentarios »

Primero debemos instalar los paquetes postfix, dovecot, cyrus-sasl y cyrus-sasl-plain:

yum -y install postfix dovecot cyrus-sasl cyrus-sasl-plain

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

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.

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:

Se debe descomentar las siguientes líneas resaltadas en negrita:

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

Archivo de configuración /etc/postfix/main.cf.

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

Configuración de Dovecot

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.

En el archivo /etc/dovecot/conf.d/10-ssl.conf, descomente las siguientes líneas resaltadas en negrita:

# 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.

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

Acerca del autor: Rodrigo Paszniuk

Ingeniero Informático, amante de la tecnología, la música, el ciclismo y aprender cosas nuevas.

Posts Relacionados

  • Instalar Tomcat 7 en CentOS 6
  • Instalar Postfix + Clam Anti-Virus + SpamAssassin + MailScanner en CentOS
  • Como instalar Roundcube Webmail en CentOS
  • mod_security y mod_evasive en CentOS/Fedora/Red Hat



SEGUÍNOS EN FACEBOOK


GITHUB