Roundcube mit NGINX installieren auf Ubuntu 22.04
In meinem Betrag zuvor, hatte ich einem Mailserver mit Postfix und Dovecot angelegt und nun möchte ich auf den Mailserver, einen E-Mail-Client installieren.
Roundcube
Roundcube downloaden
Hierbei ist zu beachten, dass immer die Versionsnummer mit im Dateinamen steht. Unter folgender URL findet man die neusten Versionen:
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.6/roundcubemail-1.6.6-complete.tar.gz
tar xvf roundcubemail-1.6.6-complete.tar.gz
sudo mkdir -p /var/www/
sudo mv roundcubemail-1.6.6 /var/www/roundcube
cd /var/www/roundcube
sudo chown www-data:www-data temp/ logs/ -R
NGINX
NGINX Installieren
Zunächst wird Nginx als Webserver benötigt. Dafür installiert man das NGINX Paket.
apt install nginx -y
PHP Extension installieren
sudo apt install php-net-ldap2 php-net-ldap3 php-imagick php-fpm php-common php-gd php-imap php-mysql php-curl php-zip php-xml php-mbstring php-bz2 php-intl php-gmp php-redis
Konfiguration anlegen
Dafür wird eine neue Datei erstellt und bearbeitet:
sudo nano /etc/nginx/conf.d/mail.example.com.conf
Nun wird die Configuration für den Webserver eingefügt. Hier wird die spätere Domain und das Verzeichnis, wo Roundcube liegt angegeben. Ebenso ist hier für die SSL Zertifikate der .well-known
Pfad wie die PHP Erweiterungen angegeben.
server {
listen 80;
listen [::]:80;
server_name mail.example.com;
root /var/www/roundcube/;
index index.php index.html index.htm;
error_log /var/log/nginx/roundcube.error;
access_log /var/log/nginx/roundcube.access;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.well-known/acme-challenge {
allow all;
}
location ~ ^/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
deny all;
}
location ~ ^/(bin|SQL)/ {
deny all;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
}
Bei server_name
muss der FQDN
von dem Mailserver eingetragen werden, so wie dieser auch durch den MX Record aufgeschlüsselt wird.
Nun wir nur noch NGINX neugestartet:
systemctl restart ngnix
Mysql
Mysql-Server installieren
Für Roundcube brauchen wir eine Datenbank.
apt install mysql-server
Mysql Datenbank anlegen
Zunächst wird eine Datenbank benötigt:
mysql -u root
CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Danach wird ein Datenbank Benutzer angelegt:
CREATE USER roundcube@localhost IDENTIFIED BY 'password';
Nun noch die Rechte zuweisen:
GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost;
flush privileges;
exit;
Roundcube Konfiguration
Nun geht es ans konfigurieren von Roundcube.
cd /var/www/roundcube
cp config.inc.php.sample config.inc.php
nano config.inc.php
Hier wird folgende Zeile geändert. Ändere pass
in das Passwort des Datenbankbenutzers.
$config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail';
Nun wird noch der SMTP und IMAP Hostgeändert:
$config['imap_host'] = 'tls://mail.example.com:143';
$config['smtp_host'] = 'tls://mail.example.com:587';
Danach lade noch diese Plugins:
// List of active plugins (in plugins/ directory)
$config['plugins'] = ['acl', 'additional_message_headers', 'archive', 'attachment_reminder', 'autologon', 'debug_logger', 'emoticons', 'enigma', 'filesystem_attachments', 'help', 'hide_blockquote', 'http_authentication', 'identicon', 'identity_select', 'jqueryui', 'krb_authentication', 'managesieve', 'markasjunk', 'new_user_dialog', 'new_user_identity', 'newmail_notifier', 'password', 'reconnect', 'redundant_attachments', 'show_additional_headers', 'squirrelmail_usercopy', 'subscriptions_option', 'userinfo', 'vcard_attachments', 'virtuser_file', 'virtuser_query', 'zipdownload'];
Nun kann es schon losgehen. Rufst du http://mail.deinedomain.com auf, so kannst du nun mit deinem Mailkonto arbeiten.