Imprimir

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).

4 Comentarios en “Servidor de correo electrónico en Linux”

  • Rodrigo dice:

    Cual es el demonio y puertos de servidor antispam, tftp, web, ntp

  • dulce dice:

    hola
    como puedo configurar un servidor de correo electronico en linux paso por paso soy principiante de antemano
    muchas gracias

  • karla dice:

    hola como se configura un servidor de correo de linux

  • Alexa dice:

    hola Buenas tardes, quisiera saber que tengo que hacer para poder mandar correos desde php con un servidor linux, solo que donde tengo mi aplicacion php no es el mismo servidor que quiero utilizar para mandar correo, son dos servidores linux, solo que uno es para poner mi aplicacion, y el otro es mi servidor para correo. ayudenmeeeeee

Deja un comentario