Ana Borrego Toledo

CONFIGURACIÓ DOVECOT - SERVIDOR DE CORREU ENTRANT

PART 1: CREACIÓ D’USUARIS DEL SISTEMA

1.1 – CREAR ELS USUARIS

useradd [opcions] nom_usuari

Verifica que els directoris home s’han creat:

ls -la /home/

1.2 – ASSIGNAR CONTRASENYES ALS USUARIS SEGUINT LA NOSTRA POLÍTICA DE CONTRASENYAS

passwd nom_usuari

PART 2: INSTAL·LACIÓ DE DOVECOT

2.1 – REPOSITORIS I FONTS DEL PAQUET

Concepte: Què és un repositori?

Un repositori és un servidor que conté paquets de programari compilats i preparats per instal·lar. 

A Rocky Linux, els repositoris oficials són:

  • BaseOS: Paquets base del sistema operatiu
  • AppStream: Aplicacions i eines addicionals
  • Extras: Paquets complementaris

Comprovem quins repositoris tenim actius i busquem Dovecot als repositoris::

dnf repolist
dnf search dovecot

Què són aquests paquets?

  • dovecot: Paquet principal (IMAP/POP3)
  • dovecot-pigeonhole: Plugin per filtres de correu (Sieve)
  • dovecot-mysql/pgsql: Per usuaris virtuals en base de dades.

2.2 – INSTAL·LACIÓ DE DOVECOT

dnf install dovecot -y

Verifica que s’ha instal·lat correctament:

# Versió de Dovecot
dovecot --version

# Estat del servei (encara no està iniciat)
systemctl status dovecot

# Fitxers instal·lats
rpm -ql dovecot | head -20

PART 3: CONFIGURACIÓ DE DOVECOT

3.1 – CÒPIA DE SEGURETAT (MOLT IMPORTANT!)

 

Concepte: Per què fer còpies de seguretat?

Abans de modificar QUALSEVOL fitxer de configuració, SEMPRE has de fer una còpia de seguretat. Per què?

  • Si fas un error, pots recuperar la configuració original
  • Pots comparar els canvis que has fet
  • És una pràctica professional obligatòria.

Fem la còpia de seguretat:

# Copiar tot el directori de configuració
cp -r /etc/dovecot /etc/dovecot.backup

# Verificar que s'ha copiat
ls -la /etc/ | grep dovecot

Ara ja pots modificar fitxers amb tranquil·litat! Si fas malbé alguna cosa, pots restaurar amb:

 

rm -rf /etc/dovecot
cp -r /etc/dovecot.backup /etc/dovecot

Editem el fitxer de configuració:

vim /etc/dovecot/conf.d/10-mail.conf

Busca la línia mail_location. 

