Client de messagerie Web Round Cube sur Raspberry Pi

Publicité
Advertisements
(Last Updated On: 1 mai 2021)

Dans ce tutoriel, vous allez installer Round Cube, c’est un client Web Mail pour votre serveur de messagerie. Il vous permettra de lire et d’envoyer des e-mails. Vous pouvez ignorer cette étape et utiliser un client externe, tel que Thunder Bird, Outlook, The Bat, etc.

Configuration de la base de données

Comme d’habitude, créez une base de données et un utilisateur pour prendre en charge le nouveau service Web que vous essayez de déployer.

mysql -u root -p
DROP DATABASE IF EXISTS roundcube_db; CREATE DATABASE IF NOT EXISTS roundcube_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT SELECT, UPDATE, INSERT, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON roundcube_db.* TO 'roundcube_db'@'localhost' IDENTIFIED BY '[RC_DB_PASSWORD]';
GRANT ALL PRIVILEGES ON roundcube_db.* TO '[YOUR_DB_ADMIN]'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

Prenez note [YOUR_DB_USER_PASSWORD]qu’il s’agit du mot de passe de l’ utilisateur roundcube_db . Prenez note de [YOUR_DB_ADMIN]Si vous n’avez pas d’utilisateur db Admin autre que root , n’exécutez pas cette requête.

Configuration du système de fichiers

Ensuite, avec l’installation de chaque nouveau service Web sur votre serveur Web NginX, commencez par créer des répertoires.

sudo mkdir -p /var/www/webmail.[YOUR_SITE].com/logs
sudo chown -R www-data:www-data /var/www/webmail.[YOUR_SITE].com/
sudo chmod -R 0750 /var/www/webmail.[YOUR_SITE].com/

Obtenir les fichiers

Après avoir configuré un système de fichiers et une base de données, vous pouvez télécharger les fichiers Round Cube.

Au moment d’écrire cet article, la dernière version de Round Cube est la 1.3.5, assurez-vous de vérifier cela et de télécharger la dernière version stable.

Pour commencer, accédez au répertoire que vous venez de créer. Et exécutez ces commandes pour obtenir les fichiers source.

