Xunta de Galicia


Powered by MediaWiki

Servidor de correo Postfix (MTA)

MTA, MUA, MDA. Un chisco de teoría sobre os sistemas de correo

Nos sistemas GNU/Linux, os traballos relacionados co envío e recepción de mensaxes de correo electrónico están divididos entre unha serie de axentes. Mantendo a filosofía de que cada ferramenta faga un só traballo, e o faga o mellor posíbel, os diversos aplicativos que interveñen no tránsito do correo electrónico sitúanse en diferentes papeis.

O MTA. O “Mail Transport Agent”, “Axente de Transporte de Correo” recibe o correo novo e ten por función entregalo no MTA do servidor de destino. Entre eles, os MTA empregan o protocolo SMTP, polo que tamén son coñecidos como servidores SMTP, ou servidores de correo saínte.

Unha vez que o correo chega ao MTA do servidor de destino, é entregado ao MDA, “Mail Delivery Agent”, “Axente de Distribución de Correo”, que é o responsábel de almacenar o correo ata que a persoa o solicite. Hai dous protocolos polos que a persoa usuaria pode recoller os correos dun MDA: POP3 e IMAP. Por isto, moitas veces son chamados servidores POP3 ou servidores IMAP.

Finalmente, a persoa usuaria emprega un programa chamado MUA, “Mail User Agent”, “Axente do usuario de correo”, co que pode examinar o contido do seu MDA, e recollelo. Entre os MUA máis estendidos, Thunderbird, Evolution, ou Mutt.

Mta1.png
Ilustración 1: Esquema de MUA - MTA - MDA

Este esquema sinxelo pódese complicar con outros actores necesarios, e con outras responsabilidades tamén necesarias. Por exemplo, o software encargado da detección, filtración e marcado do correo lixo, ou coa necesidade de validación segura en cada un dos pasos. Nas seguintes páxinas imos seguir o proceso de configuración dun MTA, Postfix, nun caso sinxelo para despois complicar o seu contorno co engadido do SpamAssassin para o control do spam.

Licenza

Postfix distribúese baixo os termos da IBM Public License, versión 1.0 – Secure Mailer.

Resumo sobre a comunidade de desenvolvemento

O seu desenvolvemento comezou en 1998, dentro de IBM, polo seu desenvolvedor principal, Wietse Zweitze Venema. A intención era ser doado de administrar, rápido e seguro. E, sobre todo, empregar os mesmos protocolos que o estándar Sendmail na comunicación con terceiras partes. A pesares de ser un proxecto “persoal”, supuxo unha forte influencia na estratexia Open Source de IBM. Á vista de todos está o éxito desta iniciativa, comezada hai dez anos, e que foi vital para o fortalecemento e consolidación de GNU/Linux, e o ecosistema FLOSS como fornecedor para solucións corporativas confiábeis. Neste sentido, na páxina do proxecto Postfix hai un apartado dedicado a recoller artigos e outras referencias na prensa sobre IBM, o Open Source e Postfix. De lectura máis que recomendábel.

Instalación de Postfix

O paquete que temos que instalar chámase “postfix”. Durante o proceso de post-instalación temos que responder a unha serie de preguntas: A primeira, se queremos que o noso servidor se comporte como unha máquina conectada a Internet, ou só empregar o correo limitadamente. Respostamos “Sitio de Internet”. Despois temos que darlle o nome do dominio que vai atender o noso SMTP. Para facer algunhas das probas vamos empregar un MUA sinxelo chamado “mailx”, que tamén teremos que instalar.

Configuración de Postfix

Lembremos que para que o exemplo que imos a desenvolver nestas liñas sexa funcional é preciso que exista un servidor DNS que conteña un rexistro MX que apunte ó enderezo IP no que se encontra o Postfix que estamos a instalar. No capítulo anterior explicouse o básico para chegar a esa configuración. Tamén precisamos que o servidor no que vai residir Postfix teña acceso a dúas redes, Internet e máis unha rede local. Ten que ter, polo tanto, dúas tarxetas de rede.

Para verificar que a instalación predeterminada está funcionando correctamente, imos facer unha proba de envío local. Primeiro creamos un usuario ou usuaria novo no sistema, que será o que reciba o correo:

useradd -m -s /bin/bash pat

passwd pat


Unha vez creado, ímoslle mandar un correo, empregando telnet:

telnet localhost 25


Habemos recibir unha resposta como:

