Sondeo

¿Qué opinas de ALDOS?

¿Has probado ALDOS 1.4?

  •  Si
  •  No
Este sondeo tiene 3 preguntas más.
Resultados
Más sondeos | 331 votos
· Junio y Julio, Curso Global de Servidores con CentOS 6.
· Taller de programación de Python.
· Curso de programación de PHP.
· Prueba ALDOS 1.4.4. Nuestro sistema operativo para escritorio.

Introducción a los protocolos de correo electrónico.

Autor: Joel Barrios Dueñas
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-2013 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 con el mandato yum los paquetes netcat (nc), dovecot y postfix o bien sendmail.

Si elige utilizar sendmail, ejecute lo siguiente:

yum -y install mailx nc dovecot sendmail

Si elige utilizar postfix, ejecute lo siguiente:

yum -y install mailx nc dovecot postfix

Si utiliza CentOS 5 o Red Hat Enterprise Linux 5, omita el siguiente paso. Si utiliza CentOS 6 o Red Hat Enterprise Linux 6, 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 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. Si se va a utilizar Postfix se puede omitir los dos siguientes pasos.

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.

Nota.

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:

Mar 21 22:31:45 mail dovecot: pop3(fulano): Error: mkdir(/home/fulano/mail/.imap/INBOX) failed: Operation not permitted
Mar 21 22:31:45 mail dovecot: pop3(fulano): Error: Couldn't open INBOX: Internal error occurred. Refer to server log for more information. [2013-03-21 22:31:45]
Mar 21 22:31:45 mail dovecot: pop3(fulano): Couldn't open INBOX top=0/0, retr=0/0, del=0/0, size=0

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.

Si se utiliza Postfix como MTA predeterminado, es innecesario definir valor alguno en las opciones mail_privileged_group y mail_access_groups pues los buzones de entrada se crean con permiso 0600 y por tanto carecen de permisos de lectura y escritura para grupo.

Guarde el archivo y salga del editor de texto.

Inicie y active el servicio dovecot ejecutando:

service dovecot start
chkconfig dovecot on

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 (es el MTA predeterminado en CentOS 6 y Red Hat Enterprise Linux 6) e inicie el servicio sendmail:

service postfix stop
chkconfig postfix off
service sendmail start
chkconfig sendmail on

Si eligió utilizar postfix en lugar de sendmail, detenga este último> (es el MTA predeterminado en CentOS 5 y Red Hat Enterprise Linux 5) e inicie el servicio postfix:

service sendmail stop
chkconfig sendmail off
service postfix start
chkconfig postfix on

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. Éste es, de hecho, el único protocolo utilizado para la transmisión de correo electrónico a través de Internet. Es un protocolo basado sobre texto y relativamente simple, donde se especifica un destinatario o múltiples destinatarios, en un mensaje que es transferido. 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.

Cliente:  $ nc 127.0.0.1 25
Servidor:  Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 nombre.dominio ESMTP Sendmail 8.13.1/8.13.1; Sat, 18 Mar 2006 16:02:27 -0600
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
From: fulano@localhost.localdomain
To: fulano@localhost.localdomain

Hola. Éste es un mensaje de prueba.
Adios.
.

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 desde un cliente local. El diseño de POP3 y sus predecesores es permitir 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:  $ nc 127.0.0.1 110
Servidor:  Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK dovecot ready.
Cliente:  USER fulano
Servidor:  +OK
Cliente:  PASS clave de accceso
Servidor:  +OK Logged in.
Cliente:  STAT
Servidor:  +OK 1 728
Cliente:  LIST
Servidor:  +OK 1 messages:
1 728
.
Cliente:  RETR 1
Servidor:  +OK 728 octets
Return-Path: <fulano@localhost.localdomain>
Received: from localhost.localdomain (localhost.localdomain [192.168.1.254])
         by localhost.localdomain (8.13.1/8.13.1) with SMTP id k2IM2RjA003987
         for <fulano@localhost.localdomain>; Sat, 18 Mar 2006 16:03:21 -0600
Date: Sat, 18 Mar 2006 16:02:27 -0600
Message-Id: <200603182203.k2IM2RjA003987@localhost.localdomain>
Subject: Mensaje de prueba
From: fulano@localhost.localdomain
To: fulano@localhost.localdomain
Status: O
Content-Length: 43
Lines: 2
X-UID: 202
X-Keywords:

Hola. Éste es un mensaje de prueba.
Adios.
.
Cliente:  QUIT
Servidor:  +OK Logging out.
Connection closed by foreign host.

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 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 mensajes, por partes o completos, conforme se necesite.
  • 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.
  • A través de banderas definidas en el protocolo, permite vigilar la información de estado de los mensajes de correo electrónico que se mantengan en el servidor. 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 estos mensajes entre distintas cuentas de correo electrónico. Esta característica también permite al servidor proporcionar acceso hacia los carpetas públicas y las 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:  $ nc 127.0.0.1 143
Servidor:  Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
* OK dovecot ready.
+OK dovecot ready.
Cliente:  x LOGIN fulano clave de acceso
Servidor:  x OK Logged in.
Cliente:  x SELECT inbox
Servidor:  * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 1 EXISTS
* 0 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1100569382] UIDs valid
* OK [UIDNEXT 203] Predicted next UID
x OK [READ-WRITE] Select completed.
Cliente:  x FETCH 1 (flags body[header.fields (subject)])
Servidor:  * 1 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (SUBJECT)] {30}
Subject: Mensaje de prueba

)
x OK Fetch completed.
.
Cliente:  x FETCH 1 (body[text])
Servidor:  * 1 FETCH (BODY[TEXT] {45}
Hola. Éste es un mensaje de prueba.
Adios.
)
x OK Fetch completed.
Cliente:  x LOGOUT
Servidor:  * BYE Logging out
x OK Logout completed.
Connection closed by foreign host.

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

Última Edición 28/03/2013, 15:49|4,869 Accesos Ver la versión para imprimir