Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.
Introducción a los protocolos de correo electrónico.
Correo electrónico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org
Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1
© 1999-2016 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos.
Introducción.
Preparativos.
A fin de poder realizar todas las pruebas correspondientes a cada protocolo, instale los paquetes telnet, dovecot y postfix o bien sendmail.
Ejecute lo siguiente si elige utilizar sendmail:
yum -y install mailx telnet dovecot sendmail |
Ejecute lo siguiente si elige utilizar postfix:
yum -y install mailx telnet dovecot postfix |
Omita el siguiente paso si utiliza CentOS 5 o Red Hat Enterprise Linux 5
Edite el archivo /etc/dovecot/conf.d/10-mail.conf si utiliza ALDOS 1.4, CentOS 6 o Red Hat™ Enterprise Linux 6 y versiones posteriores de éstos:
vim /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 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 = mbox:~/mail:INBOX=/var/mail/%u
|
Si se va a utilizar Sendmail como MTA predeterminado, es importante definir un grupo de acceso de correo en la configuración de Dovecot.
Alrededor de la línea 115 del archivo /etc/dovecot/conf.d/10-mail.conf, localice la opción mail_privileged_group, descomente ésta y defina como valor el grupo mail:
# Group to enable temporarily for privileged operations. Currently this is
# used only with INBOX when either its initial creation or dotlocking fails.
# Typically this is set to "mail" to give access to /var/mail.
mail_privileged_group = mail
|
Alrededor de la línea 122 del archivo /etc/dovecot/conf.d/10-mail.conf, localice la opción mail_access_groups, descomente ésta y defina también como valor el grupo mail:
# Grant access to these supplementary groups for mail processes. Typically
# these are used to set up access to shared mailboxes. Note that it may be
# dangerous to set these if users can create symlinks (e.g. if "mail" group is
# set here, ln -s /var/mail ~/mail/var could allow a user to delete others'
# mailboxes, or ln -s /secret/shared/box ~/mail/mybox would allow reading it).
mail_access_groups = mail
|
Se requiere que los usuarios locales pertenezcan al grupo mail para que lo anterior represente un problema de seguridad.
![]() |
Es importante señalar Postfix crea automáticamente los buzones de entrada con permiso 0600 (-rw-------) y por tanto impide utilizar buzones de entrada compartidos, mientras que Sendmail lo hace con permiso 0660 (-rw-rw----) y por tanto permite utilizar buzones de entrada compartidos. En ambos casos los permisos predeterminados de los buzones de entrada sólo se pueden cambiar modificando y compilando de nuevo el código fuente. Si se utiliza Sendmail como MTA predeterminado, debido al permiso 0660 con el que son creados los buzones de entrada, a Dovecot le será imposible generar automáticamente las carpetas e índices IMAP, pues éste fallará al copiar el grupo al que pertenece el buzón de entrada cuando éste tiene permisos de lectura y escritura para grupo. Por lo tanto se obtendrían continuamente los siguientes errores en la bitácora /var/log/maillog:
Es por ésto que, en el caso de utilizar Sendmail como MTA predeterminado, se requiere configurar que Dovecot tenga privilegios de acceso sobre el grupo mail. De otro modo el administrador del sistema estaría obligado a crear manualmente los directorios ~/mail/.imap/INBOX de todos los usuarios locales o cambiar manualmente los permisos de todos los buzones de entrada de 0660 a 0600 y repetir cualquiera de las dos operaciones cada vez que se genere un nuevo usuario. |
Guarde el archivo y salga del editor de texto.
Inicie y active el servicio dovecot ejecutando:
service dovecot start |
Establezca sendmail o postfix, como agente de transporte de correo (MTA, Mail Transport Agent) predeterminado del sistema, utilizando el mandato alternatives, del siguiente modo:
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: 2
|
Si eligió utilizar sendmail en lugar de postfix, detenga este último —MTA predeterminado en CentOS 6 y Red Hat Enterprise Linux 6 y versiones posteriores de éstos— e inicie el servicio sendmail:
service postfix stop |
Si eligió utilizar postfix en lugar de sendmail, detenga este último> —MTA predeterminado en CentOS 5 y Red Hat Enterprise Linux 5— e inicie el servicio postfix:
service sendmail stop |
En todo momento podrá conmutar de nuevo entre Sendmail o Postfix, como MTA predeterminado del sistema, utilizando este mismo procedimiento.
Protocolos utilizados.
SMTP (Simple Mail Transfer Protocol).
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. Es 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 las especificaciones de SMTP, 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.
Cliente: |
$ telnet 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:<fulano@localhost.localdomain> |
Servidor: |
250 2.1.0 <fulano@localhost.localdomain>... Sender ok |
Cliente: |
RCPT TO:<fulano@localhost.localdomain> |
Servidor: |
250 2.1.5 <fulano@localhost.localdomain>... Recipient ok |
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.
|
La descripción completa del protocolo original STMP 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.
POP3 (Post Office Protocol version 3).
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: |
$ telnet 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.
|
POP3 está definido en el RFC 1939. POP3 trabaja sobre TCP en el puerto 110.
IMAP (Internet Message Access Protocol).
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:
- Soporte para los modos de operación conectado (connected) y desconectado (disconnected), permitiendo a los clientes de correo electrónico permanezcan conectados el mismo tiempo que su interfaz permanezca activa, descargando los mensaje, por partes o completos según se requiera.
- A diferencia de POP3, permite accesos simultáneos desde múltiples clientes y proporciona los mecanismos necesarios para que éstos detecten los cambios hechos por otro cliente de correo electrónico que esté conectado de manera concurrente al mismo buzón de correo.
- Permite a los clientes obtener individualmente cualquier parte MIME —acrónimo de Multi-Purpose Internet Mail Extensions o Extensiones de correo de Internet de propósitos múltiples—, así como también obtener porciones de las partes individuales o bien los mensajes completos.
- Permite vigilar la información de estado de los mensajes de correo electrónico que se mantengan en el servidor a través de banderas definidas en el protocolo. Por ejemplo, si el estado del mensaje es leído, no leído, respondido o eliminado.
- Incluye soporte para múltiples buzones de correo electrónico, permitiendo crear, renombrar o eliminar mensajes de correo electrónico presentes en el servidor dentro de carpetas y mover éstos mensajes entre distintas cuentas de correo electrónico. Esta característica también permite al servidor proporcionar acceso hacia carpetas públicas y compartidas.
- Incluye soporte para realizar búsquedas del lado del servidor a través de mecanismos que permiten obtener resultados de acuerdo a varios criterios, permitiendo evitar que los clientes de correo electrónico tengan que descargar todos los mensajes desde el servidor.
- Las especificaciones del protocolo IMAP definen un mecanismo explícito mediante el cual puede ser mejorada su funcionalidad a través de extensiones. Un ejemplo es la extensión IMAP IDLE, la cual permite sincronizar ente el servidor y el cliente a través de avisos.
Después de establecerse una conexión entre el cliente y el servidor, se inicia una sesión IMAP, ejemplificada a continuación.
Cliente: |
$ telnet 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
|
Referencias.
http://www.ietf.org/rfc/rfc2222.txt
http://www.ietf.org/rfc/rfc821.txt
http://www.ietf.org/rfc/rfc2821.txt
http://www.ietf.org/rfc/rfc1939.txt
http://www.ietf.org/rfc/rfc3501.txt