====== Email Linux amb Docker ======
El servei de [[https://www.cacauet.org/wiki/index.php/Correu_electr%C3%B2nic|correu electrònic]] és força complexe ja que es composa de diversos processos o //daemons//. A part del típic servei de MTA (postfix, sendmail, etc.) ens cal també un servei de Fetchmail (Courier, Dovecot), antivirus, anti-spam, etc., a part de configurar els certificats i modes d'autenticació encriptada.
El sistema de contenidors [[Docker]] ens facilita tota aquesta posada en marxa del servei. **Utilitzarem [[https://docker-mailserver.github.io/docker-mailserver/edge/|docker-mailserver]]: un contenidor que integra tots els serveis necessaris per al funcionament del correu electrònic i n'ha fet una versió "dockeritzada"**. Per poder fer aquesta pràctica cal que estiguis fortament familiaritzat amb [[Docker]].
Articles de referència:
* [[https://www.cacauet.org/wiki/index.php/Correu_electr%C3%B2nic|Teoria correu electrònic]]
* [[https://www.cacauet.org/wiki/index.php/E-mail_Linux_amb_Docker|Article font a cacauet.org]]
* [[Docker]]
* Docker mailserver:
* [[https://github.com/docker-mailserver/docker-mailserver|Repositori Github de docker-mailserver]]
* [[https://docker-mailserver.github.io/docker-mailserver/edge/|Documentació oficial docker-mailserver]]
{{ email.jpg?300 }}
{{tag> #FpInfor #Asix #AsixMp08 #AsixMp08Uf3 #AsixMp08Uf03 #Smx #SmxMp07 #SmxMp07Uf2 #SmxMp07Uf02 #Ciber #Ceti #CiberMp03 #CetiMp03 }}
\\
===== Requisits =====
Per poder posar un servidor de email ens cal:
* Un servidor (màquina virtual o real), al núvol o on-premises, però sempre ha d'estar online.
* Una IP estàtica i que no estigui banejada. Es pot comprovar a https://spamhaus.org
* És important que quan reservem una màquina virtual al nostre proveïdor, ens assegurem que la IP no està banejada. En cas de que ho estigui, caldrà sol·licitar-ne una altra o bé demanar que la treguin de la "llista negra" de spamhaus.org .
\\
===== Instal·lació =====
Servidor:
- Posar en marxa un servei al cloud com [[AWS]] o [[com-crear-un-servidor-a-Microsoft-Azure]].
- Crear una VM
- Si estem en AWS, afegir-li una Elastic IP (altrament la IP serà dinàmica i no ens valdrà).
- Comprovar que la IP no està banejada a spamhaus.org
- Si ho està, sol·licitar que ens la retirin de la llista de spamhaus.org o bé canviar la IP de la VM.
- Connectar-nos a la VM
- Obrir ports web.
- Instal·lar Apache i testejar.
Domini:
- Reservar un domini a http://freenom.com i apuntar-lo al nostre servidor.
- Testejar el domini amb Apache.
- Apuntar també els registres MX
Servei email:
- [[https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04|Afegir memòria virtual (swap)]].
- Instal·lar Docker.
- Descarregar el fantàstic [[https://cacauet.org/wiki/index.php/Correu_electr%C3%B2nic|docker-mailserver]]DMS_GITHUB_URL='https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/master'
wget "${DMS_GITHUB_URL}/docker-compose.yml"
wget "${DMS_GITHUB_URL}/mailserver.env"
wget "${DMS_GITHUB_URL}/setup.sh"
chmod a+x ./setup.sh
- Afegir usuaris (comptes), per exemple:$ ./setup.sh email add ieti@ieti.ml ietipasswd
- Comprovar que es creen usuaris a l'arxiu:$ cat docker-data/dms/config/postfix-accounts.cf
- Obrir els ports del servei d'email (25,143,465,587,993)
- (Només en AWS) Sol·licitar obertura port 25 al proveïdor de Cloud
- Posa en marxa el servidor amb$ docker-compose up -d
De moment el servidor només funciona amb IMAP sense seguretat, pel que ens connectarem pel port 143. Quan configurem els certificats podrem utilitzar el port 993.
Test:
- Configura un client d'email per tal què utilitzi el nostre servidor. Es recomana:
- Thunderbird o Outlook des del PC.
- FairMail o Bluemail per a mòbil Android.
- Comprova que funciona enviant i rebent emails.
- És molt fàcil que els nostres emails vagin a la carpeta de SPAM. Veuràs que en Gmail a la icona del remitent sol sortir un interrogant que ens indica que l'origen no és fiable.
\\
===== Activar SSL =====
Segueix la [[https://docker-mailserver.github.io/docker-mailserver/edge/config/security/ssl/|documentació per activar el protocol IMAPS (IMAP + SSL)]].
A l'activar el SSL, el port per accedir al correu serà el **port 993 (IMAPS)** enlloc del 143 (IMAP).
La variable clau és ''SSL_TYPE'' (a ''mailserver.env'') que es pot configurar:
- ''self-signed'' : cal deixar els propis certificats autofirmats en unes carpetes particulars.
- ''manual'' : podem indicar a l'arxiu ''.env'' on son els arxius amb els certificats.
\\
===== Afegint webmail =====
Afegirem una interfície de webmail amb el software de Roundcube. Afegiu el següent servei al vostre ''docker-compose.yml''. Es publicarà la web al port 9002, que seria convenient mapejar a un subdomini com ''webmail.elmeudomini.com'':
Aquest arxiu està configurat per utilitzar SSL (IMAPS). Si no has configurat SSL (port 993), canvia les variables perquè utilitzin el port IMAP clàssic:
- ROUNDCUBE_DEFAULT_HOST=mail
- ROUNDCUBE_DEFAULT_PORT=143
roundcube:
image: robbertkl/roundcube:latest
hostname: webmail
domainname: webmail.elmeudomini.com
container_name: roundcube
restart: always
ports:
- "9002:80"
depends_on:
- mail
environment:
- ROUNDCUBE_DEFAULT_HOST=ssl://mail
- ROUNDCUBE_DEFAULT_PORT=993
- ROUNDCUBE_SMTP_SERVER=tls://mail
- ROUNDCUBE_SMTP_PORT=587
- ROUNDCUBE_MANAGESIEVE_HOST=mail
- ROUNDCUBE_MANAGESIEVE_USETLS=true
volumes:
- ./roundcube_db:/var/www/db
\\
===== Seguretat i SPAM =====
La seguretat del nostre servei gira entorn de 3 eixos principals:
* **Exploits**: si el nostre servei és "petable" (per un bug o alguna operació maliciosa que explota una debilitat) el nostre sistema es pot fer vulnerable a intrusions. Per combatre això convé:
* Estar a la darrera versió del sistema operatiu (al menys en el parxes de seguretat) i del servei que fem servir.
* Utilitzar docker per aïllar parts del sistema. Si el procés de correu és vulnerable, una possible intrusió només podrà accedir als arxius de correu, i no a altres serveis.
* **Virus**: l'email és una gran porta d'entrada al sistema. Poden entrar virus i usuaris incautes poden introduir-los involuntàriament en el sistema. Calen diverses eines:
* Antivirus servidor: Clam / Amavis (incloses al docker-mailserver)
* Antivirus PC client: Avast, Panda, .
* **SPAM**: el maldecap més gran per a la implantació d'un servidor de correu. Ens calen 2 tipus d'eines:
* SpamAssassin : ens permet filtrar els ''spam'' a la nostra ''inbox'' (inclòs al docker-mailserver). Sol aprendre sol en base a algorismes heurístics, però té algunes comandes per "ensenyar-lo" i apuntar-li quins son els autèntics SPAM. Tenir [https://es.wikipedia.org/wiki/Honeypot un '''''honeypot''''' sol ser interessant] pel bon funcionament del server.
* Sistemes de signatura per validació i reputació del nostre servidor de correu (SPF, DKIM, DMARC)
==== Signatura, autenticitat i reputació dels nostres emails ====
El SPAM (correu no sol·licitat o ''correu brossa'') és una de les grans dificultats per desplegar un servidor d'email. Al ser un sistema obert, on tothom pot enviar a qualsevol adreça, el perill de tenir la inbox inundada i fer el servei inutilitzable obliga a algun tipus de protecció per tal que el sistema sigui usable pels usuaris finals.
Els grans proveidors de comptes de correu (Google, Hotmail, Yahoo) van idear certes mesures per assegurar l'origen dels emails, i impedir que qualsevol pugues enviar un email amb qualsevol remitent (cosa que d'entrada era i segueix sent possible). D'aquests sistemes, en destaquem aquests 3:
* [[https://es.wikipedia.org/wiki/Sender_Policy_Framework|SPF]]: és el sistema més fàcil d'implantar. Inclourem certa informació als registres TXT del DNS per tal d'associar unes IPs concretes des de les que serà vàlid enviar els correus del nostre domini.
* [[https://es.wikipedia.org/wiki/DomainKeys_Identified_Mail|DKIM]]: bàsicament consisteix en signar tots els emails amb una clau privada, i presentar la clau pública al servidor DNS.
* [[https://dmarc.org/|DMARC]]: no és pròpiament un sistema de seguretat activa. Es tracta de publicar al DNS les polítques per decidir què fer si un email amb remitent del nostre domini no compleix amb les mesures SPF i DKIM.
Aquests mecanismes permeten als sistemes destinataris identificar si el correu que li arriba és bo. Si no quadra, la probabilitat de que sigui SPAM és molt alta i el filtra cap a la spam box.
==== Comprovant la nostra reputació ====
Utilitza aquesta eina per saber si has configurat correctament els diferents sistemes de signatura i validació d'autenticitat dels nostres emails.
https://www.mail-tester.com/
- Proves spam
- Posar a punt SPF
- Proves spam
- Posar a punt DKIM
- Proves spam