SOGo

Cicle formatiu: CFGM Sistemes Microinformàtics i Xarxes (SMX) / CFGS Administració de sistemes informàtics en xarxa (ASIX)

Mòdul: 0227 - Serveis de xarxa / 0375 - Serveis de xarxa i Internet

Sistema operatiu: Ubuntu Server 26.04 LTS

1. Què és SOGo

SOGo (Scalable OpenGroupware.org) és un servidor de groupware lliure i modern que ofereix calendaris compartits, llibretes d’adreces i correu electrònic a través d’un navegador web (interfície AJAX) o de clients natius com Mozilla Thunderbird, Apple Calendar/Contacts o Microsoft Outlook.

SOGo logo

A diferència de solucions com Microsoft Exchange o Zimbra, SOGo no reimplementa els serveis de correu, directori o base de dades: reutilitza la infraestructura ja existent (IMAP, SMTP, LDAP, SQL), fent-lo fàcil d’integrar en un entorn ja muntat. És, per tant, la peça que falta entre el servidor de correu/directori i l’usuari final, oferint una interfície unificada.

Va néixer com a evolució del projecte OpenGroupware.org (Skyrix, 1998) i té la primera versió estable el 2009. Actualment, el desenvolupa i el manté l’empresa canadenca Inverse (avui part d’Alinto).

💡
Nota

Un servidor groupware és un sistema que centralitza i coordina la informació i les eines de treball col·laboratiu d’un grup d’usuaris o d’una organització, en lloc de deixar que cadascú gestioni les seves dades de manera aïllada. Típicament ofereix, com a mínim, aquests tres pilars:

Correu electrònic: bústies compartides o individuals accessibles des de qualsevol client (IMAP/SMTP).

Calendaris compartits: permeten veure la disponibilitat d’altres usuaris, convocar reunions, reservar recursos (sales, projectors) i sincronitzar cites entre dispositius.

Llibretes d’adreces compartides: un directori de contactes comú per a tota l’organització (sovint anomenat GAL, Global Address List).

2. Llicència

SOGo es distribueix sota llicències lliures:

És programari 100% lliure i gratuït: no hi ha edició “community” limitada ni funcionalitats tancades darrere d’un mur de pagament, a diferència d’altres solucions de groupware comercials. Alinto ofereix, opcionalment, suport professional i un dipòsit de paquets de producció (de pagament), però l’ús del programari en si no requereix cap llicència comercial.

3. Funcionalitats

4. Requisits

SOGo reutilitza serveis existents, així que abans d’instal·lar-lo cal tenir (o preveure instal·lar):

Component Opcions suportades
Base de dades MariaDB / MySQL, PostgreSQL, Oracle
Directori d’usuaris OpenLDAP, Samba AD-DC, Microsoft Active Directory, Novell eDirectory
Servidor IMAP Dovecot ≥ 2.x o Cyrus IMAP ≥ 2.4 (amb extensions ACL, UIDPLUS, QRESYNC/CONDSTORE i ANNOTATE o X-GUID si es vol ActiveSync)
Servidor SMTP Postfix, Exim, etc.
Servidor web (proxy invers) Apache2 o Nginx
Memòria compartida Memcached (recomanat per a sessions i rendiment)

Recursos de maquinari orientatius per a un entorn petit/mitjà (docència, laboratori, PIME):

5. Escenari d’aquest document

Rol Hostname IP Sistema
Servidor correu + SOGo correu 10.0.2.10 Ubuntu Server 26.04
Servidor OpenLDAP ldapserver 10.0.2.20 Ubuntu Server 26.04
Client client IP dinàmica: 10.0.2.14 Ubuntu Desktop 26.04
Domini LDAP dc=thos,dc=local

5.1. Topologia de xarxa

Topologia de xarxa

5.2. Diagrama de fluxos d’autenticació

Fluxos d’autenticació

6. PART 1: Implementació de la màquina correu

6.1. Configuració prèvia del sistema

Abans de començar, fes les configuracions bàsiques del servidor (hostname, IP, hosts, ports i actualització).

Canvia el nom de la màquina:

sudo hostnamectl set-hostname correu

Edita el fitxer de hosts:

sudo nano /etc/hosts
127.0.0.1 localhost
10.0.2.10 correu.thos.local correu
10.0.2.20 ldapserver.thos.local ldapserver

Actualitza la llista de paquets:

sudo apt update

Actualitza els paquets:

sudo apt upgrade

6.2. Certificat TLS únic per a tots els serveis d’aquesta màquina

Instal·la ssl-cert que crea un certificat autosignat SSL/TSL “snakeoil” i el grup d’usuaris ssl-cert:

sudo apt install ssl-cert

Crea la carpeta per als certificats de thos.local:

sudo mkdir -p /etc/ssl/thos

Genera un certificat autosignat per al servidor de correu:

sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
  -keyout /etc/ssl/thos/correu.key \
  -out /etc/ssl/thos/correu.crt \
  -subj "/C=ES/ST=Catalunya/L=Mataro/O=IES Thos i Codina/OU=ASIX/CN=correu.thos.local"

Canvia els permisos de la clau:

sudo chmod 640 /etc/ssl/thos/correu.key

Canvia el propietari de la clau:

sudo chown root:ssl-cert /etc/ssl/thos/correu.key

6.3. Postfix

Instal·la Postfix:

sudo apt install postfix
Pregunta Resposta
Tipus de configuració Lloc d'Internet
Nom del correu del sistema thos.local

Autenticació SMTP (SASL via Dovecot)

Per configurar Postfix per a SMTP-AUTH mitjançant SASL (Dovecot SASL), executa aquestes ordres al terminal:

Delega l’autenticació a Dovecot:

sudo postconf -e 'smtpd_sasl_type = dovecot'

Indica la ruta:

sudo postconf -e 'smtpd_sasl_path = private/auth'

Deixa el domini local buit explícitament:

sudo postconf -e 'smtpd_sasl_local_domain ='

Prohibeix els mecanismes SASL que permeten autenticació anònima:

sudo postconf -e 'smtpd_sasl_security_options = noanonymous'

Activa compatibilitat amb clients de correu antics:

sudo postconf -e 'broken_sasl_auth_clients = yes'

Activa el mecanisme d’autenticació SMTP:

sudo postconf -e 'smtpd_sasl_auth_enable = yes'

