Libre Linux Synology

Installer et configurer RainLoop sur Synology

Si vous êtes utilisateur d’un NAS Synology, et si héberger votre propre serveur de mail vous est familier, vous avez certainement un usage régulier du client mail par défaut de Synology, qui n’est autre qu’un Roundcube (on laissera de côté MailPlus, la nouvelle solution payante du constructeur).

Ce dernier est disponible via un paquet fourni par défaut, mais sa lenteur et la lourdeur de l’interface qui n’est toujours pas responsive rendent son utilisation particulièrement fastidieuse.

A force de recherche, je me suis décidé à tester RainLoop, l’un des rares clients open-source (un choix récent d’ailleurs) et moderne, qui possède au moins cette caractéristique d’avoir une version mobile ,à défaut d’une version vraiment responsive, une interface claire et personnalisable, l’administration de plusieurs types de comptes, et surtout, une installation rapide !

PREREQUIS

  • Un serveur Synology
  • Le paquet Mail Server installé et configuré
  • SSH activé
  • Le paquet WebStation installé et le site web personnel activé
    PHP 7.0 installé

INSTALLATION

Pour commencer, connectons-nous en SSH à votre serveur

ssh user@mon-domaine.tld

### Entrer mot de passe user

### Connexion en super user

sudo -i

### Entrer mot de passe user

Créons un dossier dans /web, puis récupérons l’ensemble de Rainloop depuis le serveur

mkdir /volume1/web/rainloop
cd /volume1/web/rainloop
wget -qO- https://repository.rainloop.net/installer.php | php

On accorde les droits d’accès en écriture / lecture demandés par RainLoop (Attention, sur Synology, le user www-data est en fait http)

cd /volume1/web/rainloop
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \; 

Puis on définit le propriétaire récursivement :

chown -R http .

CONFIGURATION DU SERVEUR WEB

Afin de charger l’ensemble des extensions nécessaires au bon fonctionnement de Rainloop, rendez-vous dans Web Station, puis dans l’onglet « Paramètres PHP ».
Vous pouvez soit créer une configuration spécifique pour Rainlop, soit faire vos modifications dans le profil PHP 7 déjà existant.

Dans la partie Extensions, veillez à ce que les extensions cURL, iconv, imap, openssl et ssh2 soient bien cochées. Si vous souhaitez utiliser CARDDAV (pour synchroniser votre carnet d’adresse), cochez également les extensions pdo_mysql et/ou pdo_pgsql et/ou pdo_sqlite. (Merci MichelhH pour l’apport concernant les extensions !)

REDIRECTION VIA VIRTUAL HOST

En bonus, on peut facilement créer un Virtual Host afin d’accéder au webmail par l’URL de son choix. Dans un premier temps, vous devez déclarer ce sous-domaine dans la zone DNS de votre fournisseur de nom de domaine (ou registrar) et effectuer une redirection CNAME vers le domaine pointant sur votre NAS Synology

Dans Web Station, onglet Virtual Host, cliquer sur Créer puis entrer le nom de domaine souhaité dans le champ « Nom d’hôte ».

Les ports par défaut (80/443) devraient convenir (sauf en cas de configuration particulière).

Dans le champ « Racine du document », cliquer sur « Parcourir », puis sélectionner le dossier de RainLoop dans le dossier web.

Activez le HSTS et le HTTP/2, et sélectionnez Nginx en serveur web, ainsi que le profil PHP, soit 5.6 soit 7.0, selon votre configuration. A noter que RainLoop supporte depuis un moment PHP 7.0, et que vous pouvez également choisir de partir sur Apache pour le serveur Web sans souci.

On redémarre WebStation

synoservicecfg --restart pkgctl-WebStation

Terminer la commande par Contrôle C (ou Cmd C), un bug empêchant SSH de vous redonner la main…

Sécuriser votre installation

Commençons par créer un certificat SSL, le plus simple étant un certificat Let’s Encrypt via la procédure automatique proposée par Synology (Panneau de configuration / Sécurité / Certificat).

Une fois le certificat créé, configurez-le sur votre sous-domaine (je cherche encore une solution pour la redirection forcée en connexion SSL, si jamais quelqu’un a une idée…).

Il va maintenant falloir protéger le dossier /data, mais Synology ne faisant pas les choses simplement, il va falloir contourner la mise à zéro du fichier de config de nginx à chaque démarrage.

