- Estréllate y Arde - https://www.estrellateyarde.org -

Servidor de correo electrónico en Linux

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.

Equivalencias en Windows: MS-Exchange.

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.

Recursos

Veamos en detalle cómo funciona el correo electrónico. Ann (ann@domain.com) quiere enviar un email a Bob (bob@otherdomain.com). 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:

  1. 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.
  2. 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á).
  3. del servidor de correo B al Cliente B

    De repartir el correo se encargan el cliente-servidor POP3/IMAP y el MUA (mutt).

    1. 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.
    2. 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.
    3. 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):

  1. 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).
  2. MTA (Mail Transport Agent, Agente de Transporte de Correo, paquete virtual mail-transport-agent).
    • Exim (exim.org, paquete exim4): actúa como MTA y MDA.

      - archivo de configuración: /etc/exim4/exim.conf.template
      - script de inicio: etc/init.d/exim4
      - comando para configurarlo:

      # dpkg-reconfigure exim4-config
    • Sendmail, Postfix, Qmail.
  3. Agente Intermediario: es un interfaz entre el MTA y los anti-spam y anti-virus.
  4. MDA (Mail Delivery Agent, Agente de Distribución de Correo): se encarga de repartir el correo y decidir el destino de cada email.
  5. Anti-spam.
  6. Anti-virus.
    • ClamAV (Clam AntiVirus, clamav.net, paquete clamav): escanea los archivos adjuntos, disponiendo de una base de datos actualizable on-line.
  7. 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.
    • dovecot (dovecot.org, paquete dovecot-pop3db / dovecot-imapd): servidor POP3/IMAP seguro.

      - archivo de configuración: /etc/dovecot.conf
      - para activar los protocolos cifrados POP3s/IMAPs:

      protocols = pop3s imaps

      - script de inicio: etc/init.d/dovecot

  8. Cliente POP3/IMAP en modo demonio.
  9. 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:

      # squirrelmail-configure
    • 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

  10. Mail Notifier (Notificador de correo).
  11. 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:

  1. SMTP (Simple Mail Transfer Protocol): puerto 25 TCP (SMTPs 465 TCP).
  2. POP3 (Post Office Protocol): puerto 110 TCP (POP3s 995 TCP).
  3. IMAP (Internet Message Access Protocol): puerto 143 TCP (IMAPs 993 TCP).

Article printed from Estréllate y Arde: https://www.estrellateyarde.org

URL to article: https://www.estrellateyarde.org/discover/servidor-email-en-linux

Copyright © 2010 Estrellate y Arde