Defineix la política de qui pot enviar correu cap a on. Si el client s’ha autenticat amb usuari/contrasenya (via SASL/Dovecot), es permet immediatament, sigui quina sigui la destinació. Si no s’ha autenticat, però la petició ve d’una xarxa de confiança definida a mynetworks (per exemple la teva pròpia xarxa interna thos.local), també es permet:

sudo postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,reject_unauth_destination'
💡
Nota

El paràmetre de configuració smtpd_sasl_path és una ruta relativa al directori de cua de Postfix, normalment /var/spool/postfix/.

Hi ha diverses propietats del mecanisme SASL que val la pena avaluar per millorar la seguretat del desplegament. L’opció “noanonymous” impedeix l’ús de mecanismes que permeten l’autenticació anònima.

TLS (certificat compartit)

Configura el xifratge TLS de Postfix, tant per al correu que envia cap a fora (client SMTP) com per al que rep dels teus usuaris/clients (servidor SMTP).

Intenta sempre fer STARTTLS si el servidor remot ho ofereix, però si el remot no ho suporta, continua sense xifrar en lloc de fallar l’entrega. És el nivell més compatible, pensat perquè el correu surti igualment encara que el destinatari no tingui TLS.:

sudo postconf -e 'smtp_tls_security_level = may'

Exigeix STARTTLS abans d’acceptar el missatge:

sudo postconf -e 'smtpd_tls_security_level = encrypt'

Afegeix un avís als logs (Warning: ... TLS is available but was not used). És purament informatiu, per detectar servidors remots mal configurats:

sudo postconf -e 'smtp_tls_note_starttls_offer = yes'

Nivell de detall dels registres relacionats amb TLS al costat servidor. 1 és un nivell bàsic:

sudo postconf -e 'smtpd_tls_loglevel = 1'

Fa que Postfix afegeixi informació sobre el xifratge TLS usat dins la capçalera de cada missatge que rep:

sudo postconf -e 'smtpd_tls_received_header = yes'

Nom canònic del servidor de correu:

sudo postconf -e 'myhostname = correu.thos.local'

Ruta al certificat públic que Postfix presentarà als clients quan aquests facin STARTTLS:

sudo postconf -e 'smtpd_tls_cert_file=/etc/ssl/thos/correu.crt'

Ruta a la clau privada corresponent a aquest certificat:

sudo postconf -e 'smtpd_tls_key_file=/etc/ssl/thos/correu.key'

Canvia el propietari del fitxer /var/spool/postfix/etc/resolv.conf:

sudo chown root:root /var/spool/postfix/etc/resolv.conf

SMTPS (465) i Submission (587)

SMTPS (port 465) és el protocol SMTP però amb xifratge TLS des del primer moment (TLS implícit). Es configura al fitxer /etc/postfix/master.cf

sudo nano -l /etc/postfix/master.cf

Comenta la línia 12:

#smtp      inet  n       -       n       -       -       smtpd

Enganxa aquestes línies a continuació de la línia 12:

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
submission inet n - y - - smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o smtpd_tls_auth_only=yes

Comprova la sintaxi de la configuració:

sudo postfix check

Reinicia el dimoni de Postfix:

sudo systemctl restart postfix

Verifica l’estat:

sudo systemctl status postfix

Resposta esperada:

● postfix.service - Postfix Mail Transport Agent (main/default instance)
     Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; preset: enabled)
     Active: active (running) since Wed 2026-07-15 13:56:29 UTC; 4s ago
 Invocation: 2676a0780d9d457f9c60041a694cce81
       Docs: man:postfix(1)
    Process: 3697 ExecStartPre=postfix check (code=exited, status=0/SUCCESS)
    Process: 3803 ExecStart=postfix debian-systemd-start (code=exited, status=0/SUCCESS)
   Main PID: 3811 (master)
      Tasks: 3 (limit: 1718)
     Memory: 2.9M (peak: 4.1M)
        CPU: 222ms
     CGroup: /system.slice/postfix.service
             ├─3811 /usr/lib/postfix/sbin/master -w
             ├─3812 pickup -l -t unix -u
             └─3813 qmgr -l -t unix -u

de jul. 15 13:56:29 correu systemd[1]: Starting postfix.service - Postfix Mail Transport Agent (main/default instance)...
de jul. 15 13:56:29 correu postfix/master[3811]: daemon started -- version 3.10.6, configuration /etc/postfix
de jul. 15 13:56:29 correu systemd[1]: Started postfix.service - Postfix Mail Transport Agent (main/default instance).

6.4. Dovecot amb autenticació LDAP

Dovecot és el servidor IMAP/POP3 que permet accés a les bústies, i també s’utilitza per autenticació (SASL).

Instal·la Dovecot:

sudo apt install dovecot-core dovecot-imapd dovecot-pop3d dovecot-ldap

Certificat TLS

Edita la configuració específica de Dovecot relativa als paràmetres SSL/TLS:

sudo nano /etc/dovecot/conf.d/10-ssl.conf

Comenta les línies:

#ssl_server_cert_file = /etc/dovecot/private/dovecot.pem
#ssl_server_key_file = /etc/dovecot/private/dovecot.key

Afegeix les línies:

ssl_server_cert_file = /etc/ssl/thos/correu.crt
ssl_server_key_file = /etc/ssl/thos/correu.key

Esquema de bústies vmail

Crea el grup vmail:

sudo groupadd -g 5000 vmail

Crea l’usuari vmail:

sudo useradd -u 5000 -g vmail -d /var/mail/vhosts \
  -s /usr/sbin/nologin vmail

Crea la carpeta home de l’usuari vmail:

sudo mkdir -p /var/mail/vhosts

Canvia el propietari i el grup de la carpeta:

sudo chown vmail:vmail /var/mail/vhosts

Canvia els permisos:

sudo chmod 700 /var/mail/vhosts

Edita la configuració de Dovecot que defineix on i com s’emmagatzemen els correus dels usuaris (el “mail storage”):

sudo nano /etc/dovecot/conf.d/10-mail.conf

Comenta:

#mail_driver = mbox
#mail_home = /home/%{user | username}
#mail_path = %{home}/mail
#mail_inbox_path = /var/mail/%{user}

Afegeix:

mail_driver = maildir
mail_path = /var/mail/vhosts/%{user}
mailbox_list_layout = fs

Autenticació d’usuaris LDAP

Defineix el mecanisme d’autenticació general de Dovecot: quins mètodes es permeten, si es permet autenticació en clar, i quins “backends” s’activen.

sudo nano -l /etc/dovecot/conf.d/10-auth.conf

Comenta la línia 116:

