Pràctica: Servidor de Correu Complet amb Mailcow i Docker
Objectius
En aquesta pràctica aprendràs a:
- Desplegar un servidor de correu complet amb Mailcow
- Configurar dominis virtuals i comptes d'usuari
- Entendre l'arquitectura multi-contenidor de Mailcow
- Configurar SPF, DKIM i DMARC per seguretat
- Provar l'enviament i recepció de correus amb clients
- Configurar webmail SOGo per accés web
Durada estimada
5-6 hores
Requisits previs
- Docker i Docker Compose instal·lats
- Coneixements bàsics de DNS i correu electrònic
- Mínim 4GB RAM i 20GB disc disponible
- Accés a modificar el fitxer hosts (per proves locals)
Introducció
Mailcow és una solució de correu electrònic de codi obert basada en Docker que integra tots els components necessaris per a un servidor de correu modern:
- Postfix: MTA (Mail Transfer Agent) per enviar/rebre correus
- Dovecot: Servidor IMAP/POP3 i MDA (Mail Delivery Agent)
- SOGo: Interfície webmail amb calendari i contactes
- Rspamd: Filtre antispam i signatura DKIM
- ClamAV: Antivirus per escannejar adjunts
- MariaDB: Base de dades per configuració
- Redis: Caché per millorar rendiment
- Nginx: Servidor web i proxy invers
Aquest stack complet permet tenir un servidor de correu professional amb totes les funcionalitats modernes en minuts.
Part 1: Preparació de l'Entorn
Pas 1: Crear l'estructura de directoris
IMPORTANT: Substitueix NOMCOGNOM pel teu nom i cognom en minúscules sense espais (exemple: mailcow-fbarragan).
Pas 2: Descarregar Mailcow
Mailcow proporciona un script d'instal·lació que descarrega tots els fitxers necessaris.Si ho estàs fent amb Windows hauràs de tenir WSL instal·lat amb una distribució d'Ubuntu o Debian. Es recomana fer la instal·lació a /opt
Pas 3: Generar la configuració
Abans de poder executar la generació de la configuració hauràs d'instal·lar el paquet jq.
Executa el script de generació de configuració.
Quan et demani el hostname, introdueix: mail.NOMCOGNOM.local
Exemple: mail.fbarragan.local
Et demanarà altres paràmetres TimeZone, deixem Europe/Madrid y utilitzem el branch 1 (estable)
Aquest script crearà el fitxer mailcow.conf amb la configuració bàsica.
Pas 4: Personalitzar mailcow.conf
Edita el fitxer mailcow.conf i revisa aquests paràmetres:
# Hostname del servidor
MAILCOW_HOSTNAME=mail.NOMCOGNOM.local
# Zona horària
TZ=Europe/Madrid
# IP pública (per proves locals usa 127.0.0.1)
MAILCOW_PASS_SCHEME=BLF-CRYPT
# Activa HTTPS (per proves locals pots deixar-ho)
SKIP_LETS_ENCRYPT=y
Pas 5: Modificar el fitxer hosts
Per poder accedir localment amb el domini personalitzat, afegeix al fitxer hosts:
Windows: C:\Windows\System32\drivers\etc\hosts
Linux/Mac: /etc/hosts
Part 2: Desplegament de Mailcow
Pas 1: Iniciar els contenidors
Això descarregarà totes les imatges Docker necessàries i iniciarà els contenidors. El procés pot tardar 10-15 minuts la primera vegada. Si un dona error amb la creació de la mailcow-network heu de netejar les docker network existents amb un docker network prune.
Pas 2: Verificar l'estat dels contenidors
Hauries de veure ~20 contenidors en estat running o healthy:
- mailcowdockerized-postfix-mailcow-1
- mailcowdockerized-dovecot-mailcow-1
- mailcowdockerized-rspamd-mailcow-1
- mailcowdockerized-redis-mailcow-1
- mailcowdockerized-mysql-mailcow-1
- mailcowdockerized-sogo-mailcow-1
- mailcowdockerized-nginx-mailcow-1
- mailcowdockerized-clamd-mailcow-1
- i altres...
Pas 3: Consultar els logs
Verifica que no hi ha errors crítics:
docker-compose logs -f --tail=50 postfix-mailcow
docker-compose logs -f --tail=50 dovecot-mailcow
docker-compose logs -f --tail=50 rspamd-mailcow
Prem Ctrl+C per sortir.
Part 3: Configuració del Domini i Usuaris
Pas 1: Accedir a la interfície web

Obre el navegador a: https://mail.NOMCOGNOM.local
NOTA: Accepta el certificat SSL autosignat (afegeix excepció de seguretat).
Inicia sessió amb:
- Usuari:
admin - Contrasenya:
moohoo
Primer de tot des de l'opció Sistema->Configuració edita l'usuari admin i substitueix per:
- Usuari:
admin-NOMCOGNOM - Contrasenya:
elteupassword