Pour cela, rendez-vous dans le fichier /etc/nginx/app.d/server.webstation-vhost.conf (en utilisant nano si installé, ou vi). Vous devriez trouver une ligne concernant votre virtual host, se présentant comme ceci :

server {

    listen      80;
    listen      [::]:80;

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

    server_name email.gulao.fr;
    
    [......]
    
        }

    include /usr/local/etc/nginx/conf.d/a9d7168c-01a8-41ac-81e5-9d7ad4c2ccfe/user.conf*;

}

La partie qui nous intéresse est l’include, nous indiquant où se trouve le fichier que nous allons pouvoir modifier pour personnaliser notre instance de nginx.

Rendons-nous dans ce dossier, puis créons le fichier user.conf dans lequel nous ajouterons de quoi protéger nos dossiers (en n’oubliant pas de personnaliser le nom du dossier en fonction de ce que vous obtenez dans votre fichier de configuration plus haut) :

cd /usr/local/etc/nginx/conf.d/a9d7168c-01a8-41ac-81e5-9d7ad4c2ccfe
echo -e 'location ^~ /data {n deny all; n}' >> user.conf 

Puis on redémarre nginx

synoservicecfg --restart nginx

Voici RainLoop déployé, il s’agit maintenant de le configurer !

On se rend sur l’URL d’administration en passant par https://mon-domaine.tld/?admin

Les identifiants par défaut sont admin / 12345. Vous êtes invités dès la première connexion à les changer tous les deux 😉

Pour la configuration du serveur mail, référez-vous à la configuration de votre serveur mail (un petit coup de pouce ?)

Le plus simple est de configurer le serveur mail en localhost :

IMAP

  • localhost
  • Port 143
  • Sécurité : aucun

SMTP

  • localhost
  • 25
  • Sécurité : aucun

Le panneau de configuration est très complet, et propose une multitude d’options (double authentification, connexion aux réseaux sociaux…) et installation d’extensions. A vous de le personnaliser comme bon vous semble !

Retrouvez la documentation officielle de RainLoop : https://www.rainloop.net/docs/

2 Commentaires
  1. MichelhH 1 année ago
    Répondre

    Bonjour,
    Avant tout, merci pour ton travail !
    Néanmoins je souhaiterais apporter quelques constatations :
    – d’avoir lancé la commande de redémarrage du syno [synoservicecfg –restart pkgctl-WebStation] a cassé DSM. Pas trop grave en ce qui me concerne puisque je teste le machin que je viens de m’offrir. J’ai réinstallé le système et recommencé l’installation de RainLoop sauf que j’ai préféré redémarrer le nas en passant par son interface. là, plus de problème.
    – pour que le test IMAP et SMTP soit positif, il a fallu aussi que je coche les extensions : iconv, ssh2, imap et openssh (j’ai créé une config PHP7 propre à RainLoop)
    – j’ai pu trouver que si l’on souhaite CARDDAV, il fallait aussi les extensions pdo_mysql et/ou pdo_pgsql et/ou pdo_sqlite. J’ai lancé le test sur sqlite, c’est OK pour moi.
    Par contre, je n’arrive toujours pas à me logger sur RainLoop en utilisant id et mdp qui sont les mêmes que ceux qui me permettent de me connecter au syno : aurais-tu une piste ?
    Encore merci et au passage, beau petit blog, propre, clair et moderne !
    M
    PS : je suis un gros noob !

  2. raphael 12 mois ago
    Répondre

    Hello Michel,
    Merci pour ton retour !

    – Pour ce qui est du redémarrage du WebStation, effectivement j’ai parfois une absence de réaction avec la commande synoservice –restart pkgctl-WebStation en SSH, mais en tuant la tâche (Crtl+C) je reviens à un comportement normal (Et Webstation redémarre normalement), c’est la commande . Tu es en quelle version de DSM ?
    – Noté pour les extensions : n’ayant pas fait une config spécifique à Rainloop, je les avais activées notamment pour Nextcloud, je rajoute ça dans le tuto, merci !!

    – Pour ce qui est du log à Rainloop, est-ce que tu as bien accordé les droits au serveur de messagerie au user ?
    Si tu testes en faisant une config localhost, tu as toujours le même problème ? (Avec les ports 143 et 25)

    Bon courage, tiens-nous au courant 🙂

Leave a Comment

Votre adresse ne sera pas publiée.

Vous pourriez aussi aimer