#!include auth-system.conf.ext

Descomenta les línies:

!include auth-ldap.conf.ext
auth_mechanisms = plain login

Defineix com Dovecot es connecta al servidor LDAP per validar credencials i obtenir informació de l’usuari (com el seu home, uid/gid, o la ruta del maildir):

sudo nano /etc/dovecot/conf.d/auth-ldap.conf.ext

Afegeix al final:

ldap_uris = ldap://ldapserver.thos.local
ldap_auth_dn = cn=admin,dc=thos,dc=local
ldap_auth_dn_password = CONTRASENYA_LDAP
ldap_base = ou=Usuaris,dc=thos,dc=local
passdb ldap {
  passdb_ldap_filter = (|(uid=%{user})(mail=%{user}))
  ldap_bind = yes
  fields {
    user = %{ldap:uid}
  }
}
userdb ldap {
  userdb_ldap_filter = (|(uid=%{user})(mail=%{user}))
  fields {
    user = %{ldap:uid}
    uid = vmail
    gid = vmail
    home = /var/mail/vhosts/%{ldap:uid}
  }
}

Defineix els processos i sockets que Dovecot fa servir internament — no és tan sobre “com autenticar” o “on són els correus”, sinó sobre com es comuniquen entre si els diferents components de Dovecot.

sudo nano -l /etc/dovecot/conf.d/10-master.conf

Afegeix a la línia 108:

  unix_listener /var/spool/postfix/private/auth {
    mode = 0660
    user = postfix
    group = postfix
  }

Mostra la configuració efectiva de Dovecot, però amb una particularitat important: només mostra les directives que difereixen dels valors per defecte (o que has configurat explícitament), no tot el fitxer de configuració complet, i detecta errors de sintaxi immediatament:

sudo doveconf -n

Reinicia el dimoni:

sudo systemctl restart dovecot

Verifica l’estat del servei:

sudo systemctl status dovecot

Resposta esperada:

● dovecot.service - Dovecot IMAP/POP3 email server
     Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; preset: enabled)
     Active: active (running) since Wed 2026-07-15 14:10:32 UTC; 7s ago
 Invocation: 5dd78e1a7c7546f1978edac259315063
       Docs: man:dovecot(1)
             https://doc.dovecot.org/
   Main PID: 6962 (dovecot)
     Status: "v2.4.2 (0962ed2104) running"
      Tasks: 4 (limit: 1718)
     Memory: 7.5M (peak: 9.5M)
        CPU: 47ms
     CGroup: /system.slice/dovecot.service
             ├─6962 /usr/sbin/dovecot -F
             ├─6965 dovecot/anvil
             ├─6966 dovecot/log
             └─6967 dovecot/config

de jul. 15 14:10:32 correu systemd[1]: Starting dovecot.service - Dovecot IMAP/POP3 email server...
de jul. 15 14:10:32 correu dovecot[6962]: master: Dovecot v2.4.2 (0962ed2104) starting up for imap, pop3 (core dumps disabled)
de jul. 15 14:10:32 correu systemd[1]: Started dovecot.service - Dovecot IMAP/POP3 email server.

7. PART 2: Implementació de la màquina ldapserver

7.1. Prepara el sistema

Actualitza la llista de paquets:

sudo apt update

Actualitza el sistema:

sudo apt upgrade

Configura el hostname:

sudo hostnamectl set-hostname ldapserver

Afegeix l’entrada al fitxer /etc/hosts:

sudo nano /etc/hosts

Afegeix aquestes línies:

10.0.2.10 correu.thos.local correu
10.0.2.20 ldapserver.thos.local ldapserver

Comprova:

hostname -f

Resposta esperada:

ldapserver.thos.local

7.2. Instal·la els paquets de LDAP

sudo apt install slapd ldap-utils

Durant la instal·lació, el sistema demanarà la contrasenya de l’administrador LDAP. Introdueix-la i confirma-la.

📌
Important

Recorda aquesta contrasenya; és la de cn=admin,dc=thos,dc=local. Al llarg d’aquest document apareix diverses vegades com: CONTRASENYA_LDAP

7.3. Verifica la instal·lació

Comprova que el servei està actiu:

sudo systemctl status slapd

Resposta esperada:

● slapd.service - OpenLDAP Server Daemon
     Loaded: loaded (/usr/lib/systemd/system/slapd.service; enabled; preset: enabled)
     Active: active (running) since Wed 2026-07-15 14:14:09 UTC; 1min 26s ago
 Invocation: 8e814a25fc784a1ca82e56a7e41380d4
       Docs: man:slapd
             man:slapd-config
             man:slapd-mdb
   Main PID: 3446 (slapd)
      Tasks: 3 (limit: 1718)
     Memory: 3M (peak: 3.4M)
        CPU: 16ms
     CGroup: /system.slice/slapd.service
             └─3446 /usr/sbin/slapd -d0 -h "ldap:/// ldapi:///" -u openldap -g openldap

