Introducción al correo electrónico con Postfix
El correo electrónico es uno de los servicios más utilizados de Internet. Es un servicio descentralizado que permite el intercambio de mensajes y ficheros adjuntos a lo largo y ancho de la red.
Algunos de los protocolos que se utilizan son:
Protocolo | Descripción |
SMTP |
Se utiliza para transmitir correo electrónico entre el MUA y MTA o entre MTA y MTA. |
POP3 |
Se utiliza para consultar el correo almacenado en el MDA. Utilizado con conexiones intermitentes para descargar el correo. |
IMAP |
Protocolo de acceso a mensajes de Internet Se utiliza para consultar el correo almacenado en el MDA. Utilizado con conexiones permanentes. |
Y algunos de los elementos que se utilizan son:
Elemento | Descripción |
MUA |
Es el programa cliente que utiliza el usuario final para enviar y recibir correos. Puede ser una sencilla herramienta en la línea de comandos como |
MTA |
Es el servidor de correo electrónico que recoge los correos que envían sus usuarios y los entrega a los MTA de los destinatarios. |
MDA |
Es el componente que mantiene los buzones de los usuarios, para que sus MUAs se conecten y descarguen el correo recibido. Un MDA muy utilizado es Dovecot y aquí tenemos una introducción a Dovecot. |
¿Cómo funciona el correo electrónico?
Supongamos que un científico del Instituto Kurchátov quiere enviar un correo electrónico a un científico del CERN. Para simplificar llamaremos usuario-a
al emisor y usuario-b
al receptor, suponiendo que ambos utilizan el correo de la institución de la que forman parte sus direcciones de correo podrían ser usuario-a@nrcki.ru
y usuario-b@home.cern
.
De esta manera el proceso comienza cuando usuario-a@nrcki.ru
utilizando un MUA (programa cliente en el ordenador, web o tal vez aplicación móvil) escribe un correo en el que pone como destinatario a usuario-b@home.cern
.
El programa cliente no envía directamente el correo al destinatario, lo único que hace es transmitir con el protocolo SMTP
el correo al MTA (servidor de correo) que se encarga del correo saliente en el dominio que utiliza el emisor. Es decir, en nuestro caso el programa cliente de usuario-a@nrcki.ru
enviaría el correo al servidor SMTP
que tuviera configurado como servidor para el correo saliente, tal vez esmtp3.rrcki.ru
.
Antiguamente cualquier servidor de correo de Internet aceptaba correos de los programas clientes (aunque no fueran sus usuarios) y enviaba esos correos a los servidores destinatarios. Pero hoy en día esa configuración, conocida como open relay, no está aconsejada pues permite enviar correo indeseado (spam). Hoy en día los servidores de correo únicamente aceptan correos de los MUAs de sus propios usuarios.
Ahora viene un punto interesante, el servidor de correo esmtp3.rrcki.ru
examina el correo y descubre que el destinatario es usuario-b@home.cern
. ¿Quién se encarga del correo para el dominio home.cern
? ¿Cómo averiguarlo?
Pues con una consulta al DNS para encontrar los servidores que recogen el correo para un dominio de Internet. Para este propósito se utilizan los registros MX que permiten indicar qué servidor (o servidores) se encarga de esta función.
Podemos utilizar la herramienta host
para obtener los registros MX
de home.cern
del siguiente modo:
vcarceler@zvezda:~$ host -t MX home.cern
home.cern mail is handled by 20 cernmxgwlb.cern.ch.
vcarceler@zvezda:~$
En este caso hay un único servidor (cernmxgwlb.cern.ch
) así que se intentará abrir una conexión SMTP para entregar el correo electrónico. Pero resulta habitual listar varios servidores MX
para un dominio.
Por ejemplo, los servidores MX
para el dominio wikipedia.org
son:
vcarceler@zvezda:~$ host -t MX wikipedia.org
wikipedia.org mail is handled by 50 mx2001.wikimedia.org.
wikipedia.org mail is handled by 10 mx1001.wikimedia.org.
vcarceler@zvezda:~$
El servidor mx1001.wikimedia.org
está anunciado con prioridad 10
y mx2001.wikimedia.org
lo está con prioridad 50
. Los números bajos son prioritarios, así siempre se intentará entregar el correo a mx1001.wikimedia.org
y, si no está disponible, se intentará entregar el correo a mx2001.wikimedia.org
.
Cuando el correo ha sido entregado en el servidor del destinatario allí aguarda a que conecte el MUA para consultar el correo. El correo que ha sido entregado a los usuarios estará guardado en sus buzones, que pueden estar en formato mbox o Maildir.
Al servidor que almacena los buzones de los usuarios y los ofrece con los protocolos POP3
y/o IMAP
se le suele llamar MDA Mail Delivery Agent.
Cuando el destinatario conteste el correo los papeles se invertirán para transmitir la respuesta desde el CERN hasta el Instituto Kurchátov.
Instalación de Postfix
Como se ha visto el funcionamiento de un MTA depende del servicio DNS, así que se recomienda instalar Postfix una vez que estén debidamente configurados los registros MX
en el servidor DNS.
Tratándose de una aplicación empaquetada en los repositorios de la distribución su instalación no puede ser más sencilla:
apt update
apt install postfix
Durante la instalación Postfix mostrará algunas opciones de configuración:
Como se puede ver en el diálogo que muestra información sobre las diferentes opciones de configuración se puede optar por:
- No realizar ninguna configuración y mantener los ficheros que tuviera la máquina.
- Configurar Postfix como un servidor de internet, es decir uno que envía y recibe correo utilizando SMTP. Esta es la opción que nos interesa.
A continuación se puede seleccionar la opción de instalación:
Y finalmente es necesario indicar el dominio del que se encargará el MTA. En este caso, como ejemplo se ha configurado el dominio dominio1.test
así que las direcciones de los usuarios serán <usuario>@dominio1.test
.
Una vez instalado se podrá encontrar:
- La configuración en el directorio
/etc/postfix
. El fichero de configuración principal será/etc/postfix/main.cf
. - El fichero de registro
/var/log/mail.log
.
Prueba de correo local con GNU Mailutils
Es posible comprobar el funcionamiento del MTA utilizando el MUA mail
que forma parte del paquete mailutils
. Una vez instalado el paquete mailutils
será posible dar de alta dos usuarios (usuario1
y usuario2
) utilizando el comando adduser
.
De esta manera el primer usuario podrá enviar un correo al segundo:
root@smtp:/etc/postfix# su - usuario1
usuario1@smtp:~$ mail usuario2
Cc:
Subject: Un correo de usuario1 para usuario2.
Hola, usuario2
Esta es una prueba.
(Para terminar hay que pulsar CTRL+D y para abortar CTRL+C)
usuario1@smtp:~$
Tan pronto como se envía el correo electrónico se puede registrar el fichero /var/log/mail.log
para comprobar que postfix
lo ha recogido y lo ha dejado en el buzón del usuario2
.
root@smtp:/etc/postfix# cat /var/log/mail.log
Mar 6 08:52:43 smtp postfix/postfix-script[4872]: starting the Postfix mail system
Mar 6 08:52:43 smtp postfix/master[4874]: daemon started -- version 3.4.13, configuration /etc/postfix
Mar 6 10:47:42 smtp postfix/pickup[1141]: B6BCC18D42: uid=1001 from=<usuario1@smtp.lxd>
Mar 6 10:47:42 smtp postfix/cleanup[1634]: B6BCC18D42: message-id=<20210306104742.B6BCC18D42@smtp.lxd>
Mar 6 10:47:42 smtp postfix/qmgr[1142]: B6BCC18D42: from=<usuario1@smtp.lxd>, size=438, nrcpt=1 (queue active)
Mar 6 10:47:42 smtp postfix/local[1636]: B6BCC18D42: to=<usuario2@smtp.lxd>, relay=local, delay=0.03, delays=0.02/0.01/0/0, dsn=2.0.0, status=sent (delivered to mailbox)
Mar 6 10:47:42 smtp postfix/qmgr[1142]: B6BCC18D42: removed
root@smtp:/etc/postfix#
El usuario2
puede utilizar mail para leer el correo:
root@smtp:/etc/postfix# su - usuario2 usuario2@smtp:~$ mail "/var/mail/usuario2": 1 message 1 new >N 1 usuario1@smtp.lxd Sat Mar 6 10:47 17/522 Un correo de usuario1 para usuario2. ? 1 Return-Path: <usuario1@smtp.lxd> X-Original-To: usuario2@smtp.lxd Delivered-To: usuario2@smtp.lxd Received: by smtp.lxd (Postfix, from userid 1001) id B6BCC18D42; Sat, 6 Mar 2021 10:47:42 +0000 (UTC) To: <usuario2@smtp.lxd> Subject: Un correo de usuario1 para usuario2. X-Mailer: mail (GNU Mailutils 3.7) Message-Id: <20210306104742.B6BCC18D42@smtp.lxd> Date: Sat, 6 Mar 2021 10:47:42 +0000 (UTC) From: usuario1@smtp.lxd Hola, usuario2 Esta es una prueba. (Para terminar hay que pulsar CTRL+D y para abortar CTRL+C) ? quit Saved 1 message in /home/usuario2/mbox Held 0 messages in /var/mail/usuario2 usuario2@smtp:~$
En este proceso se puede comprobar:
- Que
postfix
deja los correos entregados en el buzón en formatombox
/var/mail/usuario2
- Que
mail
utiliza como buzón, también en formatombox
, el fichero/home/usuario2/mbox
Pero es posible cambiar la configuración tanto de postfix
como de mailutils
para que utilicen buzones Maildir
: Cambio de mbox a Maildir en Postfix y mailutils.
Otros clientes de correo electrónico.
Aunque el MUA mail
tiene muchas opciones y resulta muy práctico en los scripts probablemente no sea la opción preferida para la mayoría de los usuarios de correo electrónico. Estos usuarios estarán habituados a utilizar una interfaz gráfica como la de Thunderbird en el ordenador, K-9 Mail en sus dispositivos móviles o Roundcube en cualquier navegador.
La puerta hacia todas estas aplicaciones es un servidor Dovecot que pueda atender a los MUAs de los usuarios utilizando POP3
y/o IMAP
.
Se puede leer una introducción a Dovecot que demuestra cómo utilizarlo con Thunderbird en: Inroducción a Dovecot.
También se puede leer sobre un Roundcube en: Un MUA web: Roundcube.