0

Instalación y configuración de un Servidor de correos en Ubuntu Server 24.04 LTS con SMTPS, POP3S e IMAPS

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 😉

Jose Ramon Ramos Gata

Técnico Superior STI

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.