So installierst du Rainloop Webmail unter Ubuntu 22.04

Rainloop ist ein in PHP geschriebener, webbasierter Open-Source-E-Mail-Client. Er ist schnell, leichtgewichtig und unterstützt die Protokolle SMTP und IMAP.

In dieser Anleitung lernst du, wie du den Rainloop-Client auf einem Ubuntu 22.04-Server installierst.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 22.04 läuft.
  • Ein Domainname, der auf den Server verweist. Für unser Tutorial werden wir die Domain rainloop.example.com verwenden.
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.
  • Stelle sicher, dass alles auf dem neuesten Stand ist.
    $ sudo apt update && sudo apt upgrade
    
  • Installiere grundlegende Hilfspakete. Einige von ihnen sind vielleicht schon installiert.
    $ sudo apt install wget curl nano unzip -y
    

Schritt 1 – Firewall konfigurieren

Der erste Schritt vor der Installation von Rainloop ist die Konfiguration der Firewall. Überprüfe den Status der Firewall.

$ sudo ufw status

Du solltest etwas wie das Folgende sehen.

Status: active

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

Rainloop benötigt HTTP- und HTTPs-Ports, um zu funktionieren.

$ sudo ufw allow http
$ sudo ufw allow https

Öffne die Ports für die Mailkonten, die du benutzt.

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

Überprüfe den Status zur Bestätigung noch einmal.

$ 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)

Schritt 2 – Installiere Nginx

Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.

Importiere den Signierschlüssel von Nginx mit curl und gpg.

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

Füge das Repository für die stabile Version von Nginx hinzu.

$ 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

Aktualisiere die System-Repositories.

$ sudo apt update

Installiere Nginx.

$ sudo apt install nginx

Überprüfe die Installation.

$ nginx -v
nginx version: nginx/1.22.0

Schritt 3 – PHP installieren und konfigurieren

Ubuntu 22.04 wird standardmäßig mit PHP 8.1 ausgeliefert. Aber damit Rainloop funktioniert, müssen wir PHP 8.0 installieren. Der erste Schritt besteht darin, das PHP-Repository von Ondrej hinzuzufügen.

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

Installiere PHP und die erforderlichen Erweiterungen, die Rainloop benötigt.

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

Überprüfe die Installation.

$ 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

Überprüfe den Status des PHP-Dienstes.

$ 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)

Öffne die Datei php.ini zum Bearbeiten.

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

Ändere die Werte der folgenden Variablen, um die Größe des Mailanhangs auf 25 MB zu setzen.

upload_max_filesize = 25M
post_max_size = 25M

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Öffne die Datei /etc/php/8.0/fpm/pool.d/www.conf.

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

Finde die Zeilen user=apache und group=apache in der Datei und ändere sie wie folgt.

...
; 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
...

Suche auch die Zeilen listen.owner = www-data und listen.group = www-data und ändere sie wie folgt.

...
; 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
...

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Starte den PHP-FPM-Dienst neu.

$ sudo systemctl restart php8.0-fpm

Schritt 4 – Installiere MySQL

Ubuntu 22.04 wird mit der neuesten Version von MySQL ausgeliefert. Du kannst sie mit einem einzigen Befehl installieren.

$ sudo apt install mysql-server

Überprüfe die Version von MySQL.

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

Dieser Schritt ist für die MySQL-Versionen 8.0.28 und höher notwendig. Rufe die MySQL-Shell auf.

$ sudo mysql

Führe den folgenden Befehl aus, um das Passwort für deinen Root-Benutzer festzulegen. Achte darauf, dass es eine Mischung aus Zahlen, Groß- und Kleinbuchstaben und Sonderzeichen enthält.

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

Beende die Shell.

mysql> exit

Führe das Skript für die sichere Installation von MySQL aus.

$ sudo mysql_secure_installation

Zuerst wirst du nach deinem Root-Passwort gefragt. Gib es ein. Als Nächstes wirst du aufgefordert, die Validate Password Component zu installieren. Sie prüft die Stärke der in MySQL verwendeten Passwörter. Drücke Y, um sie zu installieren.

Als Nächstes wirst du aufgefordert, die Stufe der Passwortvalidierung festzulegen. Wähle 2, da dies die stärkste Stufe ist.

Drücke N, um die Änderung deines Root-Passworts abzulehnen. Drücke außerdem Y, um anonyme Benutzer zu entfernen, Remote-Root-Logins zu verbieten, die Testdatenbank zu entfernen und die Berechtigungstabellen neu zu laden.

Schritt 5 – MySQL konfigurieren

Melde dich in der MySQL-Shell an. Gib dein Root-Passwort ein, wenn du dazu aufgefordert wirst.