Pas 1
- Adjunta la imatge de teu mailcow funcionant amb el teu usuari.
Pas 2: Afegir un domini
- Ves a E-Mail -> Configuració → Domains
- Fes clic a Add domain
- Configura:
- Domain:
NOMCOGNOM.local - Max. number of mailboxes: 10
- Max. quota per mailbox: 1024 MB
- Default mailbox quota: 512 MB
- Fes clic a Add domain and restart SOGo
Pas 3: Crear comptes d'usuari
Crea mínim 3 usuaris amb els teus noms:
- Ves a E-Mail -> Configuració → Mailboxes
- Fes clic a Add mailbox
- Crea el primer usuari:
- Username:
VOSTRENOM1(exemple:fbarragan1) - Domain:
NOMCOGNOM.local - Full name:
VOSTRENOM VOSTRECOGNOM - Password:
elteupassword - Quota: 512 MB
- Repeteix per crear:
- Usuari 2:
VOSTRENOM2@NOMCOGNOM.local - Usuari 3:
VOSTRENOM3@NOMCOGNOM.local
Pas 4: Configurar un àlies
- Ves a E-Mail -> Configuració → Alias
- Crea un àlies:
- Alias address:
admin@NOMCOGNOM.local - Goes to:
VOSTRENOM1@NOMCOGNOM.local - Això farà que els correus a
admin@NOMCOGNOM.localarribin al teu usuari principal
Part 4: Configuració de Seguretat (SPF, DKIM, DMARC)
Pas 1: Generar claus DKIM
Mailcow genera automàticament les claus DKIM. Per veure-les:
- Ves a System → Options → ARC/DKIM Keys
- Selecciona el domini
NOMCOGNOM.local - Copia el registre DNS DKIM generat

Pas 2: Configurar registres DNS (simulat)
En un entorn real, afegiries aquests registres al teu DNS. Per a aquesta pràctica, documenta'ls:
Registre SPF:
Registre DKIM (copiat de la interfície):
dkim._domainkey.NOMCOGNOM.local. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC..."
Registre DMARC:
Pas 3: Verificar configuració Rspamd
- Configura password per accedir desde el portal d'administració System->Access->Rspamd UI

- Accedeix a Rspamd:
https://mail.NOMCOGNOM.local/rspamd - Contrasenya: Consulta-la amb:
- Revisa que el servei estigui actiu. Veuràs que ja s'ha carregat el BAYES_SPAM que es un sistema d'IA per detectar correus de SPAM.
Part 5: Proves d'Enviament i Recepció
Pas 1: Configurar client de correu (Thunderbird)
Opció A: Configurar Thunderbird (recomanat)
- Obre Mozilla Thunderbird
- Afegeix un compte de correu:
- Nom:
VOSTRENOM VOSTRECOGNOM - Adreça de correu:
VOSTRENOM1@NOMCOGNOM.local - Contrasenya:
elvostrepassword - Configuració manual:
- IMAP:
mail.NOMCOGNOM.local, port993, SSL/TLS, autenticació normal - SMTP:
mail.NOMCOGNOM.local, port587, STARTTLS, autenticació normal - Accepta el certificat SSL
- Envia un correu electrònic a
VOSTRENOM2@NOMCOGNOM.locali verifica que ha passat pels filtres del RSPAMD.

