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