$ sudo mysql -u root -p

Erstelle eine Datenbank für Rainloop.

mysql> CREATE DATABASE rainloop;

Erstelle einen SQL-Benutzer für den Zugriff auf die Datenbank. Ersetze yourpassword durch ein Passwort deiner Wahl.

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

Gewähre rainuser Zugriff auf die Datenbank.

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

Lade die Berechtigungstabelle neu.

mysql> FLUSH PRIVILEGES;

Beende die Shell.

mysql> exit

Schritt 6 – Installiere Rainloop

Erstelle das öffentliche Verzeichnis für Rainloop.

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

Lade die neueste Version von Rainloop herunter.

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

Entpacke die heruntergeladene Datei in das öffentliche Verzeichnis.

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

Ändere den Eigentümer des Verzeichnisses auf Nginx.

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

Setze die von Rainloop benötigten Lese- und Schreibrechte.

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

Schritt 7 – SSL installieren

Wir müssen Certbot installieren, um die von Let’s Encrypt angebotenen kostenlosen SSL-Zertifikate zu generieren.

Du kannst Certbot entweder über das Ubuntu-Repository installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.

Bei Ubuntu 22.04 ist Snapd standardmäßig installiert. Führe den folgenden Befehl aus, um sicherzustellen, dass deine Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core

Installiere Certbot.

$ sudo snap install --classic certbot

Verwende den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link zum Verzeichnis /usr/bin erstellst.

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

Erstelle ein SSL-Zertifikat für Rainloop.

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

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

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

Öffne die Datei /etc/letsencrypt/renewal/rainloop.example.com.conf zur Bearbeitung.

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

Füge den folgenden Code am Ende der Datei ein.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Wir haben das SSL-Zertifikat mit der Standalone-Option von Certbot erstellt. Es lässt seinen Webserver laufen, um das Zertifikat zu erstellen, was bedeutet, dass Nginx während der Erneuerung abgeschaltet sein sollte. Die Befehle pre_hook und post_hook werden vor und nach der Erneuerung ausgeführt, um den Nginx-Server automatisch abzuschalten und neu zu starten, sodass kein manuelles Eingreifen erforderlich ist.

Um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert, führe einen Probelauf des Prozesses durch.

$ sudo certbot renew --dry-run

Wenn du keine Fehler siehst, ist alles in Ordnung. Dein Zertifikat wird automatisch erneuert.

Schritt 8 – Nginx konfigurieren

Öffne die Datei nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Finde die Zeile include /etc/nginx/conf.d/*.conf; und füge den folgenden Code darunter ein.

server_names_hash_bucket_size  64;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Erstelle die Rainloop-Konfigurationsdatei für Nginx und öffne sie zum Bearbeiten.

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

Füge den folgenden Code in die Datei ein.

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;
}

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe die Syntax der Nginx-Konfiguration.

$ sudo nginx -t

Starte den Nginx-Dienst neu.

$ sudo systemctl restart nginx

Schritt 9 – Rainloop konfigurieren und aufrufen

Öffne die Rainloop-Administratorseite über die URL https://rainloop.example.com/?admin und du erhältst den folgenden Anmeldebildschirm.

Rainloop Administrator Anmeldung

Gib die folgenden Anmeldedaten ein und drücke die Eingabetaste, um dich anzumelden.

Username: admin
Password: 12345

Das Rainloop-Administrator-Dashboard öffnet sich mit einer Warnung, dass du dein Standardpasswort ändern musst.

Rainloop Administrator Passwort-Warnung

Ändere das Standardpasswort, indem du den Link im Dashboard benutzt.

Rainloop Bildschirm Passwort ändern

Gib dein neues Passwort ein und klicke auf die Schaltfläche Passwort aktualisieren, um fortzufahren.

Rainloop verwendet MySQL, um Kontaktinformationen zu speichern. Öffne die Seite Kontakte und wähle MySQL aus dem Dropdown-Menü.

Rainloop Kontakte Seite

Gib die zuvor erstellten Datenbank-Anmeldedaten ein.

Rainloop MySQL Details

Klicke auf die Schaltfläche Test, um die Verbindung zu überprüfen und die Tabellen zu installieren. Wenn die Schaltfläche grün wird, bedeutet das, dass die Verbindung erfolgreich hergestellt wurde.

Du kannst Rainloop nun nutzen, indem du deine E-Mail-Konten hinzufügst.

Fazit

Du hast Rainloop erfolgreich auf einem Ubuntu 22.04 Server installiert. Wenn du Fragen hast, schreibe sie unten in die Kommentare.

Das könnte dich auch interessieren …