Hola a tod@s,
En este post vamos a ver como instalar y configurar un servidor de correos en Ubuntu Server 24.04 LTS, utilizaremos postfix para el servidor SMTPS y dovecot para el servidor POP3S e IMAPS.
- Antes de empezar vamos a crear los registros necesarios en nuestros servidores DNS (A, PTR, MX, SPF).
- Servidor DNS interno:
- Servidor DNS externo:
- Lo primero que vamos a realizar sobre nuestro servidor Ubuntu Server 24.04 LTS, es instalar el servidor SMTP postfix ejecutando el comando apt install postfix -y:
- Configuramos el modo Sitio de Internet para el dominio eu:
- Editamos el archivo de configuración de postfix, nano /etc/postfix/main.cf y modificamos los siguientes parámetros:
myhostname = mail.ragasys.eu
myorigin = /etc/mailname
mydestination = $myhostname, localhost, localhost.localdomain, ragasys.eu
relayhost =
relay_domains = $mydestination
mynetworks = 127.0.0.0/8 [::1]/128 192.168.3.0/24
mydomain = ragasys.eu
home_mailbox = Maildir/
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
- Ahora como vamos a utilizar los certificados de Let’s Encrypt debemos de añadir al fichero main.cf de postfix, estas líneas, antes debemos de comentar todas las líneas de configuración de TLS:
# Habilitar TLS en Postfix
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.ragasys.eu/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.ragasys.eu/privkey.pem
smtpd_tls_CAfile=/etc/letsencrypt/live/mail.ragasys.eu/chain.pem
smtpd_use_tls=yes
smtpd_tls_security_level=may
smtpd_tls_auth_only = yes
smtpd_tls_protocols=!SSLv2, !SSLv3
smtpd_tls_mandatory_protocols=!SSLv2, !SSLv3
# Forzar TLS en conexiones salientes
smtp_tls_security_level=may
smtp_tls_CAfile=/etc/letsencrypt/live/mail.ragasys.eu/chain.pem
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
# Habilitar autenticación SMTP segura
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination
- Para habilitar el puerto 465 en postfix, editamos el archivo de configuración nano /etc/postfix/master.cf:
- Al final del archivo añadimos:
smtps inet n – y – – smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
- Reiniciamos postfix para aplicar los cambios, systemctl restart postfix, systemctl enable postfix, systemctl status postfix:
- Instalamos ahora el servidor POP3 e IMAP de dovecot para ello, ejecutamos apt install dovecot-core dovecot-imapd dovecot-pop3d -y:
- Editamos la configuración principal ejecutando, nano /etc/dovecot/conf.d/10-mail.conf y configuramos esta línea, mail_location = maildir:~/Maildir:
- Editamos la configuración de autenticación ejecutando, nano /etc/dovecot/conf.d/10-auth.conf:
- Descomentamos la línea, disable_plaintext_auth = yes:
- Y habilitamos PAM, auth_mechanisms = plain login:
- Le indicamos a Dovecot que ignore el dominio y solo use el nombre de usuario, auth_username_format = %n:
- Ahora editamos la configuración de dovecot, nano /etc/dovecot/conf.d/10-master.conf:
- Buscamos la sección service auth y añadimos:
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
unix_listener auth-userdb {
mode = 0600
user = dovecot
group = dovecot
}
}
- Edita la configuración SSL ejecutando, nano /etc/dovecot/conf.d/10-ssl.conf:
- Y cambiamos estas líneas, ya que vamos a utilizar certificados de Let’s Encrypt:
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.ragasys.eu/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.ragasys.eu/privkey.pem
- Ahora vamos a obtener los certificados SSL con Let’s Encrypt.
- Instalamos cerbot ejecutando, apt install certbot -y:
- Generamos el certificado para nuestro dominio, certbot certonly –standalone -d mail.ragasys.eu:
- Ahora creamos una tarea para renovar el certificado automáticamente, ejecutamos crontab -e:
- Agregamos la línea, 0 3 * * * certbot renew –quiet && systemctl reload postfix dovecot, esta tarea programa la renovación automática de los certificados SSL de Let’s Encrypt cada día a las 3:00 de la mañana, y si hay una renovación exitosa, recarga Postfix y Dovecot para aplicar los nuevos certificados sin reiniciar los servicios:
- Reiniciamos dovecot para aplicar los cambios, systemctl restart dovecot, systemctl enable dovecot, systemctl status dovecot:
- Verificamos en el servidor de correos que los puertos SMTPS-465, POP3S-995 e IMAPS-993 están operativos, para ello, ejecutamos ss -tlnp | grep :465, ss -tlnp | grep :995 y ss -tlnp | grep :993 :
- En nuestro firewall debemos de abrir estos puertos hacia el servidor de correos:
- Desde un equipo externo verificamos que los puertos SMTPS-465, POP3S-995 e IMAPS-993 están operativos:
- Ahora nos vamos a crear estas dos cuentas de correo para verificar que todo funciona correctamente, estas dos cuentas no van a poder iniciar sesión en el sistema, para crearlas ejecutamos useradd -m -s /sbin/nologin usuario y le configuramos una contraseña:
- Instalamos testsaslauthd, que es una herramienta para probar la autenticación SASL, apt install sasl2-bin:
- Con el comando testsaslauthd -u usuario -p contraseña o testsaslauthd -u usuario -p contraseña -s smtp, verificamos la autenticación SASL:
- Iniciamos una conexión openssl al puerto SMTPS 465 con, openssl s_client -connect mail.ragasys.eu:465 -crlf -quiet y como se puede ver iniciamos la conexión, desde esta conexión vamos a mandar un correo de un usuario a otro.
- Una vez establecida la conexión podemos empezar a enviar comandos SMTP al servidor.
- Empezamos con helo mail.ragasys.eu que lo envía el cliente para identificarse.
- auth login para empezar a autenticarnos
- Escribimos nuestro usuario en Base64, nos abrimos otra terminal y ejecutamos echo -n «usuario» | base64
- Escribimos nuestra contraseña en Base64, nos abrimos otra terminal y ejecutamos echo -n «mipassword» | base64
- Seguimos con mail from: bmarley@ragasys.eu para identificar al remitente del correo.
- Luego rcpt to: eclapton@ragasys.eu para identificar al destinatario del correo.
- data para indicar que se va a comenzar a enviar el mensaje.
- subject: Prueba postfix dovecot con protocolos seguros que permite especificar el asunto del mensaje, es obligatorio que este comando se envíe a continuación de data y hay que enviar una línea en blanco y después el contenido o cuerpo del mensaje, se finaliza con una línea que tenga sólo un punto.
- quit cierra la conexión cliente servidor.
- Desde otra terminal sacamos nuestro usuario y password en Base64:
- Ahora vamos a acceder al buzón del usuario al que le hemos mandado el correo y comprobamos que lo ha recibido.
- Iniciamos una conexión openssl al puerto POP3S 995 con, openssl s_client -connect mail.ragasys.eu:995 -crlf -quiet y como se puede ver iniciamos la conexión.
- Una vez establecida la conexión podemos empezar a enviar comandos al servidor dovecot.
- Empezamos con user eclapton para iniciar sesión en el servidor.
- Seguimos con pass contraseña para validar credenciales.
- list para ver los mensajes en el buzón del usuario, en este caso nos indica que hay 4 mensajes.
- retr 4 para ver el contenido del mensaje 4.
- quit cierra la conexión cliente servidor.
- Ahora, en un cliente de correo electrónico, vamos a configurar las dos cuentas de usuario.
- Creamos la cuenta de eclapton:
- Introducimos las credenciales:
- Configuramos el acceso al servidor para IMAP por protocolo seguro 993:
- Configuramos el acceso al servidor para SMTP por protocolo seguro 465:
- Aquí vemos que se ha configurado correctamente:
- Para el usuario bmarley hacemos lo mismo:
- Como podemos ver, aquí tenemos las dos cuentas configuradas sobre el cliente de Outlook, ya podremos empezar a enviar y recibir correos:
- Ahora mandaremos un correo de eclapton a bmarley y viceversa:
Saludos y espero que os resulte de ayuda 😉