Aquesta línia està comentada (té # al davant), per tant no està activa.

Modifica-la així:

# ABANS
#mail_location = mbox:~/mail:INBOX=/var/mail/%u
# DESPRÉS
# Ubicació dels correus: format Maildir al directori home de cada usuari
# maildir: indica el format Maildir (un fitxer per correu)
# ~/Maildir: cada usuari tindrà una carpeta Maildir al seu home (/home/usuari/Maildir)
# Aquest format és més segur, ràpid i fiable que mbox
mail_location = maildir:~/Maildir

Explicació línia per línia:

  • maildir: → Especifica que usem format Maildir
  • ~/Maildir~ significa el home de l’usuari (/home/aborrego/Maildir)
  • Cada usuari tindrà la seva pròpia carpeta Maildir

3.3 – CREAR LES CARPETES MAILDIR PER ALS USUARIS

 

Cada usuari necessita tenir aquesta estructura creada: 

 

/home/usuari/Maildir/
├── new/ ← Aquí arriben els correus nous
├── cur/ ← Correus llegits o marcats
└── tmp/ ← Zona temporal durant la recepció

 

Per què 3 carpetes?

  • tmp/: Quan arriba un correu, primer es guarda aquí (per evitar corrupció)
  • new/: Quan el correu està complet, es mou aquí (correu nou, no llegit)
  • cur/: Quan l’usuari llegeix el correu, es mou aquí

Creem les carpetes per cada usuari:

# Usuari: aborrego
mkdir -p /home/aborrego/Maildir/{new,cur,tmp}
chown -R aborrego:aborrego /home/aborrego/Maildir
chmod -R 700 /home/aborrego/Maildir

# Usuari: alozano
mkdir -p /home/alozano/Maildir/{new,cur,tmp}
chown -R alozano:alozano /home/alozano/Maildir
chmod -R 700 /home/alozano/Maildir

# Usuari: hbravo
mkdir -p /home/hbravo/Maildir/{new,cur,tmp}
chown -R hbravo:hbravo /home/hbravo/Maildir
chmod -R 700 /home/hbravo/Maildir

3.4 – CONFIGURACIÓ DE PROTOCOLS (IMAP, POP3, LMTP)

Concepte: Protocols de correu

 

IMAP (Internet Message Access Protocol) – Port 143/993

Client ←──→ Servidor 

Com funciona: Els correus es queden al servidor

Avantatge: Sincronització entre múltiples dispositius (mòbil, PC, web)

Ideal per: Usuaris que accedeixen des de múltiples llocs

  • Port 143**: IMAP sense xifrar – NO recomanat
  • Port 993**: IMAPS (IMAP amb SSL/TLS) – RECOMANAT

POP3 (Post Office Protocol) – Port 110/995** Client ←── Servidor

Com funciona: Descarrega els correus al client i els esborra del servidor.

Desavantatge: Els correus només estan en 1 dispositiu

Ideal per: Usuaris amb 1 sol dispositiu i espai limitat al servidor

Port 110**: POP3 sense xifrar (NO recomanat) – Port 995**: POP3S (POP3 amb SSL/TLS) – RECOMANAT

 

LMTP (Local Mail Transfer Protocol)

Postfix ──→ Dovecot (SMTP) (LMTP)

Editem el fitxer principal de Dovecot:

Busca la línia protocols. Modifica-la així:

# ABANS: 
#protocols = imap pop3 lmtp submission
# DESPRÉS:
protocols = imap pop3 lmtp

Què són aquests paquets?

  • dovecot: Paquet principal (IMAP/POP3)
  • dovecot-pigeonhole: Plugin per filtres de correu (Sieve)
  • dovecot-mysql/pgsql: Per usuaris virtuals en base de dades.

3.5 – CONFIGURACIÓ D’AUTENTICACIÓ

Concepte: Com s’autentiquen els usuaris?

 

Quan un usuari intenta accedir al seu correu, Dovecot ha de verificar la seva identitat: 

 

Client: “Soc aborrego, la meva contrasenya és XYZ” Dovecot: “Deixa’m comprovar…”

Dovecot comprova → /etc/shadow

Dovecot: “Correcte! Aquí tens els teus correus”

 

Mecanismes d’autenticació: Nosaltres usarem PLAIN i LOGIN sobre SSL/TLS (segur i compatible).

 

Editem el fitxer d’autenticació:

vi /etc/dovecot/conf.d/10-auth.conf

Busca i modifica aquestes línies:

1. Desactivar autenticació en text pla sense SSL:

# BUSCA:
disable_plaintext_auth = yes

# MODIFICA A:
disable_plaintext_auth = yes

# Desactivar autenticació en text pla sense SSL/TLS
# Això força que els usuaris SEMPRE usin connexions xifrades (IMAPS/POP3S)
# Si intenten connectar sense SSL amb usuari/contrasenya, es rebutjarà

2. Mecanismes d’autenticació:

# BUSCA:
auth_mechanisms = plain

# MODIFICA A:
auth_mechanisms = plain login

# Mecanismes d'autenticació permesos:
# - plain: usuari i contrasenya (sobre SSL és segur)
# - login: compatible amb més clients de correu (Outlook, etc.)

3. Habilitar autenticació amb usuaris del sistema:

# BUSCA:
#!include auth-system.conf.ext

# MODIFICA A:
!include auth-system.conf.ext

# Incloure configuració per autenticar amb usuaris del sistema Linux
# Això permet que aborrego, alozano i hbravo s'autentiquin amb les seves contrasenyes

4. Desactivar altres mètodes d’autenticació (per ara):

ASSEGURA’T que aquestes línies ESTAN comentades (amb #):

# No utilitzem autenticació SQL per ara (ho farem després per usuaris virtuals)
#!include auth-sql.conf.ext

# No utilitzem LDAP
#!include auth-ldap.conf.ext

# No utilitzem base de dades estàtica
#!include auth-static.conf.ext

PART 4: CONFIGURACIÓ SSL/TLS

4.1 – CONCEPTE: Què és SSL/TLS i per què és important?

 

SSL/TLS (Secure Sockets Layer / Transport Layer Security)

Quan un client de correu (Outlook, Thunderbird, mòbil) es connecta al servidor:

Sense SSL/TLS:

Client ─────→ [usuari: aborrego] [password: 1234] ─────→ Servidor
         📡 TEXT PLA visible per qualsevol! 📡
  • Qualsevol pot interceptar la comunicació
  • Contrasenyes visibles
  • Correus llegibles

Amb SSL/TLS:

Client ─────→ [dades xifrades incomprensibles] ─────→ Servidor
         🔒 XIFRAT amb criptografia 🔒
  • Comunicació xifrada
  • Contrasenyes protegides
  • Correus privats
  • Verificació de la identitat del servidor

Nosaltres NOMÉS habilitarem els ports SSL (993, 995) per màxima seguretat.

4.2 – VERIFICAR EL CERTIFICAT SSL

# Verificar que existeix
ls -la /etc/ssl/certs/postfix.pem

# Veure informació del certificat
openssl x509 -in /etc/ssl/certs/postfix.pem -text -noout | head -20

4.3 – CONFIGURACIÓ SSL A DOVECOT

Editem el fitxer SSL:

vi /etc/dovecot/conf.d/10-ssl.conf

Busca i modifica aquestes línies:

# BUSCA:
#ssl = yes

# MODIFICA A:
ssl = required

# - yes: SSL opcional (permet connexions sense SSL)
# - required: SSL OBLIGATORI (força connexions xifrades)
# Usem "required" per màxima seguretat: TOTES les connexions han de ser SSL

2. Especificar el certificat SSL:

# BUSCA:
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

# MODIFICA A:
ssl_cert = </etc/ssl/certs/postfix.pem
ssl_key = </etc/ssl/certs/postfix.pem

# Ruta del certificat SSL (el mateix que usa Postfix)
# El símbol < indica que llegeix el contingut del fitxer
# postfix.pem conté TANT el certificat com la clau privada

3. Versió mínima de TLS:

# BUSCA:
ssl_min_protocol = TLSv1.2

# MODIFICA A:
ssl_min_protocol = TLSv1.2

# Versió mínima de TLS acceptada
# TLSv1.2 és el mínim recomanat (TLSv1.0 i TLSv1.1 són insegurs)
# Això rebutja connexions amb protocols obsolets

4. Configurar xifratges forts:

# BUSCA:
#ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL

# MODIFICA A:
ssl_cipher_list = HIGH:!aNULL:!MD5:!RC4

# Preferir els xifratges del servidor (millor control de seguretat)
ssl_prefer_server_ciphers = yes

4.4 – VERIFICAR LA CONFIGURACIÓ SSL

doveconf -n | grep ssl

PART 5: INTEGRACIÓ AMB POSTFIX (LMTP i SMTP AUTH)

5.2 – CONFIGURACIÓ DE LMTP A DOVECOT

Concepte: Què és LMTP?

LMTP (Local Mail Transfer Protocol) és un protocol similar a SMTP però optimitzat per lliurament local. 

  1. LMTP: Postfix entrega correus a Dovecot
  2. SMTP AUTH: Postfix usa Dovecot per autenticar usuaris que envien correus

Editem la configuració de serveis:

Busca la secció service lmtp.

vim /etc/dovecot/conf.d/10-master.conf
MODIFICA TOTA la secció service lmtp així:

ELIMINA tot el contingut de service lmtp { ... } i SUBSTITUEIX-LO per:

service lmtp {
  # Socket Unix per comunicació amb Postfix
  # Postfix enviarà correus a Dovecot a través d'aquest socket
  # La ruta està dins de /var/spool/postfix perquè Postfix treballa en un chroot
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600          # Només root i postfix poden accedir
    user = postfix       # Propietari: usuari postfix
    group = postfix      # Grup: postfix
  }
}

5.3 – CONFIGURACIÓ D’AUTENTICACIÓ SMTP (SMTP AUTH)

Concepte: Per què necessitem SMTP AUTH?

Quan un usuari vol enviar un correu des del seu client: 

Sense SMTP AUTH:

  • ❌ Qualsevol podria enviar correus des del teu servidor
  • ❌ El teu servidor es convertiria en un relay obert (spam!)
  • ❌ Llistes negres bloquejarien el teu servidor

Amb SMTP AUTH:

  • ✅ Només usuaris autenticats poden enviar
  • ✅ Protecció contra spam
  • ✅ Control d’accés

Edita el mateix fitxer i busca la secció service auth:


vim /etc/dovecot/conf.d/10-master.conf

MODIFICA afegint DINS de service auth el nou socket

NO ELIMINIS el que hi ha, AFEGEIX el nou unix_listener dins de service auth:

service auth {
  # Socket per autenticació d'usuaris (consultes de base de dades interna)
  unix_listener auth-userdb {
    #mode = 0666
    #user = 
    #group = 
  }

  # Socket per a que Postfix pugui autenticar usuaris (SMTP AUTH)
  # Quan un usuari vol enviar un correu via SMTP, Postfix pregunta a Dovecot
  # si les credencials (usuari/contrasenya) són correctes
  # Dovecot comprova contra /etc/shadow i respon OK o ERROR
  unix_listener /var/spool/postfix/private/auth {
    mode = 0660          # Lectura/escriptura per propietari i grup
    user = postfix       # Propietari: postfix
    group = postfix      # Grup: postfix
  }
}

Verifica que la configuració de Dovecot és correcta:

doveconf -n | grep -A 5 "service lmtp"
doveconf -n | grep -A 10 "service auth"

5.4 – CONFIGURACIÓ DE POSTFIX PER USAR DOVECOT

Editem la configuració principal de Postfix:

vi /etc/postfix/main.cf

VES AL FINAL del fitxer i AFEGEIX aquestes línies:

# ============================================
# INTEGRACIÓ AMB DOVECOT
# ============================================

# --- LLIURAMENT DE CORREUS VIA DOVECOT LMTP ---
# En lloc de guardar correus directament a /var/mail (format mbox),
# Postfix envia els correus entrants a Dovecot via LMTP
# Dovecot els guarda a ~/Maildir/ de cada usuari (format Maildir)
# Això permet sincronització IMAP, millor rendiment i més fiabilitat
mailbox_transport = lmtp:unix:private/dovecot-lmtp

# --- AUTENTICACIÓ SMTP VIA DOVECOT (SMTP AUTH) ---
# Quan un usuari vol enviar un correu (port 587), Postfix usa
# Dovecot per verificar les seves credencials (usuari/contrasenya)

# Tipus d'autenticació SASL: Dovecot
# SASL = Simple Authentication and Security Layer
smtpd_sasl_type = dovecot

# Ruta del socket d'autenticació de Dovecot
# Postfix escriurà aquí per preguntar si les credencials són correctes
smtpd_sasl_path = private/auth

# Habilitar autenticació SMTP (permet que usuaris s'autentiquin)
smtpd_sasl_auth_enable = yes

# Opcions de seguretat SASL:
# - noanonymous: No permetre autenticació sense credencials
#   (obliga a proporcionar usuari i contrasenya)
smtpd_sasl_security_options = noanonymous

# Domini local per SASL (per defecte: serv-correu.illa4.local)
# Els usuaris poden autenticar-se com "aborrego" o "aborrego@illa4.local"
smtpd_sasl_local_domain = $myhostname

# Compatibilitat amb clients Outlook antics i altres clients amb bugs
# Alguns clients tenen implementacions SASL trencades, això els permet connectar
broken_sasl_auth_clients = yes
Explicació línia per línia:

1. mailbox_transport = lmtp:unix:private/dovecot-lmtp: Indica a Postfix que quan rebi un correu local (per aborrego@illa4.local), en lloc de guardar-lo directament a /var/mail/aborrego, ha de passar-lo a Dovecot via LMTP

2. smtpd_sasl_type = dovecot: Indica que usarem Dovecot com a backend d’autenticació SASL

3. smtpd_sasl_path = private/auth: Especifica el socket Unix on Dovecot escolta peticions d’autenticació

4. smtpd_sasl_auth_enable = yes: Activa l’autenticació SMTP (SMTP AUTH) i permet que els clients proporcionin usuari/contrasenya per enviar correus

5. smtpd_sasl_security_options = noanonymous:  Prohibeix autenticació sense credencials i obliga a proporcionar usuari i contrasenya

6. smtpd_sasl_local_domain = $myhostname: defineix el domini per defecte per autenticació i$myhostname s’expandeix a serv-correu.illa4.local.

7. broken_sasl_auth_clients = yes:Postfix ofereix mètodes d’autenticació addicionals per compatibilitat i no afecta la seguretat (encara requereix SSL/TLS)

5.5 – VERIFICAR CONFIGURACIÓ DE POSTFIX

postconf -n | grep -E "mailbox_transport|sasl"

5.6 – VERIFICAR CONFIGURACIÓ COMPLETA DE DOVECOT

Això mostra TOTA la configuració activa (sense comentaris). Revisa que apareguin:

 

  • protocols = imap pop3 lmtp
  • mail_location = maildir:~/Maildir
  • ssl = required
  • ssl_cert i ssl_key apuntant a /etc/ssl/certs/postfix.pem
  • Socket LMTP a /var/spool/postfix/private/dovecot-lmtp
  • Socket AUTH a /var/spool/postfix/private/auth
doveconf -n

PART 6: ARRENCAR ELS SERVEIS I FER PROVES

Ara que tot està configurat, arrencarem Dovecot i Postfix i farem proves de:

  1. Connexió IMAP/POP3
  2. Enviament de correu local
  3. Recepció de correu
  4. Autenticació

6.1 – ARRENCAR DOVECOT

 

Concepte: Ordre d’arrencada

És important arrencar els serveis en l’ordre correcte:

  1. Primer Dovecot (crea els sockets que Postfix necessita)
  2. Després Postfix (es connecta als sockets de Dovecot)
# Primer Dovecot (crea els sockets)
sudo systemctl enable --now dovecot

# Després Postfix
sudo systemctl enable --now postfix

# Comprova estat
sudo systemctl status dovecot
sudo systemctl status postfix

Verifica els ports oberts:

ss -tuln | grep -E ':(143|993|110|995)'

6.2 – Comprovar sockets

sudo ls -lZ /var/spool/postfix/private/ | grep -E 'dovecot-lmtp|auth'

Verificar que Postfix pot accedir als sockets de Dovecot:

postconf -d | grep virtual_transport
postconf mailbox_transport

6.4 – CONFIGURAR FIREWALL

 

Concepte: Per què obrir ports al firewall?

Rocky Linux té firewalld actiu per defecte. Aquest firewall bloqueja tots els ports que no estiguin explícitament permesos.

Necessitem obrir els ports de:

  • IMAPS (993): Per que els clients puguin llegir correus
  • POP3S (995): Per compatibilitat amb clients POP3
  • SMTP Submission (587): Per que els clients puguin enviar correus autenticats (aquest ja hauria d’estar obert si tens Postfix configurat)
firewall-cmd --state

Veure els serveis permesos actualment i busca si ja tens imap, imaps, pop3, pop3s a la llista de serveis.

firewall-cmd --list-all

Obre els ports necessaris:

# Obrir IMAP amb SSL (port 993)
firewall-cmd --permanent --add-service=imaps

# Obrir POP3 amb SSL (port 995)
firewall-cmd --permanent --add-service=pop3s

# Si vols també els ports sense SSL (NO recomanat, però per proves):
# firewall-cmd --permanent --add-service=imap
# firewall-cmd --permanent --add-service=pop3

# Recarregar el firewall per aplicar els canvis
firewall-cmd --reload

Verifica que s’han obert. Hauries de veure imaps i pop3s a la llista. 

firewall-cmd --list-all
ss -tuln | grep -E ':(143|993|110|995)

6.6 – PROVA DE CONNEXIÓ BÀSICA (TELNET)

 

Provar connexió amb telnet

Abans de configurar un client de correu complet, podem fer una prova bàsica amb telnet:

Prova 1: Connexió IMAP (port 143 – hauria de fallar si ssl=required):

telnet localhost 143

Això és correte perquè hem forçat SSL.

Prova 2: Connexió IMAPS amb OpenSSL:

openssl s_client -connect localhost:993 -crlf

Prova 3: Autenticació IMAP:

Dins de la connexió OpenSSL anterior, pots provar autenticar-te. Si veus OK Logged in, l’autenticació funciona.

# Connectar
openssl s_client -connect localhost:993 -crlf

# Dins de la connexió, escriu:
a1 LOGIN aborrego la_contrasenya_que_vas_posar

PART 7: PROVES COMPLETES DEL SISTEMA

7.1 – PROVA D’ENVIAMENT DE CORREU LOCAL

Instal·lar l’eina mailx (si no la tens) o Instal·lar s-nail:

dnf install s-nail -y

Enviar amb el teu usuari creat, en el meu cas com a aborrego.

su - aborrego
echo "Ara hauria de funcionar perfectament!" | mail -s "Test definitiu" hbravo@illa4.local
exit

Verificar com a root:

tail -30 /var/log/maillog

Verificar que el coreu ha arribat:

ls -la /home/hbravo/Maildir/new/

LLEGEIX EL CORREU:

cat /home/hbravo/Maildir/new/*

PROVA AMB TOTS ELS USUARIS i VERIFICA QUE TOTS HAN REBUT CORREUS:

ls /home/aborrego/Maildir/new/
ls /home/alozano/Maildir/new/
ls /home/hbravo/Maildir/new/

PROVA LLEGIR UN CORREU VIA IMAP:

openssl s_client -connect localhost:993 -crlf -quiet

**Dins de la connexió IMAP, escriu:**

a1 LOGIN hbravo contrasenya_de_hbravo
a2 SELECT INBOX
a3 FETCH 1:* (FLAGS BODY[HEADER.FIELDS (FROM TO SUBJECT DATE)])
a4 LOGOUT

EL MEU SERVIDOR DE CORREU:

  1. Instal·lar i configurar Dovecot des de zero
  2. Crear usuaris del sistema amb contrasenyes
  3. Configurar Maildir per emmagatzematge eficient
  4. Integrar Postfix amb Dovecot via LMTP i SMTP AUTH
  5. Configurar SSL/TLS per connexions segures
  6. Configurar autenticació per eliminar dominis
  7. Obrir ports al firewall correctament
  8. Enviar i rebre correus entre múltiples usuaris
  9. Verificar que tot funciona amb logs i proves reals
en_USEnglish
Ana Borrego Toledo