de jul. 15 14:14:09 ldapserver systemd[1]: Starting slapd.service - OpenLDAP Server Daemon...
de jul. 15 14:14:09 ldapserver slapd[3446]: @(#) $OpenLDAP: slapd 2.6.10+dfsg-1ubuntu5 (Nov 24 2025 11:17:55) $
                                                    Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
de jul. 15 14:14:09 ldapserver slapd[3446]: slapd starting
de jul. 15 14:14:09 ldapserver systemd[1]: Started slapd.service - OpenLDAP Server Daemon.

Comprova que escolta al port 389:

sudo ss -tlnp | grep slapd

Resposta esperada:

LISTEN 0      2048         0.0.0.0:389       0.0.0.0:*    users:(("slapd",pid=3446,fd=7))
LISTEN 0      2048            [::]:389          [::]:*    users:(("slapd",pid=3446,fd=8)) 

Prova de connexió bàsica (sense autenticació):

ldapsearch -x -b "dc=thos,dc=local" -H ldap://localhost

Resposta esperada:

# extended LDIF
#
# LDAPv3
# base <dc=thos,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# thos.local
dn: dc=thos,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: thos.local
dc: thos

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Prova amb autenticació d’administrador:

ldapsearch -x -D "cn=admin,dc=thos,dc=local" -W -b "dc=thos,dc=local"

La resposta ha de mostrar l’entrada arrel del directori.

Resposta esperada:

Enter LDAP Password: 
# extended LDIF
#
# LDAPv3
# base <dc=thos,dc=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# thos.local
dn: dc=thos,dc=local
objectClass: top
objectClass: dcObject
objectClass: organization
o: thos.local
dc: thos

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

7.4. Activa el log del servidor

Crea el fitxer log.ldif:

sudo nano log.ldif
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats

Aplica’l:

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f log.ldif

Configura rsyslog per separar els logs de LDAP:

sudo nano /etc/rsyslog.d/10-slapd.conf
local4.*    /var/log/slapd.log

Reinicia syslog:

sudo systemctl restart rsyslog

Reinicia ldap:

sudo systemctl restart slapd

7.5. Afegeix índexs per millorar el rendiment

sudo nano index.ldif
# fitxer: index.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcDbIndex
olcDbIndex: objectClass eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: cn eq,pres,sub
olcDbIndex: sn eq,pres,sub
olcDbIndex: mail eq,pres,sub
olcDbIndex: memberUid eq
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f index.ldif

7.6. Crea les unitats organitzatives bàsiques

Crea el fitxer estructura.ldif:

sudo nano estructura.ldif
# Unitat organitzativa: Usuaris
dn: ou=Usuaris,dc=thos,dc=local
objectClass: organizationalUnit
ou: Usuaris
description: Usuaris del sistema

# Unitat organitzativa: Grups
dn: ou=Grups,dc=thos,dc=local
objectClass: organizationalUnit
ou: Grups
description: Grups del sistema

Importa l’estructura:

ldapadd -x -D "cn=admin,dc=thos,dc=local" -W -f estructura.ldif

Resposta esperada:

Enter LDAP Password: 
adding new entry "ou=Usuaris,dc=thos,dc=local"

adding new entry "ou=Grups,dc=thos,dc=local"

Verifica:

ldapsearch -x -b "dc=thos,dc=local" -H ldap://localhost "(objectClass=organizationalUnit)"

Resposta esperada:

# extended LDIF
#
# LDAPv3
# base <dc=thos,dc=local> with scope subtree
# filter: (objectClass=organizationalUnit)
# requesting: ALL
#

# Usuaris, thos.local
dn: ou=Usuaris,dc=thos,dc=local
objectClass: organizationalUnit
ou: Usuaris
description: Usuaris del sistema

# Grups, thos.local
dn: ou=Grups,dc=thos,dc=local
objectClass: organizationalUnit
ou: Grups
description: Grups del sistema

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2

7.7. Crea usuaris

Primer, genera un hash de contrasenya:

Introdueix la contrasenya i et retornarà el hash {SSHA}…

slappasswd

Resposta esperada:

New password: 
Re-enter new password: 
{SSHA}TBIdrK2UoZVHk6h9bORCURCYz/3DccH2

Crea el fitxer usuaris.ldif:

sudo nano usuaris.ldif
# Usuari: Joan Garcia
dn: uid=joan,ou=Usuaris,dc=thos,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: joan
cn: Joan Garcia
sn: Garcia
givenName: Joan
displayName: Joan Garcia
mail: joan@thos.local
uidNumber: 10001
gidNumber: 10001
homeDirectory: /home/joan
loginShell: /bin/bash
userPassword: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

# Usuari: Maria Puig
dn: uid=maria,ou=Usuaris,dc=thos,dc=local
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: maria
cn: Maria Puig
sn: Puig
givenName: Maria
displayName: Maria Puig
mail: maria@thos.local
uidNumber: 10002
gidNumber: 10001
homeDirectory: /home/maria
loginShell: /bin/bash
userPassword: {SSHA}XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
📌
Important

Substitueix {SSHA}XXXXX... pel hash generat amb slappasswd.

ldapadd -x -D "cn=admin,dc=thos,dc=local" -W -f usuaris.ldif

Resposta esperada:

Enter LDAP Password: 
adding new entry "uid=joan,ou=Usuaris,dc=thos,dc=local"

adding new entry "uid=maria,ou=Usuaris,dc=thos,dc=local"

7.8. Crea grups

Crea el fitxer grups.ldif:

sudo nano grups.ldif
# Grup: professors
dn: cn=professors,ou=Grups,dc=thos,dc=local
objectClass: posixGroup
cn: professors
gidNumber: 10001
memberUid: joan
memberUid: maria

# Grup: alumnes
dn: cn=alumnes,ou=Grups,dc=thos,dc=local
objectClass: posixGroup
cn: alumnes
gidNumber: 10002
ldapadd -x -D "cn=admin,dc=thos,dc=local" -W -f grups.ldif

Resposta esperada:

Enter LDAP Password: 
adding new entry "cn=professors,ou=Grups,dc=thos,dc=local"

adding new entry "cn=alumnes,ou=Grups,dc=thos,dc=local"

8. PART 3: Continuació de la implementació de la màquina correu

8.1. Verificació de LDAP (client-side)

Instal·la les eines de línia d’ordres per interactuar directament amb servidors LDAP:

sudo apt install ldap-utils

Consulta la resolució de noms del sistema per a ldapserver.thos.local:

getent hosts ldapserver.thos.local

Resposta esperada:

10.0.2.20       ldapserver.thos.local ldapserver

Consulta LDAP per verificar l’existència (i el DN) de l’usuari joan:

ldapsearch -x -H ldap://ldapserver.thos.local \
  -D "cn=admin,dc=thos,dc=local" \
  -w CONTRASENYA_LDAP \
  -b "ou=Usuaris,dc=thos,dc=local" "(uid=joan)" dn

Resposta esperada:

# extended LDIF
#
# LDAPv3
# base <> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1
-b: command not found

8.2. Dovecot: entrega LMTP i comunicació amb Postfix

Demana a Dovecot que llisti les bústies (mailboxes/carpetes) de l’usuari joan:

sudo doveadm mailbox list -u joan

Resposta esperada:

INBOX

Instal·la el paquet que afegeix el suport per al protocol LMTP (Local Mail Transfer Protocol) a Dovecot:

sudo apt install dovecot-lmtpd

Modifica la definició els processos i sockets que Dovecot fa servir internament — no és tan sobre “com autenticar” o “on són els correus”, sinó sobre com es comuniquen entre si els diferents components de Dovecot.

sudo nano /etc/dovecot/conf.d/10-master.conf

Dins del bloc service lmtp { ... }, afegeix:

  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode = 0600
    user = postfix
    group = postfix
  }

8.3. Postfix: mapa LDAP per a destinataris

Afegeix a Postfix el suport per consultar mapes (maps) directament des d’un servidor LDAP:

sudo apt install postfix-ldap

