Taula de continguts

Email Linux amb Docker

El servei de 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 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:

Web

, , , , , , , , , , , ,


Requisits

Per poder posar un servidor de email ens cal:


Instal·lació

Servidor:

  1. Posar en marxa un servei al cloud com AWS o com-crear-un-servidor-a-Microsoft-Azure.
  2. Crear una VM
  3. Si estem en AWS, afegir-li una Elastic IP (altrament la IP serà dinàmica i no ens valdrà).
  4. Comprovar que la IP no està banejada a spamhaus.org
    1. Si ho està, sol·licitar que ens la retirin de la llista de spamhaus.org o bé canviar la IP de la VM.
  5. Connectar-nos a la VM
  6. Obrir ports web.
  7. Instal·lar Apache i testejar.

Domini:

  1. Reservar un domini a http://freenom.com i apuntar-lo al nostre servidor.
  2. Testejar el domini amb Apache.
  3. Apuntar també els registres MX

Servei email:

  1. Instal·lar Docker.
  2. Descarregar el fantàstic 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
  3. Afegir usuaris (comptes), per exemple:
    $ ./setup.sh email add [email protected] ietipasswd
  4. Comprovar que es creen usuaris a l'arxiu:
    $ cat docker-data/dms/config/postfix-accounts.cf
  5. Obrir els ports del servei d'email (25,143,465,587,993)
  6. (Només en AWS) Sol·licitar obertura port 25 al proveïdor de Cloud
  7. 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:

  1. Configura un client d'email per tal què utilitzi el nostre servidor. Es recomana:
    1. Thunderbird o Outlook des del PC.
    2. FairMail o Bluemail per a mòbil Android.
  2. Comprova que funciona enviant i rebent emails.
  3. É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 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:

  1. self-signed : cal deixar els propis certificats autofirmats en unes carpetes particulars.
  2. 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
docker-compose.yml
  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:

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:

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/

  1. Proves spam
  2. Posar a punt SPF
  3. Proves spam
  4. Posar a punt DKIM
  5. Proves spam