Trying 127.0.0.1... 

Connected to localhost. 

Escape character is '^]'. 

220 servidor ESMTP Postfix (Ubuntu) 


Despois vamos escribindo as seguintes liñas, dándolle a Enter despois de cada unha. Con cada “enter”, o servidor vainos ir dando mensaxes de conformidade:

ehlo localhost

mail from: root@localhost

rcpt to: pat@localhost

data

Subject: Un correíño de probas

Bo día.

Agardamos que o pases ben.

O admin.

. 

quit


Atención ao punto da penúltima liña. Hai que escribir só un punto e despois darlle a “Enter”. É a forma de indicar a fin da mensaxe. Despois do último comando voltamos á liña de ordes normal. Cambiamos ao usuario/a “pat” e comprobamos o correo:

su – pat

mail


Entramos no MUA de liña de ordes<ref name="ftn12">Nun escritorio Ubuntu non teremos ningún Axente de usuario de Correo (“Mail User Agent”), e teremos que instalar o paquete mailx.</ref>, e atopamos unha lista de e-mails recibidos:

Mail version 8.1.2 01/15/2001. Type ? for help. 

"/var/mail/pat": 1 message 1 new 

>N 1 root@servidor Sat Aug 16 12:03 14/451 Un correiño de probas 


Podemos acceder ao contido do correo escribindo no punto de inserción o seu número (1). Para saír pulsamos “q”. Polo que acabamos de ver, o SMTP esta escoitando no porto 25, e pode recoller correos para persoas usuarias locais. Agora chega o momento de facelo quen de atender a persoas usuarias remotas, empregando os protocolos POP3 e máis IMAP.

Pero antes, dous parámetros que lle temos que pasar ao Postfix para que o formato das caixas de correo sexa axeitado para os servidores POP e IMAP:

postconf -e "home_mailbox = Maildir/"

postconf -e "mailbox_command = "


Para continuar, temos que instalar os paquetes courier-imap e courier-pop. E comezamos coa configuración. En caso de que teñamos unha rede local, e o SMTP vaia atender aos clientes situados nela, témosllo que dicir. Supoñamos que a nosa rede local esta no rango 192.168.1.0/24.

postconf -e "mynetworks = 127.0.0.0/8, 192.168.1.0/24"


Facemos que Postfix atenda a todas as interfaces que ten, entre elas Internet:

postconf -e "inet_interfaces = all"


E, para rematar, reiniciamos o servizo:

invoke-rc.d postfix restart


Agora teríamos que facer outra proba de resposta, semellante á que fixemos antes:

telnet mail.capacitacion.com 25

ehlo capacitacion.com

mail from: root@capacitacion.com

rcpt to: pat@capacitacion.com

data

Subject: Correo para o usuario do dominio

Boas

Parece que funciona, non?

. 

quit


Despois podemos comprobar a caixa de correo do usuario pat:

su - pat

cd Maildir/new

ls


Onde atoparemos un arquivo, o novo correo. Nese caso podemos afirmar que a entrega local funciona. Agora toca probar se a recollida vía POP3 tamén o fai. Faremos un intento de conexión vía telnet pero agora en lugar de empregar o porto 25 (o que usa o protocolo SMTP) imos usar o 110 (que corresponde co POP3):

telnet mail.capacitacion.com 110


Habemos atopar unha mensaxe de benvida, e teremos que mandar as seguintes liñas:

user pat

pass (o contrasinal que puxemos antes)


O servidor respostará cun “OK”. Xa podemos saír empregando a orde “quit”.

Para probar o IMAP, faríamos igual, pero no porto 143, que é o que emprega este protocolo. Unha vez recibida a benvida do servidor, podemos validarnos coa orde “login” seguida de nome de usuario/a e contrasinal:

login pat (o contrasinal)


Só nos restaría facer probas de envío e recepción dende outros dominios e servidores de correo ademais de configurar os clientes de escritorio. Para eles, no exemplo que estamos a seguir tanto o servidor SMTP como o POP3 sería o mesmo: “mail.capacitacion.com”.

Licenza desta guía

Esta guía forma parte da documentación de apoio para a capacitación TIC en SwL e foi elaborada pola empresa TEGNIX para o Centro de Referencia e Servizos de Software Libre de Galiza – Mancomún. Distribúese baixo as condicións dunha Licenza Creative Commons: Recoñecemento-CompartirIgual 3.0