Edita el fitxer de configuració de mapa LDAP per a Postfix:

sudo nano /etc/postfix/ldap-users.cf
server_host = ldapserver.thos.local
search_base = ou=Usuaris,dc=thos,dc=local
bind = yes
bind_dn = cn=admin,dc=thos,dc=local
bind_pw = CONTRASENYA_LDAP
query_filter = (mail=%s)
result_attribute = mail

Canvia els permisos:

sudo chmod 640 /etc/postfix/ldap-users.cf

Canvia el grup:

sudo chgrp postfix /etc/postfix/ldap-users.cf

8.4. Postfix: configuració de dominis virtuals

Defineix la llista de dominis pels quals Postfix accepta correu com a destinatari final via virtual mailboxes:

sudo postconf -e 'virtual_mailbox_domains = thos.local'

Defineix quin mecanisme de transport fa servir Postfix per lliurar correu als destinataris dels dominis virtuals:

sudo postconf -e 'virtual_transport = lmtp:unix:private/dovecot-lmtp'

Indica que, en lloc d’un mapa estàtic, Postfix consultarà en temps real el fitxer LDAP configurat:

sudo postconf -e 'virtual_mailbox_maps = ldap:/etc/postfix/ldap-users.cf'

Fixa mydestination explícitament al valor “segur” per defecte:

sudo postconf -e 'mydestination = $myhostname, localhost.$mydomain, localhost'

8.5. Validació i aplicació dels canvis

Valida la configuració i l’entorn de Postfix:

sudo postfix check

Reinicia el servei Dovecot:

sudo systemctl restart dovecot

Comprova l’estat del servei Dovecot:

sudo systemctl status dovecot

Resposta esperada:

● dovecot.service - Dovecot IMAP/POP3 email server
     Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; preset: enabled)
     Active: active (running) since Wed 2026-07-15 14:27:54 UTC; 35s ago
 Invocation: 7439f50a31d54dde87a8a4c6be272946
       Docs: man:dovecot(1)
             https://doc.dovecot.org/
   Main PID: 7848 (dovecot)
     Status: "v2.4.2 (0962ed2104) running"
      Tasks: 4 (limit: 1718)
     Memory: 7.5M (peak: 9.7M)
        CPU: 49ms
     CGroup: /system.slice/dovecot.service
             ├─7848 /usr/sbin/dovecot -F
             ├─7849 dovecot/anvil
             ├─7850 dovecot/log
             └─7851 dovecot/config

de jul. 15 14:27:54 correu systemd[1]: Starting dovecot.service - Dovecot IMAP/POP3 email server...
de jul. 15 14:27:54 correu dovecot[7848]: master: Dovecot v2.4.2 (0962ed2104) starting up for imap, lmtp, pop3 (core dumps disabled)
de jul. 15 14:27:54 correu systemd[1]: Started dovecot.service - Dovecot IMAP/POP3 email server.

Reinicia el servei Postfix:

sudo systemctl restart postfix

Comprova l’estat del servei Postfix:

sudo systemctl status posfix

Resposta esperada:

● postfix.service - Postfix Mail Transport Agent (main/default instance)
     Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; preset: enabled)
     Active: active (running) since Wed 2026-07-15 14:27:59 UTC; 2min 44s ago
 Invocation: e39eab1d6ac741c386a20cb8711b2309
       Docs: man:postfix(1)
    Process: 7867 ExecStartPre=postfix check (code=exited, status=0/SUCCESS)
    Process: 7972 ExecStart=postfix debian-systemd-start (code=exited, status=0/SUCCESS)
   Main PID: 7980 (master)
      Tasks: 3 (limit: 1718)
     Memory: 2.9M (peak: 4.3M)
        CPU: 221ms
     CGroup: /system.slice/postfix.service
             ├─7980 /usr/lib/postfix/sbin/master -w
             ├─7981 pickup -l -t unix -u
             └─7982 qmgr -l -t unix -u

de jul. 15 14:27:59 correu systemd[1]: Starting postfix.service - Postfix Mail Transport Agent (main/default instance)...
de jul. 15 14:27:59 correu postfix/master[7980]: daemon started -- version 3.10.6, configuration /etc/postfix
de jul. 15 14:27:59 correu systemd[1]: Started postfix.service - Postfix Mail Transport Agent (main/default instance).

8.6. Activa el dipòsit universe i actualitza

Ubuntu 26.04 LTS ja inclou el paquet sogo al dipòsit universe, amb la versió 5.12.4, així que no cal afegir el dipòsit de pagament d’Alinto per fer proves o per a un ús no crític; n’hi ha prou amb els dipòsits oficials d’Ubuntu.

⚠️
Avís

Si es vol la darrera versió amb suport oficial d’Alinto (actualitzacions més ràpides, suport professional), cal donar-se d’alta al dipòsit de producció https://packages.sogo.nu/ amb usuari i contrasenya. Aquest document se centra en la via lliure (paquet d’universe).

Activa el dipòsit universe:

sudo add-apt-repository universe

Actualitza la llista de paquets:

sudo apt update

8.7. Instal·la el motor de base de dades MariaDB

sudo apt install mariadb-server

Un cop instal·lat, assegura’l:

sudo mariadb-secure-installation

Respon afirmativament a totes les preguntes (establir contrasenya root, eliminar usuaris anònims, desactivar accés remot de root, eliminar la base de dades de test i recarregar privilegis).

8.8. Crea la base de dades

Accedeix a MariaDB com a root:

sudo mysql -u root -p

Executa dins de la consola SQL:

CREATE DATABASE sogo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'sogo'@'localhost' IDENTIFIED BY 'CONTRASENYA_BBDD';
CREATE USER 'sogo'@'127.0.0.1' IDENTIFIED BY 'CONTRASENYA_BBDD';
GRANT ALL PRIVILEGES ON sogo.* TO 'sogo'@'localhost';
GRANT ALL PRIVILEGES ON sogo.* TO 'sogo'@'127.0.0.1';
FLUSH PRIVILEGES;
EXIT;

8.9. Instal·la SOGo i dependències

sudo apt install sogo sogo-activesync memcached

Aquesta instal·lació inclou:

8.10. Configura SOGo

sudo nano /etc/sogo/sogo.conf

Substitueix-ho tot per:

