Raspberry Pi, un serveur d’email avec Citadel


Achtung : Dieser Artikel wurde automatisch von Google Translate übersetzt


Après l’outil standard qu’est Postfix (voir l’article ici), j’ai voulu tester un outil plus complet : Citadel.
email-0

Pour ce nouvel article je voulais quelque chose offrant plus de fonctionnalité qu’un simple serveur d’emails. Citadel propose d’aller plus loin dans une suite se voulant simple d’utilisation. Les fonctionnalités sont nombreuses et font vraiment envies :

  • Récupération d’email POP3, IMAP
  • Calendrier WebDAV, CalDAV
  • Webmail
  • Push vers les mobiles
  • Serveur web et base de données intégrés
  • etc.

Vous pourrez voir à la fin que le tableau n’est pas si rose !

  1. Comme à chaque début de tutoriel, une mise à jour complète du système s’impose !
    sudo apt-get update && sudo apt-get upgrade
  2. Installer Inadyn pour avoir votre nom de domaine ou utilisez le domaine que vous possédez déjà. Vous trouverez toutes les infos pour Inadyn dans cet article.
  3. Changer le fichier /etc/hosts
    127.0.0.1      <nom de votre domaine>
  4. Changer le fichier /etc/hostname
    <nom de votre domaine>
  5. Redémarrer le Raspberry Pi
    reboot
  6. Installer l’ensemble des outils Citadel
    sudo apt-get install citadel-suite
  7. Lors de l’installation, une série de question va être posée :
    1. La première demande qui va pouvoir se connecter au système pour l’envoi/réception des emails. Par défaut la valeur est tout le monde avec l’IP 0.0.0.0. A vous de changer la valeur si vous voulez restreindre les accès. Attention si vous mettez * ça risque de poser problème avec une écoute que sur des adresses IPv6.
    2. La méthode d’authentification.
      email-2J’ai choisi Internal. C’est Citadel qui va tout gérer. La méthode Host peut aussi convenir si vous voulez que seules les personnes avec un compte sur la machine puisse avoir des emails.
    3. Le compte administrateur
      email-3Sauf si vous voulez un nom particulier, pas de raison de le changer. Si lors de l’étape précédente vous avez choisi « Internal », le compte doit déjà exister.
    4. Le mot de passe de l’administrateur. Pas besoin d’expliquer 😉 A saisir deux fois
      email-4
    5. Intégration de l’interface Web
      email-5Vous avez le choix entre Apache ou bien le serveur Web intégré. Le serveur intégré est présenté comme très léger et performant. Ne connaissant pas très bien Apache (oui je reste fan de Nginx 🙂 ) j’ai choisi le serveur interne.
    6. Le port par défaut. je n’ai pas d’autre service à faire tourner donc j’ai garder le port 80
      email-6
    7. Le port HTTPS. Par défaut 443, je n’y ai pas touché.
      email-7
    8. La langue par défaut. Soit vous forcez la valeur pour tous soit vous laissez le choix à l’utilisateur avec la valeur « User defined » (mon choix)
      email-8
    9. L’installation reprend son cours
  8. A la fin de l’installation les choses peuvent se compliquer avec un message d’erreur envoyé sur toutes les consoles :
    email-99Cela vient de l’absence de la gestion d’IPv6 dans la version utilisée par Raspbian
    Pour résoudre le problème, la solution est de saisir la commande suivante afin d’activer la gestion d’IPv6 puis relancez le service

    sudo modprobe ipv6
    sudo service citadel restart

    La première commande charge le module mais si le Raspberry Pi redémarre c’est de nouveau à refaire. Pour corriger définitivement, il faut ajouter le module dans le fichier /etc/modules

    sudo echo "ipv6" >> /etc/modules
  9. En théorie, ça a l’air de fonctionner, l’accès par l’interface web ayant l’air opérationnel. Par contre il reste toujours une petite erreur :
    Message from syslogd@raspberrypi at Apr 21 12:35:35 ...
     citserver[2246]: Failed to adjust ownership of: /etc/citadel/netconfigs/7 [No such file or directory]

    Pour résoudre ça, il faut créer le répertoire manquant et mettre comme propriétaire le user citadel

    sudo mkdir /etc/citadel/netconfigs
    sudo chown citadel:citadel /etc/citadel/netconfigs
    sudo service citadel restart
  10. En vous connectant à l’interface web (chez moi j’ai pris HTTPS) voilà l’écran que j’obtiens :
    email-9
  11. Si vous avez besoin de changer la configuration vous pouvez relancer la commande suivante :
    sudo /usr/lib/citadel-server/setup

    Et pour moi j’ai du y passer car l’utilisateur admin n’était pas reconnu dans l’écran de connexion. En plus l’interface de connexion ne fonctionne pas sous Safari 🙁

  12. Vous pouvez retourner sur la page de connexion, saisir le user et mot de passe définis lors du setup et tadaaaa :
    citadel-1
  13. Rendez-vous dans la partie d’administration pour configurer le serveur
    Capture_d_écran_21_06_13_20_20
  14. Remplissez la zone sur les champs Local host aliases et Directory domains. Il s’agit du domaine où Citadel va recevoir des emails. Il s’agit du domaine de l’étape 2 si vous passez par un domaine sur Inadyn.
  15. Si vous retournez dans la partie d’administration vous pourrez gérer les utilisateurs et leurs droits
    Capture_d_écran_21_06_13_20_30
  16. Vous allez pouvoir maintenant recevoir et envoyer des emails depuis l’interface Web

