Differences

This shows you the differences between two versions of the page.

Link to this comparison view

mail-gateway_amb_amavisd-new [2012/06/06 12:15] (current)
Line 1: Line 1:
 +====== Comentaris dubtes i peticions ======
 +
 +Qualsevol cosa que volgueu demanar-me comentar, suggerir o simplement queixar-vos perquè no us funciona ho podeu fer a l'​article [[http://​oriol.joor.net/​blog/?​item=mailgateway-postfix-amavisd-clamav-spamassassin-sasl|mailgateway:​ postfix+amavisd+clamav+spamassassin+sasl]]
 +
 +
 +====== Changelog ======
 +
 +  * 12/06/2007 - Afegim la capacitat de verificar si existeixen els recipients d'un correu d'un domini local. Explicat a [[http://​oriol.joor.net/​blog/?​item=postfix-verifiquem-recipients-des-del-mailgateway|Postfix:​ Verifiquem recipients des del mailgateway]]
 +
 +
 +====== Introducció i Objectiu ======
 +
 +Algunes empreses disposen de servidors de correu amb infraestructures internes realment complexes i que seguint la màxima de la informàtica el millor que podem fer és: __si alguna cosa va no la toquis__. El problema és que sovint aquestes estructures tan complexes no disposen de filtres de correu mailiciós. O sigui, no són capaces de passar antivirus al correu, filtrar l'//​spam//​ i controlar altres enviaments maliciosos de correu. A més intentar afegir un software dins el propi servidor que ens fassi aquestes funcions sobre l'Mail Transport Agent (MTA) que ja tenim corrent és un risc innecessari i poc rentable moltes vegades.
 +
 +Una solució que s'usa sovint és afegir un servidor només per filtrar el correu que entre i surt de l'​empresa i intentar eliminar amb aquest //​mail-gateway//​ tots els correus no dessitjats. Bàsicament doncs el que fem és col·locar l'SMTP (Simple Mail Transport Protocol) del //​mail-gateway//​ com a porta d'​entrada del correu extern. Després modifiquem el servidor intern de correu perquè tots els correus que hagi d'​enviar cap a fora ho fassi a través del //​mail-gateway//​. O sigui, posem com a servidor de //relay// fix del servidor intern la direcció del MTA del //​gateway//​.
 +
 +Amb aquest escenari els usuaris no han de canviar res de res, ja que només estem intervenint el port 25/tcp, o sigui, l'​SMTP. A més al servidor intern de correu podem crear una compte de gestió de correo mailiciós, per exemple //​mailgateway@exemple.com//​ (sent exemple.com el nostre domini). En aquest compte li creem dues carpetes una que es digui //spam// i l'​altre que es digui //ham//. El que farem és sincronitzar el correu d'​aquestes comptes amb una carpeta del //​mail-gateway//​ (si les comptes són IMAP és bona idea sincronitzar-les amb l'​[[http://​www.quux.org/​devel/​offlineimap|offlineimap]]). Quan tinguem aquests correus al //​mail-gateway//​ li direm als filtres //​bayessians//​ de l'//​antispam//​ que aprenguin com és el correu maliciós que no és capaç de filtrar i com és el correu que ha filtrat i que era legítim.
 +
 +Aquesta compte de correu (mailgateway@exemple.com) que hem creat al servidor intern, la podem configurar com a compte de correu secundaria a un administrador de la xarxa. Així aquest podrà gestionar el manteniment sense haver de tocar el //​mail-gateway//​. En cas de que hi hagi algún usuari de la xarxa que vulgui localitzar un correu que s'ha filtrat l'​administrador ho podrà fer des d'​aquesta compte.
 +
 +
 +A més pels usuaris que estan fora de l'​empresa,​ delegacions o d'​altres similars ens pot interessar autenticar l'SMTP per tal de que aquests usuaris puguin usar l'SMTP del //​mailgateway//​ per enviar correu. Així doncs, aprofitarem el servei d'IMAP (Internet Message Access Protocol) del servidor intern per validar l'​autenticació en l'​SMTP. Sona una mica extrany però el mètode és ben senzill. Es tracta d'​aprofitar la compte l'​usuari i clau que tenen els usuaris en el servidor IMAP intern, llavors es configura el MUA perquè usi aquestes dades com a informació per autenticar l'SMTP i el servidor d'MTA quan rep una autenticació via SMTP el que fa és obrir una connexió IMAP contra el servidor intern i provar l'​usuari i clau que el client l'hi ha enviat a l'SMTP si això és correcte l'MTA permet enviar correu al MUA amb l'​origen i destí que vulgui.
 +
 +====== Diagrama de xarxa ======
 +
 +{{ http://​oriol.joor.net/​blog/​wiki/​media/​mailgateway/​diagrama-xarxa.png }}
 +
 +====== Esquema dels serveis i tractament del correu ======
 +
 +{{ http://​oriol.joor.net/​blog/​wiki/​media/​mailgateway/​esquema.png }}
 +
 +
 +En aquest esquema es poden observar els 3 ports TCP que publicarem per filtrar el correu i les principals opcions de configuració dels serveis que publiquen els ports.
 +
 +===== Fluxe dels correus =====
 +
 +Quan un servidor SMTP tan de la nostre xarxa com d'una xarxa externa envia un correu contra el //​mail-gateway//​ lògicament ho fa pel port 25/TCP contra el servidor SMTP, en el nostre cas //​postfix//​. Aquest com podem veure en l'​esquema re-envia el correu contra el port 10024 de la IP //​localhost//​. A més aquest port només és capaç de rebre peticions desde //​localhost//​ per evitar problemes de seguretat. El port del que estem parlant si mirem a l'​esquema podeu veure que l'esta publicant l'//​amavis//​. ​
 +
 +L'//​amavis//​ és el programa encarregat de supervisar els filtres //​antispam//​ i //​antivirus//,​ és el que farà les crides pertinents a tercers programes i el que s'​encarregarà de capturar els errors i enviar els missatges de //log//, //email// i altres a qui correspongui. En cas de que no es detecti cap anomalia en el correu aquest es re-enviarà al port //​localhost:​10025/​TCP//​.
 +
 +Segons l'​esquema el port 10025/TCP també l'esta plublicant el //​postfix//​. Concretament el que farà l'SMTP en aquest cas és buscar a qui va dirigit el correu si a un destí local (//​local_relay//​) o a un destí remot (//MX dns lookup//​). ​
 +
 +====== Configurant els serveis ======
 +
 +===== postfix =====
 +
 +El servidor SMTP bàsicament té dos fitxers de configuració principals. Que en el nostre cas no són especialment llargs. Així doncs, ens serà relativament senzill saber si algo no funciona.
 +
 +Fitxer **/​etc/​postfix/​master.cf**:​
 +
 +[[fitxer master.cf]]
 +
 +Com es pot comprovar en aquest fitxer és en el que s'​explica quin serà el flux del correu, li diem al //postfix// quin serà l'​ordre en que s'​intentarà processar el correu i qui l'​atendrà en cada moment.
 +
 +Fitxer **/​etc/​postfix/​main.cf**:​
 +
 +[[fitxer main.cf]]
 +
 +
 +Com podem veure en aquest fitxer apliquem sobretot filtres bàsics per evitar tenir el //relay// de correu obert. Permetem enviar correus des de i cap a on vulguem, sempre que estiguem dintre d'una xarxa pròpia. Però els SMTP que es connecten des d'​altre xarxes tenen força restriccions com podem veure a partir del comentari //Filtres anti-spam//​. La resta de configuracions són força típiques. Cal que ens adonem que si no volem que el //​mail-gateway//​ es quedi amb cap correu hem de fer que el seu domini difereixi del domini del servidor intern de correu. Després pels correu que es generin localment si volem sobre-escriure aquest domini podem usar la variable //​myorigin//​.
 +
 +D'​aquests fitxer de configuració se'n extreuen dos fitxers més, un on direm quins són els nostres dominis locals (els de la nostre xarxa, no del //​mailgateway//​) i l'​altre on direm quin és el servidor que ha d'​atendre explicitament els correus per al domini al que van destinats digui el que digui el DNS.
 +
 +El fitxer **/​etc/​postfix/​relay_delays**:​
 +
 +<code bash>
 +joor.net OK
 +oriol.joor.net OK
 +</​code>​
 +
 +El fitxer **/​etc/​postfix/​transport**:​
 +
 +<code bash>
 +local smtp:​10.138.0.2:​25
 +oriol.joor.net smtp:​10.138.0.2:​25
 +joor.net smtp:​10.138.0.2:​25
 +oriolrius.cat smtp:​10.138.0.2:​25 ​
 +</​code>​
 +
 +El domini //local// es refereix al domini definit a la variable de configuració //​mydomain//​. Així mai quedaràn correus enmagatzemats al //​mailgateway//​.
 +
 +===== amavisd =====
 +
 +L'//​amavisd-new//​ bàsicament té un fitxer de configuració important. Aquest fitxer és llarguíssim i pesadíssim d'​analitzar. En l'​esquema anterior es resumeixen les seves opcions més importants. Malgrat això per configurar-lo bé s'ha de llegir detingudament i provar tot el que es va activant per comprobar que el comportament és l'​esperat.
 +
 +[[fitxer de configuració]]
 +
 +Aquí definim coses tan importants, com decidir què fer quan rebem un correu amb virus: em d'​avisar la persona que ens l'ha enviat? em d'​avisar el destinatari?​ l'​administrador del sistema? i si el correu era spam? i si simplement era un correu mal format?
 +
 +També hi ha altre coses definides com ara: quin port publica l'//​amavis//​ per rebre el correu del //postfix// (127.0.0.1:​10024/​tcp). Quin programa antivirus usararem, el //clamav// en el nostre cas. I l'//​spamassassin//​ com li passarem el correu perquè comprovi si el correu que estem tranctan porta virus.
 +
 +A més des d'​aquí també es defineixen la majoria de paràmetres de l'//​spamassassin//,​ com a ara les //​whilelist,​ blacklist i spam_lovers list//. Concretament les hem re-enviat a fitxers //hash// externs: **/​etc/​amavis/​whitelist**,​ **/​etc/​amavis/​blacklist** i **/​etc/​amavis/​spam_lovers**.
 +
 +És un bon consell perdre una bona estona jugant amb aquest fitxer, ja que és el que marcarà el comportament més important del //​mailgateway//​.
 +
 +===== clamav-daemon o clamd =====
 +
 +La configuració de l'​antivirus és força senzilla, un cop llençat el dimoni aquest publicat un //socket unix// si fem un //netstat -lpn|grep clamd// podrem veure on esta exactament el //socket//, en el nostre cas:
 +
 +<code bash>
 +# netstat -lpn|grep clam
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​644309 ​  ​29823/​clamd ​        /​var/​run/​clamav/​clamd.ctl
 +</​code>​
 +
 +És important saber on és aquest //socket unix// perquè el fitxer **/​etc/​amavis/​amavisd.conf** anterior en hi fa referència. Aquí podem veure que el tenim a **/​var/​run/​clamav/​clamd.ctl**.
 +
 +Després d'​això només cal que llencem el dimoni //​clamav-freshclam//​ que s'​encarrega d'​actualitzar les definicions de virus amb la periodicitat que nosaltres li indiquem i des del repositori que més ens convingui.
 +
 +===== spamassassin =====
 +
 +Es crida des de l'//​amavisd-new//​ però no es publica cap port. Però també tenim un fitxer de configuració pròpi on l'hi indiquem on són les dades que necessita per treballar:
 +
 +<code bash>
 +# This is the right place to customize your installation of SpamAssassin.
 +#
 +# See '​perldoc Mail::​SpamAssassin::​Conf'​ for details of what can be
 +# tweaked.
 +#
 +###########################################################################​
 +#
 +# rewrite_header Subject *****SPAM*****
 +# report_safe 1
 +# trusted_networks 212.17.35.
 +# lock_method flock
 +
 +report_safe 0
 +
 +use_bayes 1
 +bayes_path /​var/​lib/​amavis/​.spamassassin/​bayes
 +
 +skip_rbl_checks 0
 +use_razor2 1
 +use_dcc 1
 +use_pyzor 0
 +
 +dns_available yes
 +
 +header LOCAL_RCVD Received =~ /​.*\(\S+\.domain\.com\s+\[.*\]\)/​
 +describe LOCAL_RCVD Received from local machine
 +score LOCAL_RCVD -50
 +
 +## Optional Score Increases
 +score DCC_CHECK 4.000
 +score SPF_FAIL 10.000
 +score SPF_HELO_FAIL 10.000
 +score RAZOR2_CHECK 2.500
 +score BAYES_99 4.300
 +score BAYES_90 3.500
 +score BAYES_80 3.000
 +</​code>​
 +
 +====== Provant el servidor ======
 +
 +===== Enviar un correu via SMTP a través de telnet/​netcat =====
 +
 +A vegades ens insteressa fer proves directament contra el port SMTP i no haver de reconfigurar cada vegada el client de correu (MUA). Un exemple de com fer-ho:
 +
 +<code bash>
 + $ nc -vvv IP_SERVIDOR 25
 +(UNKNOWN) [IP_SERVIDOR] 25 (smtp) open
 +220 Mail Gateway
 +helo exemple.com
 +250 
 +mail from:<​oriol@oriol.joor.net>​
 +250 Ok
 +rcpt to:<​oriol@oriol.joor.net>​
 +250 Ok
 +data
 +354 End data with <​CR><​LF>​.<​CR><​LF>​
 +provant
 +.
 +250 Ok: queued as 0281C874FD
 +quit
 +221 Bye
 + sent 101, rcvd 140
 +</​code>​
 +
 +Arribats en aquest punt el sevidor ja esta enrutant el correu cap al seu destí, ja qu ens ha informat que l'ha posat en cua.
 +
 +===== Mirar els logs =====
 +
 +Per visualitzar els //logs// del correu que esta arribant i marxant del servidor cal mirar el fitxer **/​var/​log/​mail.log** si volem visualitzar el fitxer en temps real podem usar l'​ordre:​
 +
 +<code bash>
 +$ tail -f /​var/​log/​mail.log
 +</​code>​
 +
 +Per tal d'​interpretar el //log// només cal tenir una mica de paciència i fixar-se bé qui és l'​origen del registre. Si la traça l'ha enviat el //​postfix//,​ l'//​amavis//,​ etc. Després podrem veure els detalls de que ha fet aquesta aplicació i podrem seguir tots els salts entre aplicacions descrits anteriorment en aquest document.
 +
 +===== Llegint les capçaleres dels emails =====
 +
 +Poder llegir les capçaleres dels emails ens permet saber per on ha passat un correu. A més en el nostre cas ens serveix per veure els salts que ha fet per dintre del //​mailgateway//​ concretament si mirem les //email headers// que han traspassat el nostre servidor antispam podem veure algo semblant a:
 +
 +
 +<code bash>
 +Received: from localhost (localhost.localdomain [127.0.0.1])
 + by mailgateway (Postfix) with ESMTP id 61D7E187508
 + for <​desti@exemple2.com>;​ Tue,  2 May 2006 14:58:35 +0200 (CEST)
 +Received: from mailgateway ([127.0.0.1])
 + by localhost (mailgateway.subdomini.exemple1.com [127.0.0.1]) (amavisd-new,​ port 10024)
 + with ESMTP id 07387-13 for <​desti@exemple2.com>;​
 + Tue, 2 May 2006 14:58:33 +0200 (CEST)
 +Received: from mini2 (unknown [IP_PUBLICA_PROVES])
 + by mailgateway (Postfix) with ESMTP id 69D44187506
 + for <​desti@exemple2.com>;​ Tue,  2 May 2006 14:58:33 +0200 (CEST)
 +</​code>​
 +
 +Obviament el correu té més capçaleres però aquestes sempre hi surten. Que son les dels filtres que explicabem anteriorment. A més dins dels TAGS de la capçalera també podrem veure això:
 +
 +<code bash>
 +X-Virus-Scanned:​ by amavisd-new-20030616-p10 at subdomini.exemple1.com
 +</​code>​
 +
 +És una marca d'​aigua que deixe l'//​amavisd-new//​ als correus que examina.
 +
 +Per saber interpretar les capçaleres dels email hi ha moltíssimes pàgines web que expliquen com fer-ho a continuació n'​adjunto unes quantes:
 +
 +
 +  * [[http://​www.stopspam.org/​email/​headers.html|Reading Email Headers]] - stopspam.org
 +  * [[http://​www.uic.edu/​depts/​accc/​newsletter/​adn29/​headers.html |Reading Email Headers ]]  - uic.edu
 +  * [[http://​help.mindspring.com/​docs/​006/​emailheaders/​|Support Center]]
 +  * [[http://​www.bath.ac.uk/​bucs/​email/​anatomy.shtml|Anatomy of an Email Message]]
 +  * [[http://​email.about.com/​cs/​spamgeneral/​a/​spam_headers.htm|What Email Headers Can Tell You About the Origin of Spam - About Email]]
 +  * [[http://​abuse.msu.edu/​email-tracking.html|Analyzing e-mail headers and tracking e-mail]]
 +
 +
 +
 +
 +===== Serveis actius =====
 +
 +<code bash>
 +Active Internet connections (only servers)
 +Proto Recv-Q Send-Q Local Address ​          ​Foreign Address ​        ​State ​      ​PID/​Program name
 +tcp        0      0 127.0.0.1:​10024 ​        ​0.0.0.0:​* ​              ​LISTEN ​    ​6353/​amavisd (maste
 +tcp        0      0 127.0.0.1:​10025 ​        ​0.0.0.0:​* ​              ​LISTEN ​    ​9371/​master
 +tcp        0      0 127.0.0.1:​783 ​          ​0.0.0.0:​* ​              ​LISTEN ​    ​6370/​spamd.pid
 +tcp        0      0 127.0.0.1:​53 ​           0.0.0.0:​* ​              ​LISTEN ​    ​10176/​named
 +tcp        0      0 0.0.0.0:​25 ​             0.0.0.0:​* ​              ​LISTEN ​    ​9371/​master
 +tcp6       ​0 ​     0 :::22                   :::​* ​                   LISTEN ​    ​8444/​sshd
 +udp        0      0 0.0.0.0:​53 ​             0.0.0.0:​* ​                         10176/named
 +udp        0      0 127.0.0.1:​53 ​           0.0.0.0:​* ​                         10176/named
 +udp6       ​0 ​     0 :::​39827 ​               :::*                               ​10176/​named
 +Active UNIX domain sockets (only servers)
 +Proto RefCnt Flags       ​Type ​      ​State ​        ​I-Node PID/Program name    Path
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598578 ​ 9371/​master ​        ​private/​smtp-amavis
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2609624 ​ 10176/​named ​        /​var/​run/​ndc
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598589 ​ 9371/​master ​        ​public/​cleanup
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598596 ​ 9371/​master ​        ​private/​rewrite
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598600 ​ 9371/​master ​        ​private/​bounce
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598604 ​ 9371/​master ​        ​private/​defer
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598608 ​ 9371/​master ​        ​public/​flush
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598612 ​ 9371/​master ​        ​private/​proxymap
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598616 ​ 9371/​master ​        ​private/​smtp
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598620 ​ 9371/​master ​        ​private/​relay
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598624 ​ 9371/​master ​        ​public/​showq
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​644309 ​  ​29823/​clamd ​        /​var/​run/​clamav/​clamd.ctl
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598628 ​ 9371/​master ​        ​private/​error
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598632 ​ 9371/​master ​        ​private/​local
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598636 ​ 9371/​master ​        ​private/​virtual
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598640 ​ 9371/​master ​        ​private/​lmtp
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​1623569 ​ 32625/​acpid ​        /​var/​run/​acpid.socket
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598644 ​ 9371/​master ​        ​private/​maildrop
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598648 ​ 9371/​master ​        ​private/​trace
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598652 ​ 9371/​master ​        ​private/​verify
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598656 ​ 9371/​master ​        ​private/​tlsmgr
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598660 ​ 9371/​master ​        ​private/​anvil
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598664 ​ 9371/​master ​        ​private/​scache
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2598668 ​ 9371/​master ​        ​private/​discard
 +unix  2      [ ACC ]     ​STREAM ​    ​LISTENING ​    ​2596380 ​ 8961/​saslauthd ​     /​var/​run/​saslauthd/​mux
 +</​code>​
 +
 +
 +
 +
 +====== Gestionant la compte interna (mailgateway@exemple.com) ======
 +
 +===== Necessitats de la compte interna =====
 +
 +  * Crear dues carpetes a la compte:
 +    * ham - col·locarem el correu marcat com a falç positiu
 +    * spam - col·locarem el correu que era spam i el servidor no el va detectar
 +  * Poder-la consultar per IMAP
 +
 +===== Sincronitzem la compte IMAP amb el mailgateway =====
 +
 +Això ho farem amb l'//​offlineimap//,​ aquest el podem fer correr com un usuari.
 +
 +<code bash>
 +$ cat .offlineimaprc
 +[general]
 +accounts = servidor_intern
 +
 +[Account servidor_intern]
 +localrepository = Local
 +remoterepository = Remote
 +
 +[Repository Local]
 +type = Maildir
 +localfolders = ~/​mailgateway
 +sep=/
 +
 +[Repository Remote]
 +type = IMAP
 +remotehost = 172.16.0.8
 +remoteuser = mailgateway
 +remotepass = ___
 +</​code>​
 +
 +Podem veure que l'​email es guardarà al //home// (~) de l'​usuari que escollim concretament a la carpeta //​mailgateway//​.
 +
 +El fitxer és força simple es pot veure com definim la compte //​servidor_intern//​ després definim el repositori //local// i //remot// d'​aquest compte. El local serà un simple //maildir// i el remot un //imap//.
 +
 +====== Misc ======
 +
 +===== Eduquem el filtre anti-spam =====
 +
 +L'//​spamassassin//​ quan més correus d'​exemple d'spam té més bo és fent deteccions perquè aquestes es fan a través de funcions //​bayessianes//​. Això vol dir que quan més dades té a la BBDD més precís és. La comanda que s'usa per alimentar la BBDD de l'//​spamassassin//​ és el **sa-learn**.
 +
 +===== Com crear un fitxer hash (.db) =====
 +
 +Sovint els fitxers de configuració de l'//​amavis//​ i el //postfix// són en format //hash// per transformar un fitxer de configuració normal en la seva versió //hash// només cal fer el següent:
 +
 +<code bash>
 +postmap fitxer_de_configuració
 +</​code>​
 +
 +i després d'​això obtindrem a més del nostre //​fitxer_de_configuració//​ un altre fitxer anomenat //​fitxer_de_configuració.db//,​ o sigui, el fitxer en format //hash//.
 +
 +
 +====== Referències ======
 +
 +  * [[http://​networking.ringofsaturn.com/​Protocols/​imap.php | IMAP protocol]] //​cookbook//​ de com usar el protocol IMAP des d'una sessió TCP.
 +
 +
 +