{
  SOGoProfileURL = "mysql://sogo:CONTRASENYA_BBDD@127.0.0.1:3306/sogo/sogo_user_profile";
  OCSFolderInfoURL = "mysql://sogo:CONTRASENYA_BBDD@127.0.0.1:3306/sogo/sogo_folder_info";
  OCSSessionsFolderURL = "mysql://sogo:CONTRASENYA_BBDD@127.0.0.1:3306/sogo/sogo_sessions_folder";
  OCSEMailAlarmsFolderURL = "mysql://sogo:CONTRASENYA_BBDD@127.0.0.1:3306/sogo/sogo_alarms_folder";
  SOGoLanguage = Catalan;
  SOGoAppointmentSendEMailNotifications = YES;
  SOGoMailingMechanism = smtp;
  SOGoTimeZone = "Europe/Madrid";

  SOGoSentFolderName = Sent;
  SOGoTrashFolderName = Trash;
  SOGoDraftsFolderName = Drafts;

  SOGoSMTPServer = "smtps://correu.thos.local:465";
  SOGoSMTPAuthenticationType = PLAIN;
  SOGoIMAPServer = "imaps://correu.thos.local:993";
  SOGoSieveServer = "sieve://correu.thos.local:4190/?tls=YES";
  SOGoIMAPAclConformsToIMAPExt = YES;

  SOGoVacationEnabled = NO;
  SOGoForwardEnabled = NO;
  SOGoSieveScriptsEnabled = NO;
  SOGoFirstDayOfWeek = 0;
  SOGoMailMessageCheck = manually;
  SOGoMailAuxiliaryUserAccountsEnabled = NO;
  SOGoMemcachedHost = 127.0.0.1;

  SOGoMailDomain = "thos.local";

  SOGoUserSources = (
    {
      type = ldap;
      CNFieldName = cn;
      IDFieldName = uid;
      UIDFieldName = uid;
      baseDN = "ou=Usuaris,dc=thos,dc=local";
      bindDN = "cn=admin,dc=thos,dc=local";
      bindPassword = "CONTRASENYA_LDAP";
      hostname = "ldap://ldapserver.thos.local";
      id = "IES Thos i Codina";
      canAuthenticate = YES;
      isAddressBook = YES;
    },
    {
      type = ldap;
      CNFieldName = cn;
      IDFieldName = uid;
      UIDFieldName = mail;
      baseDN = "ou=Usuaris,dc=thos,dc=local";
      bindDN = "cn=admin,dc=thos,dc=local";
      bindPassword = "CONTRASENYA_LDAP";
      hostname = "ldap://ldapserver.thos.local";
      id = directory_mail;
      canAuthenticate = YES;
      isAddressBook = NO;
    }
  );
}

Canvia el propietari i el grup:

sudo chown sogo:sogo /etc/sogo/sogo.conf

Canvia els permisos:

sudo chmod 600 /etc/sogo/sogo.conf

8.11. Proxy invers

Instal·la el servidor web Apache:

sudo apt install apache2

Habilita els mòduls:

sudo a2enmod proxy proxy_http headers rewrite ssl

Afegeix l’usuari www-data al grup ssl-cert:

sudo usermod -aG ssl-cert www-data

Defineix com Apache actua de proxy invers cap al servidor SOGo, el qual internament escolta en un altre port (el 20000) via el seu propi dimoni:

sudo nano /etc/apache2/conf-available/sogo.conf

Afegeix:

<Location /SOGo>
    ProxyPass        http://127.0.0.1:20000/SOGo retry=0
    ProxyPassReverse http://127.0.0.1:20000/SOGo
    Require all granted
</Location>

Alias /SOGo.woa/WebServerResources/ /usr/lib/x86_64-linux-gnu/GNUstep/SOGo/WebServerResources/
Alias /SOGo/WebServerResources/ /usr/lib/x86_64-linux-gnu/GNUstep/SOGo/WebServerResources/

<Directory /usr/lib/x86_64-linux-gnu/GNUstep/SOGo/WebServerResources/>
    Require all granted
</Directory>

RewriteEngine On
RewriteRule ^/.well-known/caldav /SOGo/dav [R]
RewriteRule ^/.well-known/carddav /SOGo/dav [R]

<Location /SOGo/WebServerResources>
    ProxyPass !
</Location>

Activa el fitxer de configuració de SOGo:

sudo a2enconf sogo

8.12. VirtualHosts

Configura el VirtualHost del protocol HTTPS:

sudo nano /etc/apache2/sites-available/sogo-ssl.conf

Afegeix:

<VirtualHost *:443>
  ServerName correu.thos.local

  SSLEngine on
  SSLCertificateFile /etc/ssl/thos/correu.crt
  SSLCertificateKeyFile /etc/ssl/thos/correu.key

  ProxyRequests Off
  ProxyPreserveHost On

  RequestHeader set "x-webobjects-server-port" "443"
  RequestHeader set "x-webobjects-server-name" "correu.thos.local"
  RequestHeader set "x-webobjects-server-url" "https://correu.thos.local"
  RequestHeader set "x-webobjects-adaptor-version" "mod_proxy"

  Include /etc/apache2/conf-available/sogo.conf
</VirtualHost>

Modifica la pàgina per defecte perquè redirigeixi cap a HTTPS:

sudo nano /etc/apache2/sites-available/000-default.conf

Afegeix abans de </VirtualHost>:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Activa el fitxer de configuració del site:

sudo a2ensite sogo-ssl

Comprova la sintaxi:

sudo apache2ctl configtest

Resposta esperada:

Syntax OK

Reinicia el servidor Apache:

sudo systemctl restart apache2

Verifica l’estat del servei:

sudo systemctl status apache2

Resposta esperada:

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
     Active: active (running) since Wed 2026-07-15 14:43:44 UTC; 10s ago
 Invocation: b85f3f0d6ae64073b61024aac0a4751b
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 11711 (apache2)
     Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
      Tasks: 55 (limit: 1718)
     Memory: 7.4M (peak: 7.4M)
        CPU: 37ms
     CGroup: /system.slice/apache2.service
             ├─11711 /usr/sbin/apache2 -k start -DFOREGROUND
             ├─11714 /usr/sbin/apache2 -k start -DFOREGROUND
             └─11715 /usr/sbin/apache2 -k start -DFOREGROUND

de jul. 15 14:43:44 correu systemd[1]: Starting apache2.service - The Apache HTTP Server...
de jul. 15 14:43:44 correu systemd[1]: Started apache2.service - The Apache HTTP Server.

8.13. Certificats

Copia el certificat de thos.local a la carpeta on Ubuntu busca certificats de CA addicionals per confiar-hi a escala de sistema:

