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
SnappyMail és un client de correu web (webmail) senzill, modern i lleuger, escrit en PHP i JavaScript. Es tracta d’una bifurcació (fork) de RainLoop Webmail Community Edition, creada per continuar el desenvolupament d’aquell projecte quan va quedar pràcticament abandonat. És una opció excel·lent quan es necessita una interfície webmail lleugera, ràpida i sense dependències de base de dades per connectar-se a un servidor IMAP/SMTP ja existent, amb Dovecot i Postfix. La seva instal·lació a Ubuntu 26.04 es redueix a desplegar uns quants fitxers PHP darrere d’Apache o Nginx amb PHP-FPM, sense necessitat de dimonis addicionals.
Característiques generals del projecte:
- No necessita cap base de dades pròpia: es connecta directament a un servidor IMAP (per rebre correu) i SMTP (per enviar-lo).
- Pensat per ser ràpid i mòbil: la primera arrencada des de mòbil pesa uns 138 KB (amb compressió Brotli) i obté puntuacions molt altes a Lighthouse.
- Compatible amb navegadors moderns (Chrome 69+, Firefox 78+, Safari 12+, Edge 79+); no suporta Internet Explorer ni Edge Legacy.
- Ideal per instal·lar al costat d’un servidor de correu ja existent (Postfix + Dovecot, per exemple), o com a alternativa lleugera a Roundcube.
SnappyMail no és un servidor de correu. És únicament una interfície web que es connecta a un servidor IMAP/SMTP que ja ha d’existir prèviament.
SnappyMail es distribueix sota la llicència GNU Affero General Public License versió 3 (AGPL-3.0).
Punts clau d’aquesta llicència:
- És programari lliure i de codi obert.
- A diferència de la GPL normal, l’AGPL obliga a compartir el codi font també quan el programa s’ofereix com a servei a través de xarxa (SaaS), no només quan es distribueix el binari.
- Manté els avisos de copyright originals de RainLoop (2013-2022) i afegeix els propis de SnappyMail (2020-2024).
/?admin) per
configurar dominis, seguretat, mides màximes d’adjunts, temes
disponibles, etc.Abans d’instal·lar, cal tenir:
- Un servidor Ubuntu 26.04 amb accés
rootosudo.- Un servidor de correu (IMAP/SMTP) ja funcionant, accessible des d’aquesta màquina (per exemple, Dovecot + Postfix).
- PHP 7.4 o superior (Ubuntu 26.04 inclou per defecte una versió més recent, com PHP 8.5, que va perfectament).
Extensions PHP necessàries:
| Extensió | Obligatòria | Ús |
|---|---|---|
| mbstring | Sí | Gestió de cadenes multibyte |
| zlib | Sí | Compressió |
| json | Sí | Format de dades |
| libxml | Sí | Processament XML |
| dom | Sí | Processament DOM |
| curl | No | Peticions HTTP externes |
| gd / imagemagick | No | Redimensionar imatges adjuntes |
| gnupg | No | Correu xifrat/signat |
| intl | No | Dominis IDN |
| ldap | No | Contactes via LDAP |
| openssl | Recomanada | Xifratge de dades confidencials |
| sodium | Recomanada | Millor xifratge encara que OpenSSL |
| pdo (sqlite/mysql/pgsql) | No | Contactes en BD |
Hi ha dues vies habituals: baixar el paquet .tar.gz
directament (mètode universal, vàlid per a qualsevol distribució) o
utilitzar el dipòsit APT (només Debian/Devuan de moment). A Ubuntu 26.04
farem servir el mètode del .tar.gz, que és el recomanat
oficialment.
Actualitza la llista de paquets
sudo apt updateActualitza el sistema
sudo apt upgradesudo apt install apache2 php-fpm php-mbstring php-xml php-curl php-gd \
php-intl php-ldap php-sqlite3 php-common php-cli unzip wgetActiva els mòduls necessaris d’Apache:
sudo a2enmod proxy_fcgi setenvif rewrite headers expires deflateActiva el fitxer de configuració de php8.5-fpm:
sudo a2enconf php8.5-fpmRegistra els serveis perquè s’engeguin automàticament en cada arrencada i els arrenca immediatament:
sudo systemctl enable --now php8.5-fpm apache2Crea la carpeta webmail:
sudo mkdir -p /var/www/webmailDescarrega SnappyMail:
sudo wget -c https://snappymail.eu/repository/latest.tar.gzDescomprimeix a la carpeta creada:
sudo tar -xzf latest.tar.gz -C /var/www/webmailEsborra el fitxer descarregat:
sudo rm latest.tar.gzCanvia els permisos de les carpetes:
sudo find /var/www/webmail -type d -exec chmod 755 {} \;Canvia els permisos dels fitxers (descarta directoris, enllaços simbòlics, etc.):
sudo find /var/www/webmail -type f -exec chmod 644 {} \;Canvia el propietari de la carpeta i les subcarpetes:
sudo chown -R www-data:www-data /var/www/webmaildata fora del document root (recomanat)Per seguretat, és bona pràctica moure la carpeta data/
(on es guarden configuracions i contrasenyes) fora de l’arrel pública
del servidor web.
Crea la carpeta snappymail:
sudo mkdir -p /var/lib/snappymailMou el contingut de data a la carpeta creada:
sudo mv /var/www/webmail/data/* /var/lib/snappymail/Canvia el propietari de la carpeta:
sudo chown -R www-data:www-data /var/lib/snappymailCanvia el nom del fitxer perquè el detecti i el carregui en l’arrencada:
sudo mv /var/www/webmail/_include.php /var/www/webmail/include.phpEdita /var/www/webmail/include.php
sudo nano /var/www/webmail/include.phpDescomenta/afegeix la línia amb el nou camí:
define('APP_DATA_FOLDER_PATH', '/var/lib/snappymail/');
Com que webmail.thos.local és un nom intern (no un
domini públic), no pots obtenir-hi un certificat de Let’s Encrypt. La
solució habitual en aquest cas és generar un certificat
autosignat, que xifra igualment la connexió encara que el
navegador mostri un avís de confiança fins que l’acceptis manualment (o
ho importis com a certificat de confiança al client).
sudo openssl req -x509 -nodes -days 825 -newkey rsa:4096 \
-keyout /etc/ssl/private/webmail.thos.local.key \
-out /etc/ssl/certs/webmail.thos.local.crt \
-subj "/C=ES/ST=Catalunya/L=Mataro/O=IES Thos i Codina/OU=SMX/CN=webmail.thos.local"Què fa cada part:
-x509: en lloc de generar només una sol·licitud de certificat (CSR), genera directament un certificat autosignat complet.-nodes(no DES): no xifra la clau privada amb contrasenya, perquè Apache/Nginx la puguin llegir a l’arrencada sense demanar-la manualment.-days 825: validesa del certificat (uns 27 mesos; és el màxim que molts navegadors accepten actualment per a certificats d’aquest tipus).-newkey rsa:4096: genera alhora una nova clau privada RSA de 4096 bits.-keyout/-out: rutes on es desen la clau privada i el certificat públic respectivament.-subj "...": omple les dades del certificat sense passar pel mode interactiu;CN(Common Name) ha de coincidir amb el nom que faràs servir per accedir-hi (webmail.thos.local).
Ajusta permisos de la clau privada perquè només root hi
pugui llegir:
sudo chmod 640 /etc/ssl/private/webmail.thos.local.keyCanvia el propietari i el grup:
sudo chown root:ssl-cert /etc/ssl/private/webmail.thos.local.keyUn certificat autosignat xifra el trànsit igual de bé que un de “de confiança”, però no aporta cap validació d’identitat per un tercer: el navegador avisarà de “connexió no segura” fins que acceptis l’excepció o instal·lis el certificat com de confiança als clients.
Activa el mòdul SSL d’Apache:
sudo a2enmod sslCrea la configuració HTTP
(/etc/apache2/sites-available/webmail.conf) i redirigeix
tot el trànsit HTTP cap a HTTPS:
sudo nano /etc/apache2/sites-available/webmail.conf<VirtualHost *:80>
ServerName webmail.thos.local
# Redirigeix tot el trànsit HTTP cap a HTTPS
Redirect permanent / https://webmail.thos.local/
</VirtualHost>
Crea la configuració HTTPS
(/etc/apache2/sites-available/webmail-ssl.conf):
sudo nano /etc/apache2/sites-available/webmail-ssl.conf<VirtualHost *:443>
ServerName webmail.thos.local
DocumentRoot /var/www/webmail
SSLEngine on
SSLCertificateFile /etc/ssl/certs/webmail.thos.local.crt
SSLCertificateKeyFile /etc/ssl/private/webmail.thos.local.key
SSLProtocol -all +TLSv1.2 +TLSv1.3
<Directory /var/www/webmail>
Options -Indexes
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.5-fpm.sock|fcgi://localhost"
</FilesMatch>
# No exposis mai la carpeta data si es queda dins del document root
<LocationMatch "^/data/">
Require all denied
</LocationMatch>
ErrorLog ${APACHE_LOG_DIR}/webmail_error.log
CustomLog ${APACHE_LOG_DIR}/webmail_access.log combined
</VirtualHost>
Activa els fitxers de VirtualHost del lloc:
sudo a2ensite webmail.conf webmail-ssl.confDesactiva el VirtualHost predeterminat:
sudo a2dissite 000-default.confComprova la sintaxi dels fitxers de configuració d’Apache:
sudo apachectl configtestRecarrega Apache:
sudo systemctl reload apache2Si més endavant thos.local deixa de ser intern i el
servidor esdevé accessible des d’un domini públic, val la pena
substituir el certificat autosignat per un de Let’s Encrypt (via certbot), que evita l’avís de confiança als navegadors dels
usuaris.
Si prefereixes Nginx en lloc d’Apache:
# Redirigeix tot el trànsit HTTP cap a HTTPS
server {
listen 80;
server_name webmail.thos.local;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name webmail.thos.local;
root /var/www/webmail;
index index.php;
ssl_certificate /etc/ssl/certs/webmail.thos.local.crt;
ssl_certificate_key /etc/ssl/private/webmail.thos.local.key;
ssl_protocols TLSv1.2 TLSv1.3;
client_max_body_size 50M;
location ~ (^|/)\. { return 403; }
location ~ ^/data/ { deny all; }
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~* \.php$ {
fastcgi_pass unix:/run/php/php8.5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
Obre al navegador https://webmail.thos.local/?admin
(accepta l’avís de certificat autosignat si és la primera vegada). Això
generarà el fitxer admin_password.txt dins la carpeta de
dades.
Consulta la contrasenya inicial:
sudo cat /var/lib/snappymail/_data_/_default_/admin_password.txtInicia sessió amb l’usuari admin i aquesta
contrasenya.
Canvia l’idioma de la interfície.
Ves immediatament a Seguridad i canvia el nom
d’usuari i la contrasenya. Un cop canviada, el fitxer admin_password.txt s’esborra automàticament.
Al menú Dominios, afegeix el domini de correu
(per exemple thos.local) indicant:

Opcionalment, a Contacts, activa el suport de llibreta d’adreces (SQLite és l’opció més senzilla per a una pràctica d’aula).
Prova l’accés d’un usuari final a https://webmail.thos.local/ amb les credencials del seu
compte de correu.
/?admin
restringint-lo per IP o amb autenticació addicional al servidor
web.Actualitzar és tan senzill com sobreescriure els fitxers amb la nova versió.
Descarrega la nova versió:
sudo wget -c https://snappymail.eu/repository/latest.tar.gzDescomprimeix:
sudo tar -xzf latest.tar.gz -C /var/www/webmailEsborra el fitxer descarregat:
sudo rm latest.tar.gzCanvia el propietari de la carpeta /var/www/webmail:
sudo chown -R www-data:www-data /var/www/webmailCada versió es desa en un subdirectori propi dins de snappymail/v/; només se sobreescriuen /index.php i /data/VERSION. La resta de la
reconfiguració la fa el mateix producte en la primera execució
posterior.
Documentació oficial
- Lloc web oficial (snappymail.eu): https://snappymail.eu/
- Dipòsit a GitHub: https://github.com/the-djmaze/snappymail
- Wiki oficial (índex): https://github.com/the-djmaze/snappymail/wiki
- Instruccions d’instal·lació: https://github.com/the-djmaze/snappymail/wiki/Installation-instructions
- Manual d’administració: https://github.com/the-djmaze/snappymail/wiki/Admin-Manual
- Configuració d’OpenPGP: https://github.com/the-djmaze/snappymail/wiki/OpenPGP
- Filtres Sieve: https://github.com/the-djmaze/snappymail/wiki/Filters---Sieve
- Capacitats IMAP suportades: https://github.com/the-djmaze/snappymail/wiki/IMAP-capabilities
- Millora del rendiment: https://github.com/the-djmaze/snappymail/wiki/Improve-performance
- Preguntes freqüents (FAQ): https://github.com/the-djmaze/snappymail/wiki/FAQ
- Documentació per a desenvolupadors: https://github.com/the-djmaze/snappymail/wiki/Developer-Documentation
- Instal·lació amb Docker: https://github.com/the-djmaze/snappymail/wiki/Docker
- Pàgina de descàrregues (releases): https://github.com/the-djmaze/snappymail/releases
Llicència
- Text complet de la GNU AGPL-3.0: http://www.gnu.org/licenses/agpl-3.0.html
Projecte original (RainLoop)
- RainLoop Webmail a GitHub: https://github.com/RainLoop/rainloop-webmail