Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: https://www.alcancelibre.org
Licencia Creative Commons
© 1999-2026 Joel Barrios Dueñas. Este manual se distribuye bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0). Usted es libre de compartir y adaptar el material bajo los siguientes términos: debe dar crédito al autor, no puede utilizarlo para fines comerciales y debe compartir las obras derivadas bajo la misma licencia. La licencia completa está disponible en https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.es.
El correo electrónico es uno de los servicios de red más antiguos y esenciales. Su funcionamiento se basa en una serie de protocolos estandarizados que, aunque hoy en día suelen estar enmascarados por interfaces gráficas modernas, operan mediante intercambios de texto simples entre clientes y servidores. Comprender estos protocolos fundamentales —SMTP, POP3 e IMAP— es el primer paso para cualquier administrador de sistemas que desee implementar, configurar o solucionar problemas en un servidor de correo, sirviendo como base indispensable para manuales más avanzados sobre Postfix y Dovecot.
A fin de poder realizar todas las pruebas correspondientes a cada protocolo, instale los paquetes nmap-ncat (que incluye ncat, un reemplazo moderno y versátil de telnet), dovecot y postfix.
Si utiliza AlmaLinux, Rocky Linux o Red Hat™ Enterprise Linux y derivados, ejecute lo siguiente:
dnf -y install s-nail nmap-ncat dovecot postfix
Si utiliza ALDOS, ejecute lo siguiente:
yum -y install s-nail nmap-ncat dovecot postfix
Edite el archivo /etc/login.defs:
vim /etc/login.defs
Localice MAIL_DIR. Encontrará el siguiente contenido:
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE Maildir/
Deshabilite MAIL_DIR y habilite en su lugar MAIL_FILE:
#QMAIL_DIR Maildir
#MAIL_DIR /var/spool/mail
MAIL_FILE Maildir/
Edite el archivo /etc/profile:
vim /etc/profile
Localice MAIL. Encontrará el siguiente contenido:
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`id -u`
UID=`id -ru`
fi
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
Cambie el valor de MAIL de /var/spool/mail/$USER a ${HOME}/Maildir:
if [ -x /usr/bin/id ]; then
if [ -z "$EUID" ]; then
# ksh workaround
EUID=`id -u`
UID=`id -ru`
fi
USER="`id -un`"
LOGNAME=$USER
MAIL="${HOME}/Maildir"
fi
Edite el archivo /etc/dovecot/conf.d/10-mail.conf:
vim /etc/dovecot/conf.d/10-mail.conf
Alrededor de la línea 30 del archivo /etc/dovecot/conf.d/10-mail.conf, establezca maildir:~/Maildir como valor de la opción mail_location.
# See doc/wiki/Variables.txt for full list. Some examples:
#
# mail_location = maildir:~/Maildir
# mail_location = mbox:~/mail:INBOX=/var/mail/%u
# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# <doc/wiki/MailLocation.txt>
#
mail_location = maildir:~/Maildir
Guarde el archivo y salga del editor de texto.
⚠️ Nota sobre permisos y buzones compartidos: Postfix crea automáticamente los buzones de entrada con permiso 0600 (
-rw-------), lo que impide su uso compartido por diseño. Esta configuración, a diferencia de la de otros agentes de transporte, resulta compatible de manera directa con Dovecot. Para detalles técnicos sobre conflictos de permisos con otros esquemas, puede consultar la documentación de Dovecot sobre el Error de operación chgrp no permitida.
Inicie y active el servicio dovecot.
Si utiliza AlmaLinux, Rocky Linux o Red Hat™ Enterprise Linux y derivados, ejecute lo siguiente:
systemctl enable --now dovecot
Si utiliza ALDOS o SysVinit, ejecute lo siguiente:
chkconfig dovecot on
service dovecot start
Postfix es el agente de transporte de correo (MTA, Mail Transport Agent) predeterminado y recomendado. Inicie y active el servicio postfix.
Si utiliza AlmaLinux, Rocky Linux o Red Hat™ Enterprise Linux y derivados, ejecute lo siguiente:
systemctl enable --now postfix
Si utiliza ALDOS o SysVinit, ejecute lo siguiente:
chkconfig postfix on
service postfix start
Esta sección describe los tres protocolos fundamentales del correo electrónico, ilustrando su operación básica a través de sesiones de ejemplo que utilizan ncat. Este enfoque pedagógico desvela la mecánica subyacente a las aplicaciones de correo modernas.
Es un protocolo estándar de Internet del Nivel de Aplicación utilizado para la transmisión de correo electrónico a través de una conexión TCP/IP. Constituye el único protocolo utilizado para la transmisión de correo electrónico a través de Internet. Está basado sobre texto simple y es relativamente sencillo. A lo largo de los años han sido muchas las personas que han editado o contribuido a sus especificaciones, entre las cuales están Jon Postel, Eric Allman, Dave Crocker, Ned Freed, Randall Gellens, John Klensin y Keith Moore.
Para determinar el servidor SMTP para un dominio dado, se utilizan los registros MX (Mail Exchanger) en la Zona de Autoridad correspondiente al ese mismo dominio contestado por un Servidor DNS. Después de establecerse una conexión entre el remitente (el cliente) y el destinatario (el servidor), se inicia una sesión SMTP, ejemplificada a continuación y dónde el escenario asume que existe una cuenta de usuario regular denominada «fulano» y dónde se utilizará el dominio predeterminado del anfitrión local.
La siguiente tabla muestra el intercambio de mandatos y respuestas de una sesión SMTP básica:
Cliente: |
$ ncat 127.0.0.1 25 |
Servidor: |
Connected to 127.0.0.1. |
Cliente: |
HELO localhost.localdomain |
Servidor: |
250 nombre.dominio Hello localhost.localdomain [127.0.0.1], pleased to meet you |
Cliente: |
MAIL FROM: |
Servidor: |
250 2.1.0 |
Cliente: |
RCPT TO: |
Servidor: |
250 2.1.5 |
Cliente: |
DATA |
Servidor: |
354 Enter mail, end with "." on a line by itself |
Cliente: |
Subject: Mensaje de prueba |
Servidor: |
250 2.0.0 k2IM2RjA003987 Message accepted for delivery |
Cliente: |
QUIT |
Servidor: |
221 2.0.0 nombre.dominio closing connection |
Servidor: |
Connection closed by foreign host.
|
Pulse CTRL + C para salir de ncat.
La descripción completa del protocolo original SMTP está definida en el RFC 821, aunque el protocolo utilizado hoy en día, también conocido como ESMTP (Extended Simple Mail Transfer Protocol), está definido en el RFC 2821. SMTP trabaja sobre TCP en el puerto 25.
Es un protocolo estándar de Internet del Nivel de Aplicación que recupera el correo electrónico desde un servidor remoto a través de una conexión TCP/IP iniciada desde un cliente local. El diseño de POP3 y sus predecesores permite a los usuarios recuperar el correo electrónico mientras están conectados en una red y manipular los mensajes recuperados sin necesidad de permanecer conectados. A pesar de que muchos clientes de correo electrónico incluyen soporte para dejar el correo en el servidor, todos los clientes de POP3 recuperan todos los mensajes y los almacenan como mensajes nuevos en la computadora o anfitrión utilizado por el usuario, eliminan los mensajes en el servidor y terminan la conexión.
Después de establecerse una conexión entre el cliente y el servidor, se inicia una sesión POP3, ejemplificada a continuación.
Cliente: |
$ ncat 127.0.0.1 110 |
Servidor: |
Connected to 127.0.0.1. |
Cliente: |
USER fulano |
Servidor: |
+OK |
Cliente: |
PASS contraseña |
Servidor: |
+OK Logged in. |
Cliente: |
STAT |
Servidor: |
+OK 1 728 |
Cliente: |
LIST |
Servidor: |
+OK 1 messages: |
Cliente: |
RETR 1 |
Servidor: |
+OK 728 octets |
Cliente: |
QUIT |
Servidor: |
+OK Logging out.
|
Pulse CTRL + C para salir de ncat.
POP3 está definido en el RFC 1939. POP3 trabaja sobre TCP en el puerto 110.
Es un protocolo estándar de Internet del Nivel de Aplicación utilizado para acceder hacia el correo electrónico almacenado en un servidor remoto a través de una conexión TCP/IP iniciada desde un cliente local.
La versión más reciente de IMAP es la 4 revisión 1 y está definida en el RFC 3501. IMAP trabaja sobre TCP en el puerto 143.
Fue diseñado por Mark Crispin en 1986 como una alternativa más moderna que resolviera las deficiencias del protocolo POP3. Las características más importantes de IMAP incluyen:
Después de establecerse una conexión entre el cliente y el servidor, se inicia una sesión IMAP, ejemplificada a continuación.
Cliente: |
$ ncat 127.0.0.1 143 |
Servidor: |
Connected to 127.0.0.1. |
Cliente: |
x LOGIN fulano contraseña |
Servidor: |
x OK Logged in. |
Cliente: |
x SELECT inbox |
Servidor: |
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft) |
Cliente: |
x FETCH 1 (flags body[header.fields (subject)]) |
Servidor: |
* 1 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (SUBJECT)] {30} |
Cliente: |
x FETCH 1 (body[text]) |
Servidor: |
* 1 FETCH (BODY[TEXT] {45} |
Cliente: |
x LOGOUT |
Servidor: |
* BYE Logging out
|
Pulse CTRL + C para salir de ncat.