sudo cp /etc/ssl/thos/correu.crt /usr/local/share/ca-certificates/correu-thos-local.crt

Crida l’eina d’Ubuntu que reconstrueix el magatzem de confiança de certificats del sistema:

sudo update-ca-certificates --fresh

Resposta esperada:

Clearing symlinks in /etc/ssl/certs...
done.
Updating certificates in /etc/ssl/certs...
rehash: warning: skipping ca-certificates.crt, it does not contain exactly one certificate or CRL
122 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.

8.14. Engega o reinicia els serveis

Habilita l’engegada del servei memcached en l’arrencada i activa’l ara mateix:

sudo systemctl enable --now memcached

Habilita l’engegada del servei sogo en l’arrencada:

sudo systemctl enable sogo

Reinicia SOGo:

sudo systemctl restart sogo

Reinicia Postfix:

sudo systemctl restart postfix

Reinicia Dovecot:

sudo systemctl restart dovecot

Verifica l’estat del servei SOGo:

sudo systemctl status sogo

Resposta esperada:

● sogo.service - SOGo is a groupware server
     Loaded: loaded (/usr/lib/systemd/system/sogo.service; enabled; preset: enabled)
     Active: active (running) since Wed 2026-07-15 14:48:39 UTC; 18s ago
 Invocation: ab9cd76a157f4703b0862695d1c4cb07
       Docs: https://sogo.nu/files/docs/SOGoInstallationGuide.html
    Process: 13414 ExecStart=/usr/sbin/sogod -WOWorkersCount ${PREFORK} -WOPidFile /run/sogo/sogo.pid -WOLogFile /var/log/sogo/sogo.log (code=exited, status=0/SUCCESS)
   Main PID: 13418 (sogod)
      Tasks: 4 (limit: 1718)
     Memory: 45.4M (peak: 45.7M)
        CPU: 163ms
     CGroup: /system.slice/sogo.service
             ├─13418 /usr/sbin/sogod -WOWorkersCount 3 -WOPidFile /run/sogo/sogo.pid -WOLogFile /var/log/sogo/sogo.log
             ├─13419 /usr/sbin/sogod -WOWorkersCount 3 -WOPidFile /run/sogo/sogo.pid -WOLogFile /var/log/sogo/sogo.log
             ├─13420 /usr/sbin/sogod -WOWorkersCount 3 -WOPidFile /run/sogo/sogo.pid -WOLogFile /var/log/sogo/sogo.log
             └─13421 /usr/sbin/sogod -WOWorkersCount 3 -WOPidFile /run/sogo/sogo.pid -WOLogFile /var/log/sogo/sogo.log

de jul. 15 14:48:39 correu systemd[1]: Starting sogo.service - SOGo is a groupware server...
de jul. 15 14:48:39 correu systemd[1]: Started sogo.service - SOGo is a groupware server.

8.15. Accedeix a la interfície gràfica

L’accés web queda disponible a https://correu.thos.local/SOGo/

Prem el botó Advanced

Prem to correu.thos.local (Risky)

Finestra d’inici de sessió de SOGo

Accedeix amb un usuari LDAP

Interfície de gestió del correu

Redacció d’un missatge

Missatge enviat

Accedeix amb l’usuari destinatari

Tens un nou missatge a la safata d’entrada

Lectura del missatge

Resposta al remitent

Missatge respost al remitent

9. Calendaris

9.1. Comparteix un calendari des de la interfície web

  1. Inicia sessió com a joan.

  2. Prem el botó dels Calendaris.

  3. Fes clic dret sobre Calendari personal (el calendari per defecte) → Compartir…

    Comparteix calendari
  4. Cerca l’usuari amb qui el vulguis compartir. En l’exemple: maria@thos.local

  5. Marca Subscriure usuari.

  6. Marca el nivell d’accés que vulguis donar-li (d’ordre creixent d’accés):

    Permís Què permet
    Veure data i hora Només veu que hi ha un esdeveniment, sense detalls
    Veure-ho tot Veu tots els detalls de l’esdeveniment
    Respondre Pot acceptar/rebutjar invitacions (implica “Veure-ho tot”)
    Modificar Pot editar esdeveniments (implica “Veure-ho tot” i “Respondre”)

    També hi ha caselles separades per permetre crear i esborrar esdeveniments, independents del nivell anterior.

    Tria les opcions de compartició
  7. Guarda els canvis.

    Calendari compartit amb un esdeveniment

9.2. Subscriu-te al calendari compartit

  1. Inicia sessió com a maria.

  2. A la pestanya CalendarisSubscripcions

  3. Hauria d’aparèixer el Calendari personal de joan a la llista (si maria ja té algun permís assignat).

    Calendari compartit
  4. Els esdeveniments de joan són visibles.

    Esdeveniment

9.3. Automatitza-ho: permisos per defecte per a tots els usuaris

Si vols que tots els usuaris comparteixin automàticament, per exemple, la disponibilitat (Veure data i hora) amb la resta sense haver-ho de fer manualment cada cop, hi ha un paràmetre a sogo.conf:

SOGoCalendarDefaultRoles = ("PublicViewer");

Aquest s’aplica als esdeveniments marcats com a públics de tots els calendaris personals nous.

9.4. Gestió per línia d’ordres (útil per a scripts/automatització massiva)

Si mai vols assignar permisos de calendari a molts usuaris alhora (per exemple, tots els alumnes d’un grup compartint amb el professor), sogo-tool ho permet sense passar per la interfície web:

sudo sogo-tool manage-acl add joan Calendar/personal maria '["PublicViewer","ConfidentialViewer"]'

10. Llibreta d’adreces

Com que ja has configurat isAddressBook = YES a la primera font LDAP de sogo.conf, la llibreta d’adreces global (GAL) ja està activa des del principi — cada usuari ha de veure automàticament la resta d’usuaris del directori LDAP com a contactes, sense haver de configurar res més.

10.1. Comprova que la GAL ja funciona

  1. Inicia sessió com a joan.

  2. Ves a la pestanya Llibretes d’adreces.

  3. Hauries de veure, a més de “Personal”, una entrada tipus Llibretes d’adreces globals amb el nom exacte que has definit al fitxer /etc/sogo/sogo.conf (id = "IES Thos i Codina";).

    Llibreta d’adreces global
  4. Cerca maria — hauria d’aparèixer automàticament, sense que ningú l’hagi afegit manualment.

    Recerca a la llibreta d’adreces

10.2. Només de lectura

