Configuración del VPS para correo electrónico autoalojado

Síntesis del proceso de instalación de servicios de correo en un VPS

1. Preparación del sistema

  • Actualizar el sistema e instalar paquetes base.
  • Configurar el hostname del sistema para que coincida con el dominio de correo (ej. mail.dominio.com).
  • Asegurar conexión estable y que los puertos (25, 587, 993, 143, 110, 995) estén accesibles (firewall abierto).

2. Instalación de componentes en orden

2.1. Postfix (MTA – Mail Transfer Agent)

  • Paquete: postfix
  • Configuración durante la instalación: seleccionar Internet Site y escribir el nombre del sistema de correo (mail.dominio.com).
  • Posterior configuración:
    • main.cf: definir myhostnamemydomaininet_interfaceshome_mailbox = Maildir/, etc.
    • Activar autenticación SASL (usando Dovecot) y configuración de restricciones.
    • master.cf: descomentar y ajustar el servicio submission (puerto 587) con opciones SASL.

2.2. Dovecot (IMAP/POP3)

  • Paquetes: dovecot-coredovecot-imapddovecot-pop3ddovecot-lmtpd (opcional).
  • Configuración:
    • dovecot.conf: definir protocols = imap pop3listen = *.
    • 10-auth.conf: deshabilitar texto plano (opcional en pruebas), mecanismos plain login, incluir auth-system.conf.ext (autenticación PAM).
    • 10-mail.confmail_location = maildir:~/Maildir.
    • 10-master.conf: definir socket Unix para que Postfix hable con Dovecot (/var/spool/postfix/private/auth).
    • 10-ssl.conf (más adelante): configurar certificado SSL.

2.3. Autenticación y socket de comunicación

  • Punto crítico: Dovecot debe crear el socket /var/spool/postfix/private/auth con permisos adecuados (usuario postfix, grupo postfix). Sin esto, Postfix no puede autenticar usuarios.
  • Verificación: sudo ls -la /var/spool/postfix/private/auth. Si no existe, revisar la sección service auth en 10-master.conf y reiniciar Dovecot.

2.4. SSL/TLS con Let’s Encrypt

  • Instalar Certbot: certbot.
  • Obtener certificado: detener servicios que usen puerto 80/443, ejecutar certbot certonly --standalone -d mail.dominio.com.
  • Configurar Postfix: en main.cf apuntar smtpd_tls_cert_file y smtpd_tls_key_file a los archivos generados.
  • Configurar Dovecot: crear 10-ssl.conf con ssl = required, y las mismas rutas de certificado.
  • Problema común: Dovecot tiene ssl = no por defecto y no levanta los puertos SSL (993, 995). Es obligatorio establecer ssl = required en dovecot.conf o en 10-ssl.conf para que los listeners imaps y pop3s funcionen.

2.5. OpenDKIM (firmado de correos)

  • Paquetes: opendkimopendkim-tools.
  • Generar claves: para el dominio (smart-solve.com) con selector (ej. mail).
  • Crear archivos: key.tablesigning.tabletrusted.hosts.
  • Configurar Postfix: agregar el milter (smtpd_milters = inet:127.0.0.1:8891).
  • Registro DNS: publicar el TXT DKIM obtenido (mail._domainkey).

3. Puntos críticos a los que prestar atención (lecciones aprendidas)

PasoProblema típicoSíntomaSolución
PostfixServicio systemd corrupto (ejecuta /bin/true)systemctl status postfix muestra active (exited), pero el proceso master no corre.Iniciar manualmente con sudo /usr/sbin/postfix start o arreglar el archivo de servicio.
Autenticación SASLPostfix no anuncia AUTHNo aparece 250-AUTH PLAIN LOGIN en EHLO; la autenticación falla.Verificar smtpd_sasl_auth_enable = yes, asegurar que el socket de Dovecot existe y está accesible para postfix.
Socket DovecotNo se crea /var/spool/postfix/private/authLogs de Postfix: fatal: no SASL authentication mechanisms.Revisar la sección service auth en 10-master.conf, crear el directorio con permisos y reiniciar Dovecot.
SSL en DovecotPuertos 993/995 no escuchannetstat -tlnp no muestra 993.ssl = no en la configuración global; forzar ssl = required en dovecot.conf o en 10-ssl.conf y reiniciar.
Certificado SSLPermisos o rutas incorrectasDovecot dice “Can’t load SSL certificate: The certificate is empty”.Verificar que el certificado exista y que el usuario dovecot tenga permisos de lectura. Usar setfacl o cambiar permisos del directorio /etc/letsencrypt/....
SPF/DKIM/DMARCCorreos caen en spamGmail o proveedores los entregan en carpeta spam.Publicar los registros DNS correctamente y esperar propagación; monitorear con Google Postmaster Tools.
UsuariosLos buzones no se crean automáticamenteEl usuario del sistema no tiene carpeta Maildir.Crear manualmente ~/Maildir con subcarpetas cur, new, tmp y asignar propietario.

4. Verificación y pruebas recomendadas

  • Postfix: sudo netstat -tlnp | grep :25 y :587.
  • Dovecot: sudo netstat -tlnp | grep :993 y :143.
  • Autenticación: telnet localhost 587, EHLO, AUTH LOGIN (manual con base64).
  • SSL: openssl s_client -connect localhost:993 -quiet.
  • Envío: swaks o mail comandos para probar flujo local y externo.
  • DNS: Verificar propagación con dig o herramientas web.

5. Orden resumido de instalación

  1. Preparar sistema (hostname, firewall, actualizaciones).
  2. Instalar Postfix (configurar Internet Site).
  3. Instalar Dovecot (IMAP/POP3) y configurar autenticación y socket.
  4. Probar autenticación (telnet, swaks) sin SSL para confirmar SASL.
  5. Instalar SSL con Let’s Encrypt y configurar Postfix/Dovecot.
  6. Instalar OpenDKIM, generar claves y configurar milter.
  7. Crear usuarios del sistema, sus buzones Maildir.
  8. Configurar registros DNS (SPF, DKIM, DMARC).
  9. Monitorear y calentar la IP (envíos graduales).

Este esquema resume la experiencia práctica y los puntos donde se produjeron los mayores contratiempos (especialmente el socket de autenticación y la activación de SSL en Dovecot)

Comments

Deja un comentario

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