Opció B: Utilitzar webmail SOGo
- Obre:
https://mail.NOMCOGNOM.local/SOGo - Inicia sessió amb:
VOSTRENOM1@NOMCOGNOM.local/elvostrepassword
Pas 2: Enviar un correu de prova
Des de Thunderbird o SOGo:
- Envia un correu des de
VOSTRENOM1@NOMCOGNOM.local - A:
VOSTRENOM2@NOMCOGNOM.local - Assumpte:
Prova des de Mailcow - VOSTRENOM VOSTRECOGNOM - Cos: "Aquest és un correu de prova del meu servidor Mailcow amb Docker."
Pas 3: Verificar recepció
- Configura el segon usuari (
VOSTRENOM2) a Thunderbird o SOGo - Comprova que ha arribat el correu
- Respon al correu per verificar la comunicació bidireccional
Pas 4: Provar l'àlies
Envia un correu a admin@NOMCOGNOM.local i verifica que arriba a VOSTRENOM1@NOMCOGNOM.local
Pas 5: Verificar headers del correu
A Thunderbird: Fes clic dret al correu → View → Message Source
Busca aquestes capçaleres:
- X-Rspamd-Score: Puntuació d'spam (hauria de ser baixa)
- Authentication-Results: Verificació SPF/DKIM
- DKIM-Signature: Signatura DKIM del nostre servidor
- Received: Traça del camí del correu
Part 6: Funcionalitats Avançades
1. Configurar quota d'usuari
- Ves a Mailboxes → Edita un usuari
- Canvia la quota a 256 MB
- Intenta enviar correus amb adjunts grans per provar el límit
2. Activar greylisting
- Ves a Configuration → Configuration & Details
- A la secció Rspamd, activa Greylisting
- Això rebutjarà temporalment correus de servidors desconeguts
3. Consultar logs de Postfix
Observa els missatges SMTP en temps real.
4. Explorar la base de dades
docker-compose exec mysql-mailcow mysql -u mailcow -p$(grep DBPASS mailcow.conf | cut -d= -f2) mailcow
Consultes útils:
Part 7: Envia un correu a un company de classe
En aquesta part haureu d'investigar/definir com poder enviar un correu electrònic des de la vostra infraestructura a la d'un company de classe.
Qüestions
Qüestió 1: Arquitectura de Components
Explica la funció de cadascun dels components de Mailcow:
a) Postfix:
b) Dovecot:
c) Rspamd:
d) SOGo:
e) Per què utilitzem MariaDB i Redis? Quines dades guarda cadascun?
Qüestió 2: Protocols i Ports
Completa la següent taula:
| Protocol | Port(s) | Ús (enviament/recepció) | Seguretat (SSL/TLS/STARTTLS) |
|---|---|---|---|
| SMTP | |||
| SMTPS | |||
| IMAP | |||
| POP3 |
Qüestió 3: Seguretat i Autenticació
a) Què és SPF i com protegeix contra el phishing?
b) Què és DKIM i com funciona la signatura digital?
c) Què és DMARC i com ajuda als destinataris a validar correus?
d) Per què és important utilitzar STARTTLS en lloc de connexions sense xifrar?
Qüestió 4: Diferència IMAP vs POP3
Explica les diferències principals entre IMAP i POP3. Quin és millor per a un usuari que accedeix al correu des de múltiples dispositius (PC, mòbil, tauleta)?
Lliurament
Captures de pantalla obligatòries
- docker-compose ps mostrant tots els contenidors Mailcow en
running/healthy - Interfície web d'administració mostrant el domini
NOMCOGNOM.localcreat - Llista de mailboxes amb els 3 usuaris creats (amb els teus noms)
- Configuració DKIM mostrant la clau pública generada
- Thunderbird configurat amb el compte
VOSTRENOM1@NOMCOGNOM.local - Correu rebut a la safata d'entrada mostrant el teu nom complet
- Headers del correu mostrant
DKIM-SignatureiX-Rspamd-Score - Webmail SOGo amb sessió iniciada i correu visible
- Logs de Postfix mostrant l'enviament d'un correu
- Consulta SQL mostrant els usuaris de la base de dades
Fitxers a incloure
mailcow.confpersonalitzat (amb contrasenyes amagades)- Captura de
docker-compose.yml(primers 50 línies)
Document PDF
Crea un document que inclogui:
- Portada amb el teu nom complet i data
- Captures de pantalla amb el teu nom visible
- Registres DNS (SPF, DKIM, DMARC) generats per al teu domini
- Respostes a les qüestions amb explicacions detallades
- Reflexió final (250-350 paraules):
- Avantatges de Mailcow respecte a configurar cada component manualment
- Importància de SPF, DKIM i DMARC en l'actualitat
- Diferències entre webmail i client de correu tradicional
- Desafiaments trobats durant la pràctica
- Possibles millores o configuracions addicionals
Criteris d'Avaluació
| Criteri | Puntuació |
|---|---|
| Mailcow desplegat correctament amb tots els contenidors operatius | 2,0 punts |
| Domini i mínim 3 usuaris creats amb personalització | 1,5 punts |
| SPF, DKIM i DMARC configurats i documentats | 1,5 punts |
| Enviament i recepció de correus funcional | 2,0 punts |
| Client de correu (Thunderbird o webmail) configurat | 1,0 punt |
| Captures de pantalla completes amb personalització | 1,0 punt |
| Respostes a qüestions correctes | 1,0 punt |
| TOTAL | 10,0 punts |
Penalitzacions: - -2,0 punts si no hi ha personalització amb NOMCOGNOM - -1,5 punts si DKIM no està configurat o no funciona - -1,0 punt si no es poden enviar/rebre correus entre usuaris - -0,5 punts si contrasenyes no amagades al document lliurat
Bonificacions opcionals: - +0,5 punts per configuració de greylisting funcional - +0,5 punts per anàlisi avançada dels headers amb totes les capçaleres explicades - +0,5 punts per configuració de regles Sieve per filtrar correus
Màxim bonificació total: +1,5 punts (nota màxima limitada a 10,0)
Recursos Addicionals
- Documentació oficial de Mailcow
- RFC 5321 - SMTP Protocol
- RFC 3501 - IMAP Protocol
- RFC 7208 - SPF
- RFC 6376 - DKIM
- RFC 7489 - DMARC
Data de creació: Gener 2025 Autor: Curs M0375 - Serveis de Xarxa i Internet