La GAL (basada en LDAP) és només de lectura — els usuaris no hi poden afegir ni editar contactes. Si un usuari vol un contacte propi editable, ha d’anar a la seva llibreta Personal.

Llibreta d’adreces personal

10.3. Comparteix una llibreta d’adreces personal

Si joan vol compartir la seva llibreta Personal (per exemple, una llista de contactes externs que ha anat creant) amb maria:

  1. Llibretes d’adreces → clic sobre Llibreta personal d’adrecesCompartir…

  2. Afegeix maria, i marca Subscriure usuari.

  3. Tria el nivell d’accés: Visualitzador (només lectura) o Modificador (pot editar/afegir contactes).

    Compartició d’una llibreta d’adreces personal

10.4. Crea una llibreta d’adreces addicional

  1. Llibretes d’adreces → icona + al costat de “Llibretes d’adreces”.

  2. Dona-li un nom (Contactes ASIX, per exemple).

  3. Comparteix-la amb qui vulguis, igual que a la secció anterior.

    Nova llibreta d’adreces

10.5. Autocompleta en redactar correus

Aquesta funciona automàticament un cop la GAL està activa: en escriure un nom o @thos.local al camp “Per a” d’un correu nou, SOGo cerca tant a la llibreta personal com a la GAL.

11. Filtres de correu

Sieve (RFC 5228) és un llenguatge senzill i segur per definir regles de filtratge de correu del costat del servidor — és a dir, les regles s’apliquen quan el correu arriba al servidor (abans que arribi al client), no dins de Thunderbird o SOGo com a aplicació. Per això, si tens diversos dispositius o clients, les regles funcionen igual arreu, sense haver-les de configurar a cadascun.

Amb Sieve pots, per exemple:

Per seguretat, Sieve no permet executar programes ni codi arbitrari — és deliberadament limitat a accions de filtratge, cosa que el fa segur d’oferir a usuaris no confiables sense risc per al servidor.

Hi ha dues peces separades:

Component Funció
Motor Sieve (a Dovecot, via el paquet dovecot-sieve, part del projecte Pigeonhole) Executa realment els scripts quan arriba un correu (via LDA o LMTP)
ManageSieve (protocol RFC 5804, port 4190) Permet als usuaris (o a SOGo, en el teu cas) pujar/editar els seus scripts remotament, sense accés directe al sistema de fitxers

SOGo actua com a client ManageSieve: quan configures regles de filtratge des de la interfície web de SOGo, en realitat SOGo es connecta per ManageSieve al port 4190 de Dovecot i hi puja el script Sieve corresponent.

11.1. Instal·la els paquets

sudo apt install dovecot-sieve dovecot-managesieved

11.2. Activa el protocol sieve (ManageSieve)

sudo nano /etc/dovecot/dovecot.conf

Busca la línia:

#protocols = imap pop3 lmtp

Canvia-la per:

protocols = imap lmtp sieve

11.3. Activa el connector Sieve a LMTP

sudo nano -l /etc/dovecot/conf.d/20-lmtp.conf

Descomenta les línies 40, 41 i 42:

  mail_plugins {
    sieve = yes
  }

11.4. Configura on es desen els scripts

sudo nano -l /etc/dovecot/conf.d/90-sieve.conf

Descomenta les línies 11-15:

sieve_script personal {
  driver = file
  path = ~/sieve
  active_path = ~/.dovecot.sieve
}

11.5. Verifica i reinicia

Comprova la sintaxi:

sudo doveconf -n

Reinicia Dovecot:

sudo systemctl restart dovecot

Verifica:

sudo ss -tlnp | grep 4190

Hauries de veure Dovecot escoltant al port 4190.

LISTEN 0      100          0.0.0.0:4190       0.0.0.0:*    users:(("dovecot",pid=2926,fd=55))                                                                     
LISTEN 0      100             [::]:4190          [::]:*    users:(("dovecot",pid=2926,fd=56))

11.6. Activa’l a SOGo

Ja tens aquesta línia a sogo.conf:

SOGoSieveServer = "sieve://correu.thos.local:4190/?tls=YES";

I si vols que apareguin les opcions de filtres a la interfície edita el fitxer sogo.conf:

sudo nano /etc/sogo/sogo.conf

Estableix els valors a ‘YES’:

SOGoVacationEnabled = YES;
SOGoForwardEnabled = YES;
SOGoSieveScriptsEnabled = YES;

Reinicia SOGo:

sudo systemctl restart sogo

11.7 Comprovació manual

openssl s_client -connect correu.thos.local:4190 -starttls sieve -quiet

Hauria de respondre amb una salutació "IMPLEMENTATION" "Dovecot Pigeonhole" i la llista de capacitats Sieve suportades.

Connecting to 10.0.2.10
depth=0 C=ES, ST=Catalunya, L=Mataro, O=IES Thos i Codina, OU=ASIX, CN=correu.thos.local
verify return:1
OK "Begin TLS negotiation now."
"IMPLEMENTATION" "Dovecot Pigeonhole"
"SIEVE" "fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include body variables enotify environment mailbox date index ihave duplicate mime foreverypart extracttext"
"NOTIFY" "mailto"
"SASL" "PLAIN LOGIN"
"VERSION" "1.0"
OK "TLS negotiation successful."

Per sortir escriu LOGOUT:

OK "Logout completed."

Un cop fet, a la interfície de SOGo apareixeran tres pestanyes: Filtres, Vacances i Redirigir a Preferències → Correu, on els usuaris podran crear filtres, un missatge de vacances, o reenviaments, sense necessitat de tocar res més al servidor.

Pestanyes Filtres, Vacances i Redirigir

12. Accés dels clients

Client Protocol Notes
Navegador web HTTPS Interfície completa, AJAX
Mozilla Thunderbird CalDAV/CardDAV nadiu, o extensions SOGo Connector/Integrator Integració més completa amb els complements d’Alinto
Apple Calendar / Contacts CalDAV / CardDAV Configuració nativa del sistema operatiu
Microsoft Outlook ActiveSync o Outlook CalDav Synchronizer (lliure) Sense necessitat de connectors MAPI de pagament
Android / iOS / Windows Phone ActiveSync o clients CalDAV/CardDAV (p. ex. DAVx⁵) Push i sincronització bidireccional

URL típica per a CalDAV manual: https://<servidor>/SOGo/dav/<usuari>/Calendar/personal/

13. Manteniment i eines

14. Enllaços d’interès

Versions d’aquest document

Domini Públic (CC0)