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.
Merci de votez pour cet article :