El
email o correo
electrónico es un servicio de red que funciona sobre Internet, que permite enviar y recibir
mensajes (y todo tipo de documentos) de manera instantánea.
Básicamente, el email es un servicio que copia un fichero de una máquina a otra y
lo añade al buzón de correo
mailbox/maildir
del destinatario. Pero no es un asunto sencillo: el envío de un mensaje de correo es un
proceso largo y complejo, en el que intervienen varios programas trabajando en cadena para conseguir
que el email llegue a su destino.
Veamos en detalle cómo funciona el correo electrónico. Ann ([email protected])
quiere enviar un email a Bob ([email protected]). Gráficamente:
SMTP
Ann - Cliente A ----------------------> Servidor de correo A
(a.domain.com) (mail.domain.com)
|
|SMTP
|
POP3/IMAP V
Bob - Cliente B <---------------------- Servidor de correo B
(b.otherdomain.com) (mail.otherdomain.com)
El email llegará a su destino en tres pasos:
- del Cliente A al servidor de correo A
El correo se crea en el Cliente A con un MUA (mutt), y los MTA (exim)
se encargan de llevarlo al servidor de correo A (protocolo SMTP).
- Ann escribe el email en el MUA (mutt) y pulsa Enviar.
- el MUA (mutt) pasa el email al MTA (exim), que lo pone en la cola
de correo /var/spool/exim, contacta con el MTA (exim) del servidor de
correo A (protocolo SMTP) y se lo pasa.
- el MTA (exim) del servidor de correo A recoge el email y lo pone en la cola
/var/spool/exim.
- del servidor de correo A al servidor de correo B
De transportar el email entre servidores se encargan los MTA (exim) y el protocolo SMTP.
- el MTA (exim) del servidor de correo A consulta en el DNS el
registro MX
del dominio otherdomain.com, contacta con el MTA (exim) del servidor
de correo B (protocolo SMTP) y le pasa el email.
- el MTA (exim) del servidor de correo B lo envía al
Agente Intermediario (MailScanner), que lo pasa por un anti-spam (SpamAssassin)
y por un anti-virus (ClamAV), que marcan los correos sospechosos con unas cabeceras de
advertencia (Spam-Status: Yes o ClamAV-Alert: INFECTED). El Agente Intermediario
(MailScanner) reenvía los correos analizados al MTA (exim), que se los pasa
al MDA (procmail).
- el MDA (procmail) se encarga de repartir el correo: si no hay incidencias,
archivará el email en el buzón del usuario /var/spool/mail/bob.
Si el anti-spam (SpamAssassin) o el anti-virus (ClamAV) han detectado
un positivo, lo archivará en ~/mail/spams o en ~/mail/virus
(o lo borrará).
- del servidor de correo B al Cliente B
De repartir el correo se encargan el cliente-servidor POP3/IMAP y el MUA (mutt).
- usando un cliente POP3/IMAP en modo demonio (fetchmail):
- el demonio cliente POP3/IMAP (fetchmail) contacta con el servidor POP3/IMAP
(dovecot) y le pide el correo nuevo.
- el servidor POP3/IMAP (dovecot) recoge el email del buzón
/var/spool/mail/bob y se lo entrega al cliente POP3/IMAP
(fetchmail), éste se lo pasa al MTA (exim) y éste al
MDA (procmail), que lo archiva en el buzón /var/spool/mail/bob.
- el Mail Notifier (xbiff) avisa a Bob de que tiene un email nuevo.
- Bob arranca el MUA (mutt), que recoge el email del buzón
/var/spool/mail/bob. Bob lo lee y el email se guarda en
/home/bob/mail/mbox.
- usando como cliente POP3/IMAP el MUA (mutt):
- Bob arranca el MUA (mutt) que, actuando como cliente POP3/IMAP,
contacta con el servidor POP3/IMAP (dovecot) y le pide el correo nuevo.
- el servidor POP3/IMAP (dovecot) recoge el email del buzón
/var/spool/mail/bob y se lo entrega al MUA (mutt), que lo coloca
en el buzón /var/spool/mail/bob. Una vez que Bob lo lea, el email se
almacena en /home/bob/mail/mbox.
- usando un cliente POP3/IMAP webmail (IMP/SquirrelMail):
Si el servidor de correo B tiene instalado Apache, puede instalarse un cliente POP3/IMAP
con interfaz web (webmail).
Atención
En principio, los usuarios del servidor de correo son usuarios reales de la máquina,
y en su home tienen el buzón de correo mailbox/maildir (aunque algunos
MTA permiten crear usuarios virtuales).
Como vemos, en el proceso pueden intervenir hasta once tipos de programas (aunque muchas
aplicaciones pueden desempeñar varias funciones a la vez):
- MUA
(Mail User Agent, Agente de Usuario de Correo,
paquetes virtuales imap-client mail-reader): los MUA hacen dos cosas: envían
el correo saliente al MTA y recogen el correo entrante, ya sea del buzón local o
directamente del servidor POP3/IMAP (son clientes POP3/IMAP).
- MTA
(Mail Transport Agent, Agente de Transporte de Correo,
paquete virtual mail-transport-agent).
- Agente Intermediario: es un interfaz entre el MTA y los anti-spam y anti-virus.
- MDA
(Mail Delivery Agent, Agente de Distribución de Correo): se encarga de
repartir el correo y decidir el destino de cada email.
- Anti-spam.
- Anti-virus.
- ClamAV
(Clam AntiVirus, clamav.net, paquete clamav):
escanea los archivos adjuntos, disponiendo de una base de datos actualizable on-line.
- Servidor POP3/IMAP (paquete virtual pop3-server/imap-server):
si usamos POP3 el correo se baja a nuestra máquina y se elimina del servidor. Si usamos
IMAP los mails permanecen en el servidor.
- Cliente POP3/IMAP en modo demonio.
- Cliente POP3/IMAP webmail:
crearemos el enlace /var/www/webmail apuntando al directorio donde se instale la
aplicación (/usr/share/<aplicación>), de manera que accederemos a ella
tecleando www.dominio.com/webmail
- SquirrelMail
(squirrelmail.org,
paquete squirrelmail): cliente IMAP con interfaz web, necesita Apache con soporte para PHP.
- se instala en /usr/share/squirrelmail.
- archivo de configuración: /etc/squirrelmail/config.php
- comando para configurarlo:
- IMP
(horde.org, paquete imp4): cliente POP3/IMAP
con interfaz web, necesita Apache con soporte para PHP.
- se instala en /usr/share/horde3
- IlohaMail
(ilohamail.org, paquete ilohamail):
cliente POP3/IMAP con interfaz web, necesita Apache con soporte para PHP.
- se instala en /usr/share/IlohaMail
- Mail Notifier
(Notificador de correo).
- Listas de correo:
se utilizan para enviar el mismo email amuchas personas. Si enviamos un correo a la dirección
de la lista, llegará a todos los inscritos en ella.
- Mailman
(list.org,
paquete mailman): programa escrito en Python que permite crear y administrar listas
de correo vía web (necesita Apache).
Y tres protocolos:
- SMTP
(Simple Mail Transfer Protocol): puerto 25 TCP (SMTPs 465 TCP).
- POP3
(Post Office Protocol): puerto 110 TCP (POP3s 995 TCP).
- IMAP
(Internet Message Access Protocol): puerto 143 TCP (IMAPs 993 TCP).