Ricerca nel sito web

Come installare Rainloop Webmail su Ubuntu 22.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 18.04 (Bionic Beaver)

Su questa pagina

  1. Prerequisiti
  2. Passaggio 1: configurazione del firewall
  3. Passaggio 2 - Installa Nginx
  4. Passaggio 3 - Installa e configura PHP
  5. Passaggio 4 - Installa MySQL
  6. Passaggio 5 - Configura MySQL
  7. Passaggio 6 - Installa Rainloop
  8. Passaggio 7 - Installa SSL
  9. Passaggio 8 - Configura Nginx
  10. Passaggio 9 - Configura e accedi a Rainloop
  11. Conclusione

Rainloop è un client di posta elettronica open source basato sul Web scritto in PHP. È veloce, leggero e supporta i protocolli SMTP e IMAP.

Questa guida ti insegnerà a installare il client Rainloop su un server Ubuntu 22.04.

Prerequisiti

  • A server running Ubuntu 22.04.

  • A domain name pointing to the server. For our tutorial, we will use the rainloop.example.com domain.

  • A non-root user with sudo privileges.

  • Make sure everything is updated.

    $ sudo apt update && sudo apt upgrade
    
  • Install basic utility packages. Some of them may already be installed.

    $ sudo apt install wget curl nano unzip -y
    

Passaggio 1: configurare il firewall

Il primo passo prima di installare Rainloop è configurare il firewall. Controlla lo stato del firewall.

$ sudo ufw status

Dovresti vedere qualcosa di simile al seguente.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Rainloop ha bisogno delle porte HTTP e HTTPs per funzionare.

$ sudo ufw allow http
$ sudo ufw allow https

Apri le porte per gli account di posta che utilizzi.

$ sudo ufw allow 587/tcp
$ sudo ufw allow 993/tcp
$ sudo ufw allow 465/tcp

Controlla di nuovo lo stato per confermare.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
587/tcp                    ALLOW       Anywhere
993/tcp                    ALLOW       Anywhere
465/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
587/tcp (v6)               ALLOW       Anywhere (v6)
993/tcp (v6)               ALLOW       Anywhere (v6)
465/tcp (v6)               ALLOW       Anywhere (v6)

Passaggio 2: installa Nginx

Ubuntu 22.04 viene fornito con una versione precedente di Nginx. Per installare l'ultima versione, devi scaricare il repository Nginx ufficiale.

Importa la chiave di firma Nginxs.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Aggiungi il repository per la versione stabile di Nginxs.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Aggiorna i repository di sistema.

$ sudo apt update

Installa Nginx.

$ sudo apt install nginx

Verificare l'installazione.

$ nginx -v
nginx version: nginx/1.22.0

Passo 3 - Installa e configura PHP

Ubuntu 22.04 viene fornito con PHP 8.1 per impostazione predefinita. Ma affinché Rainloop funzioni, dobbiamo installare PHP 8.0. Il primo passo è aggiungere il repository PHP di Ondrejs.

$ sudo add-apt-repository ppa:ondrej/php

Installa PHP e le estensioni necessarie richieste da Rainloop.

 $ sudo dnf install php8.0-fpm php8.0-curl php8.0-mbstring php8.0-mysql php8.0-xml php8.0-cli

Verificare l'installazione.