cd /var/www/webmail.[YOUR_SITE].com/
wget https://github.com/roundcube/roundcubemail/releases/download/1.3.5/roundcubemail-1.3.5-complete.tar.gz
tar -xvf roundcubemail-1.3.5-complete.tar.gz
mv roundcubemail-1.3.5/* roundcubemail-1.3.5/.[^.]* . && rm -rf roundcubemail-1.*

Après avoir exécuté ces commandes, tous les fichiers de cube rond doivent être au format /var/www/webmail.[YOUR_SITE].com/.

Ensuite, poursuivez l’installation en modifiant la propriété et les autorisations.

mv config/config.inc.php.sample config/config.inc.php
mv composer.json-dist composer.json
sudo chown -R www-data:www-data  /var/www/webmail.[YOUR_SITE].com/
sudo chmod -R 0750 /var/www/webmail.[YOUR_SITE].com/
php composer.phar install --no-dev

Modifiez le fichier de configuration principal.

nano config/config.inc.php

Le mien ressemble à ça.

<?php

// Enable the installer
$config['enable_installer'] = false;
$config['db_dsnw'] = 'mysql://roundcube_db:[RC_DB_PASSWORD]@localhost/roundcube_db';
$config['default_host'] = 'imaps://mail.[YOUR_SITE].com';
$config['default_port'] = 993;
$config['smtp_server'] = 'tls://[YOUR_HOSTNAME]';
$config['smtp_port'] = 587;
$config['support_url'] = '';
$config['des_key'] = '[...]';
$config['product_name'] = 'Your Webmail';

Pour la $config['des_key'] = '[...]';assurez – vous de créer votre propre clé une longueur de 24 caractères, différent de celui fourni comme exemple: rcmail-!24ByteDESkey*Str!

// cette clé est utilisée pour crypter le mot de passe imap de l’utilisateur qui est stocké // dans l’enregistrement de session (et le cookie client si la mémorisation du mot de passe est activée). // veuillez fournir une chaîne d’exactement 24 caractères. // VOTRE CLÉ DOIT ÊTRE DIFFÉRENTE DE LA VALEUR DE L’ÉCHANTILLON POUR DES RAISONS DE SÉCURITÉ

Importation de la structure de la base de données

Vous disposez d’une base de données dans laquelle vous devez importer des tables.

mysql -u roundcube_db -p roundcube_db < SQL/mysql.initial.sql

Vous utilisez l’ utilisateur roundcube_db pour exécuter cette requête SQL. Par conséquent, vous devez entrer [RC_DB_PASSWORD].

N’oubliez pas de supprimer le dossier du programme d’installation.

rm -rf installer

Préparer le site Web

créer une configuration de site Web.

sudo nano /etc/nginx/sites-available/webmail.[YOUR_SITE].com

quelque chose de très basique, pour l’instant.

server {
    listen 80;
    listen [::]:80;

    server_name webmail.[YOUR_SITE].com;
    index index.php index.html index.htm;
    root /var/www/webmail.[YOUR_SITE].com/public_html;

    charset utf-8;
    fastcgi_intercept_errors on;

    error_log /var/www/webmail.[YOUR_SITE].com/logs/error.log error;
    access_log /var/www/webmail.[YOUR_SITE].com/logs/access.log;

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location /.well-known/acme-challenge/ {
        default_type "text/plain";
        allow all;
    }

    location ~ ^/(README.md|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
        deny all;
    }

    location ~ ^/(bin|SQL|config|temp|logs)/ {
        deny all;
    }

    location ~ /\. {
        deny all;
        access_log off;
        log_not_found off;
    }

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Rendez votre nouveau site Web disponible en créant un lien symbolique.

sudo ln -s /etc/nginx/sites-available/webmail.[YOUR_SITE].com /etc/nginx/sites-enabled/webmail.[YOUR_SITE].com

Vous pouvez tester la configuration nginx en exécutant cette commande.

sudo nginx -t

Si tout va bien, redémarrez simplement nginx.

sudo service nginx restart

Chiffrons

Je suppose que vous avez déjà installé certbot et que vous avez déjà une certaine expérience dans l’obtention de certificats SSL gratuits de Let’s encrypt.

sudo /etc/letsencrypt/certbot-auto certonly --agree-tos --webroot -w /space/www-data/webmail.[YOUR_SITE].com/public-html -d webmail.[YOUR_SITE].com

Si le site Web est visible et que la propriété du nom de domaine est vérifiée, le certificat doit être émis en 2 fichiers.

/etc/letsencrypt/live/webmail.[YOUR_SITE].com/fullchain.pem
/etc/letsencrypt/live/webmail.[YOUR_SITE].com/privkey.pem

Modifiez à nouveau la configuration de votre site Web pour imposer la connexion à votre service Web via https.

sudo nano /etc/nginx/sites-available/webmail.[YOUR_SITE].com

Voici à quoi ressemble mon fichier de configuration.

server {

    listen 80;
    listen [::]:80;

    server_name webmail.[YOUR_SITE].com;

    location /.well-known/acme-challenge/ {
        default_type "text/plain";
        allow all;
    }

    return 301 https://$server_name$request_uri;

}

server {

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

    server_name webmail.[YOUR_SITE].com;

    index index.php index.html index.htm;

    root /var/www/webmail.[YOUR_SITE].com/public_html;

    error_log /var/www/webmail.[YOUR_SITE].com/logs/error.log error;
    access_log /var/www/webmail.[YOUR_SITE].com/logs/access.log;

    # Disable loging for
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt { access_log off; log_not_found off; }

    # Point index to the Laravel front controller.
    index index.php index.html index.htm;

    charset utf-8;
    server_tokens off;
    sendfile off;
    fastcgi_intercept_errors on;

    client_max_body_size 10m;

    include /etc/nginx/template/SSL.conf;
    include /etc/nginx/template/standard.conf;

    location /.well-known/acme-challenge/ {
        default_type "text/plain";
        allow all;
    }


    ssl on;

    # Optimisation
    ssl_stapling on;
    ssl_stapling_verify on;

    # FastCgi
    fastcgi_param HTTPS on;
    fastcgi_param HTTP_SCHEME https;

    # enable session resumption to improve https performance
    ssl_session_cache shared:SSL:50m;
    ssl_session_timeout 5m;

    # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
    ssl_dhparam /etc/nginx/template/dh2048.pem;

    # enables server-side protection from BEAST attacks
    ssl_prefer_server_ciphers on;

    # disable SSLv3(enabled by default since Nginx 0.8.19) since it's less secure than TLS
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    # ciphers chosen for forward secrecy and compatibility
    ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS";

    # enable ocsp stapling (mechanism by which a site can convey certificate revocation information to visitors in a privacy-preserving, scalable manner)
    resolver 8.8.8.8 valid=360s ipv6=off; # Google DNS
    resolver_timeout 15s;

    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";
    # ssl certificates
    ssl_certificate /etc/letsencrypt/live/webmail.[YOUR_SITE].com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/webmail.[YOUR_SITE].com/privkey.pem;

    location ~ ^/(README.md|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ {
        deny all;
    }

    location ~ ^/(bin|SQL|config|temp|logs)/ {
        deny all;
    }

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Vous pouvez tester la configuration nginx en exécutant cette commande.

sudo nginx -t

Si tout va bien, redémarrez simplement nginx.

sudo service nginx restart

Dépannage

Je ne peux pas envoyer de pièces jointes volumineuses!

J’ai pris un lok au fichier .htaccess. Ce fichier est ignoré par le serveur Web NginX. Mais cela m’a donné les valeurs par défaut.

php_value upload_max_filesize 5M php_value post_max_size 6M php_value memory_limit 64M

Vous pouvez les intégrer à la configuration de votre client WebMail, pour ce faire, modifiez la configuration de votre site Web.

sudo nano /etc/nginx/sites-available/webmail.[YOUR_SITE].com

Modifiez le bloc php.

location ~ \.php$ {
        [...]
        fastcgi_param PHP_VALUE "upload_max_filesize = 5M \n post_max_size=6M \n memory_limit=64M";
    }

Dans la même configuration, vous pouvez également éditer cette ligne.

    client_max_body_size 10m;

Je l’ai défini sur 10 m , vous pouvez définir ces configurations sur les valeurs que vous aimez. N’utilisez rien de trop gros.

Vous pouvez tester la configuration nginx en exécutant cette commande.

sudo nginx -t

Si tout va bien, redémarrez simplement nginx.

sudo service nginx restart

Conclusion

C’était une installation rapide et amusante, j’espère que vous pouvez maintenant profiter de votre propre client WebMail.

 

 Raspberry PI Roundcube Tutoriels


Merci de votez pour cet article :
Pas malMoyenBienAcès bienExcélent (No Ratings Yet)
Loading...

Laisser un commentaire

Translate »