Alors j’ai franchement galéré avec cet outil. D’abord mon goût personnel : je n’aime pas l’interface. Ok ça fait tout mais je trouve pas ça ergonomique !

Ensuite j’ai passé comme un noob des heures en testant l’envoi d’un mail sur une adresse Outlook. En trouvant (enfin) la log de Citadel située dans /var/log/mail (oui je sais j’ai du mal des fois !), il s’avère que comme j’utilise un domaine de chez no-ip, outlook.com refuse les mails en provenance des serveurs avec IP dynamique. Donc si vous avez une IP dynamique vos mails peuvent ne pas être reçus par certains destinataires.

Enfin, le SMTP relay. Là aussi j’ai galéré pour finir par abandonner ! Pour passer par dessus le problème Outlook je voulais passer par le SMTP de gmail. Pas de bol il faut une authentification TLS et Citadel ne sait pas faire ! Idem pour Free.

Bref pour la première fois je fais un tutoriel sans être vraiment satisfait du résultat car au final l’outil ne permet pas de mon point de vue d’aller au bout des choses ! Moi aussi car au final je n’ai pas testé (encore) la sécurisation avec les certificats SSL.

J’attends vos astuces sur cet outil qui a l’avantage d’être simple (quand on sait comment faire) et complet (d’un point de vue fonctionnalités) 🙂

Vous aimerez aussi...

  • Germain

    Super le tuto ! Exactement ce dont j’avais besoin… Le remailer gmail ou free c’est pour contourner les soucis d’outlook.com, c’est ça ? (j’espère avoir bien lu entre les lignes)

    Merci et bonne soirée ! Ça me redonne du courage pour dépoussiérer mon cadeau de Noël : un Raspberry Pi…

    • Oui le service de Microsoft est vraiment trop strict donc c’est pour le contourner.

  • helmanath

    Bonjour, j ai quelque souci pour la configuration …

    Dans directory domains je ne sais pas quoi mettre … ni local host aliases … tout ce que je sais c est que ma config chez no-ip c est : helmanath.no-ip.biz

    Merci pour toute aide 🙂

  • Sniijz

    Bonjour,
    Comment peut on modifier l’adresse qui permet d’accéder à l’interface de citadel si l’on a déjà un site web de paramétré (avec nginx) ?

    Merci beaucoup pour vos tutos!

    • Sniijz

      Par exemple si je veux accéder à l’interface à l’adresse http://www.monndd.com/citadel, c’est possible ça?

      • Citadel peut devenir un sous répertoire du premier site :
        http://www.mondd.com/site1
        http://www.mondd.com/site2
        http://www.mondd.com/site3
        etc.
        soit ca devient un deuxième site mais avec un port différent
        http://www.mondd.com/site1:80
        http://www.mondd.com/site2:8080
        http://www.mondd.com/site3:8090

        Et dans /var/www il y a un répertoire par site.
        L’avantage (entre autre) des ports différents est de pouvoir mettre du HTTPS facilement que sur certains sites et pas tous (ou aucun)

        • Sniijz

          Ah d’accord, et pour modifier ça je dois toucher au fichier nommé « public_clients » dans /etc/citadel c’est bien ça?
          Parce que ce que je comprends pas, c’est que Citadel n’à placé aucun fichier au niveau de /var/www, je m’attendais a avoir un index.html ici, que j’aurai déplacé dans une autre dossier du genre http://www.monndd.com/citadel...

          Merci pour votre aide en tout cas! 😀

          • Sniijz

            Bonsoir,

            Après moult recherches, j’ai trouvé le fichier à modifier pour changer le port d’accès de Citadel et de Webcit : /etc/default/webcit

            Le soucis, c’est qu’avec des ports d’accès différents Ports 8080 et 4343) de mon serveur HTTP Nginx (Ports 80 et 43) je n’arrive plus a accéder ni a mon site, ni a Citadel.

            Et je n’ai toujours pas trouvé le fameux fichier de conf pour donner l’accès a un sous-domaine à Citadel…

          • Sniijz

            C’est encore moi!
            Bon bonne nouvelle, j’ai finalement réussi, en fait il fallait configurer les vhosts de Nginx! (en plus Citadel est tellement cool qu’il propose une config de vhost toute faite :P)

            Pour ceux qui cherchent aussi, il faut paramétrer nginx dans /etc/nginx/sites-availables/ et créer un fichier du style http://www.exemple.com.citadel qui contient une config similaire au fichier nommé « défaut » du même dossier!
            Une fois celui-ci créé il faut faire un lien symbolique vers Nginx et ça roule!
            (C’est le même délire avec Apache btw ^^’)

            Merci beaucoup pour tes tutos et ton aide Chris, continues si il te plaît 😀

          • Merci 🙂

  • Excellent. Bien servi pour monter mon serveur CITADEL