$ php --version
PHP 8.0.20 (cli) (built: Jun 25 2022 08:12:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.20, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.20, Copyright (c), by Zend Technologies

Controlla lo stato del servizio PHP.

$ sudo systemctl status php8.0-fpm
? php8.0-fpm.service - The PHP 8.0 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php8.0-fpm.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-07-04 01:52:55 UTC; 1min 22s ago
       Docs: man:php-fpm8.0(8)
    Process: 12463 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.0/fpm/pool.d/www.conf 80 (code=exited, status=0/SUCCESS)
   Main PID: 12460 (php-fpm8.0)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req/sec"
      Tasks: 3 (limit: 2241)
     Memory: 8.7M
        CPU: 89ms
     CGroup: /system.slice/php8.0-fpm.service
             ??12460 "php-fpm: master process (/etc/php/8.0/fpm/php-fpm.conf)

Apri il file php.ini per modificarlo.

$ sudo nano /etc/php/8.0/fpm/php.ini

Modificare i valori delle seguenti variabili per impostare la dimensione dell'allegato di posta su 25 MB.

upload_max_filesize = 25M
post_max_size = 25M

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Apri il file /etc/php/8.0/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.0/fpm/pool.d/www.conf

Trova le righe user=apache e group=apache nel file e modificale come segue.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Inoltre, trova le righe listen.owner=www-data e listen.group=www-data e modificale come segue.

...
; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx
...

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Riavvia il servizio PHP-FPM.

$ sudo systemctl restart php8.0-fpm

Passaggio 4: installa MySQL

Ubuntu 22.04 viene fornito con l'ultima versione di MySQL. Puoi installarlo con un singolo comando.

$ sudo apt install mysql-server

Controlla la versione di MySQL.

$ mysql --version
mysql  Ver 8.0.29-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Questo passaggio è necessario per le versioni MySQL 8.0.28 e successive. Entra nella shell MySQL.

$ sudo mysql

Esegui il seguente comando per impostare la password per il tuo utente root. Assicurati che contenga una combinazione di numeri, lettere maiuscole, minuscole e caratteri speciali.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Esci dal guscio.

mysql> exit

Esegui lo script di installazione sicura di MySQL.

$ sudo mysql_secure_installation

Innanzitutto, ti verrà chiesta la password di root. Entra. Successivamente, ti verrà chiesto di installare il componente Validate Password. Controlla la forza delle password utilizzate in MySQL. Premi Y per installarlo.

Successivamente, ti verrà chiesto di impostare il livello della politica di convalida della password. Scegli 2 in quanto è il più forte.

Quindi, premi N per rifiutare di cambiare la tua password di root. Inoltre, premi Y per rimuovere gli utenti anonimi, non consentire gli accessi root remoti, rimuovere il database di test e ricaricare le tabelle dei privilegi.

Passaggio 5: configurare MySQL

Accedi alla shell MySQL. Inserisci la tua password di root quando richiesto.

$ sudo mysql -u root -p

Crea un database per Rainloop.

mysql> CREATE DATABASE rainloop;

Creare un utente SQL per accedere al database. Sostituisci tuapassword con una password a tua scelta.

mysql> CREATE USER 'rainuser'@'localhost' IDENTIFIED BY 'YourPassword23!';

Concedi a rainuser l'accesso al database.

mysql> GRANT ALL ON rainloop.* TO 'rainuser'@'localhost';

Ricarica la tabella dei privilegi.

mysql> FLUSH PRIVILEGES;

Esci dal guscio.

mysql> exit

Passaggio 6: installa Rainloop

Crea la directory pubblica per Rainloop.

$ sudo mkdir /var/www/html/rainloop -p

Scarica l'ultima versione di Rainloop.

$ wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip

Decomprimere il file scaricato nella directory pubblica.

$ sudo unzip rainloop-community-latest.zip -d /var/www/html/rainloop

Cambia la proprietà della directory in Nginx.

$ sudo chown -R nginx:nginx /var/www/html/rainloop

Imposta i permessi di lettura e scrittura richiesti da Rainloop.

$ sudo find /var/www/html/rainloop -type d -exec chmod 755 {} \;
$ sudo find /var/www/html/rainloop -type f -exec chmod 644 {} \;

Passaggio 7: installa SSL

Dobbiamo installare Certbot per generare certificati SSL gratuiti offerti da Lets Encrypt.

Puoi installare Certbot usando il repository Ubuntus o prendere l'ultima versione usando lo strumento Snapd. Useremo la versione Snapd.

Ubuntu 22.04 viene fornito con Snapd installato per impostazione predefinita. Esegui il seguente comando per assicurarti che la tua versione di Snapd sia aggiornata.

$ sudo snap install core

Installa Cerbot.

$ sudo snap install --classic certbot

Utilizzare il seguente comando per assicurarsi che il comando Certbot possa essere eseguito creando un collegamento simbolico alla directory /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Genera un certificato SSL per Rainloop.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d rainloop.example.com

Genera un certificato di gruppo Diffie-Hellman.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 4096

Apri il file /etc/letsencrypt/renewal/rainloop.example.com.conf per la modifica.

$ sudo nano /etc/letsencrypt/renewal/rainloop.example.com.conf

Incolla il seguente codice in fondo.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Abbiamo generato il certificato SSL utilizzando l'opzione standalone di Certbot. Esegue il suo server Web per creare il certificato, il che significa che Nginx dovrebbe essere spento durante il rinnovo. I comandi pre_hook e post_hook vengono eseguiti prima e dopo il rinnovo per arrestare e riavviare automaticamente il server Nginx, quindi non richiedono alcun intervento manuale.

Per verificare se il rinnovo SSL funziona correttamente, eseguire un'esecuzione a secco del processo.

$ sudo certbot renew --dry-run

Se non vedi errori, sei a posto. Il tuo certificato si rinnoverà automaticamente.

Passaggio 8: configurare Nginx

Apri il file nginx.conf per la modifica.

$ sudo nano /etc/nginx/nginx.conf

Trova la riga include /etc/nginx/conf.d/*.conf; e incolla il seguente codice sotto di essa.

server_names_hash_bucket_size  64;

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Crea il file di configurazione Rainloop per Nginx e aprilo per la modifica.

$ sudo nano /etc/nginx/conf.d/rainloop.conf

Incolla il seguente codice al suo interno.

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name rainloop.example.com;
    root /var/www/html/rainloop;

    index index.php;
    client_max_body_size 25M;

    access_log  /var/log/nginx/rainloop.access.log;
    error_log   /var/log/nginx/rainloop.error.log;

    ssl_certificate      /etc/letsencrypt/live/rainloop.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/rainloop.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/rainloop.example.com/chain.pem;
    
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_index index.php;
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_keep_conn on;
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }

    location ^~ /data {
        deny all;
    }
}
# enforce HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  rainloop.example.com;
    return 301   https://$host$request_uri;
}

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Verificare la sintassi della configurazione di Nginx.

$ sudo nginx -t

Riavvia il servizio Nginx.

$ sudo systemctl restart nginx

Passaggio 9: configurazione e accesso a Rainloop

Apri la pagina Rainloops Administrator tramite l'URL https://rainloop.example.com/?admin e otterrai la seguente schermata di accesso.

Inserisci le seguenti credenziali e premi invio per accedere.

Username: admin
Password: 12345

La dashboard dell'amministratore di Rainloop si aprirà con un avviso per modificare la password predefinita.

Modificare la password predefinita utilizzando il collegamento nella dashboard.

Immettere la nuova password e fare clic sul pulsante Aggiorna password per procedere.

Rainloop utilizza MySQL per memorizzare le informazioni di contatto. Apri la pagina Contatti e seleziona MySQL dal menu a tendina.

Immettere le credenziali del database create in precedenza.

Premere il pulsante Test per verificare la connessione e installare le tabelle. Se il pulsante diventa verde, significa che la connessione è andata a buon fine.

Puoi iniziare a utilizzare Rainloop aggiungendo i tuoi account di posta.

Conclusione

Hai installato Rainloop con successo su un server Ubuntu 22.04. Se hai domande, pubblicale nei commenti qui sotto.