A+ sous l’bus Google – Partie 2

Les articles qui vont suivre ne sont pas des tutos à par entière, disons que c’est plus une marche à suivre. Je vais essayer d’être le plus indicatif possible mais je vais sûrement zapper des choses. Si un truc n’est pas clair, faites le savoir dans les commentaires et j’essaierai de compléter l’article !

 

Le serveur mail

La première chose à faire c’est – sans surprise – installer un serveur de mail. Perso avant de me lancer dans ce projet j’avais une fois touché à Postfix/MySQL avec des virtual mailbox pour faire des simples redirections mails. Autant dire que je partais de loin…

Tout ce que je savais c’est qu’il faut :

  • un MTA,
  • un spamassassin : impossible de faire sans maintenant,
  • un clamav : histoire de faire le tri dans les facture.exe (ou pas),
  • et un dovecot pour l’accès IMAP/POP3.

Voici un schéma qui résume comment tout ça est embranché :

how-postfix-dovecot-amavis-clamav-and-spamassassin-work-postfix-the-bigpicture

  1. Un mail est reçu par Postfix,
  2. Après vérification de l’expéditeur (blacklist, authentification si nécessaire, greylisting,…) il est esnuite envoyé à Amavis pour une analyse de son contenu,
  3. SpamAssasin vérifie via ses filtres si on ne vous demande pas d’augmenter la taille de votre organe reproducteur,
  4. ClamAV jette un coup d’oeil aux pièces jointes,
  5. Le mail est renvoyé à Postfix…
  6. … qui se fait un plaisir de demander à Dovecot de le ranger au bon endroit
  7. Dovecot vérifie l’état du quota de l’utilisateur, et analyse les règles de filtrage de l’utilisateur afin de prendre une décision sur l’action à faire (stockage dans le bon dossier ou renvoi du mail),
  8. L’utilisateur s’authentifie auprès de Dovecot en IMAP ou POP3 afin d’accéder au mail.

Sans réelle connaissance et vu que le temps pressait (rapport à l’affaire Prism) j’ai donc décidé de partir sur une solution clé en main et d’apprendre sur le tas.

IredMail

Quécéquoi ? IredMail c’est un « gros script » qui a pour but de vous préparer une solution de mail clé en main en  installant les packages officiels de votre distrib Linux préférée, vous poser quelques questions et générer les fichiers de configuration en conséquence. Principal avantage : c’est facile à maintenir, ça fonctionne bien et toute la configuration reste accessible.

IredMail est open-source et propose aussi une solution « pro » (donc payante), cette version ne fait qu’ajoute un panel de configuration plus avancé. Les features entre les deux sont donc les mêmes, il faut juste mettre les mains dans le cambouis dans notre cas, pas de panique ce n’est pas sale :)

Pour les debian-istes vous pouvez partir sans souci sur une Wheezy (même si pour le moment la version recommandée est Squeeze).
Seul pré-requit pour l’installation d’Iredmail : avoir une machine fraîchement installée (ou propre de tout paquet étrange).

Téléchargez iRedmail : http://www.iredmail.org/download.html et ensuite suivez le bon tuto en fonction de votre distrib : http://www.iredmail.org/doc.html (je ne vais pas en faire un ici, la doc est plutôt explicite )

Une chose par contre, il faut choisir l’installation avec LDAP, c’est indispensable pour la suite :)

Une fois l’installation terminée, iRedMail ne vous laisser pas seul et génère un fichier iRedMail.tips, c’est un rapport de son installation, contenant : 

  • Les softs déployés
  • Leurs fichiers de configuration
  • Leurs fichiers de log
  • Les login/pass associés
  • L’URL (si besoin)

Ce fichier est à garder précieusement et surtout à l’abris des regards indiscrets, genre pas sur votre serveur, dans un Keepass ou un container Truecrypt par exemple :)

 

Config DNS

J’imagine que vous avez déjà fait pointer le MX de votre domaine sur l’IP de votre serveur, si non, ce n’est pas une mauvaise idée de le faire maintenant ;)

Cette étape permet d’éviter de faire reléguer au rang de spammer et d’authentifier ses mails pour lutter contre le phishing grâce au SPF et au DKIM.

Pour cela, deux tutos à suivre :
https://code.google.com/p/iredmail/wiki/DNS_SPF (backup ici)
et
https://code.google.com/p/iredmail/wiki/DNS_DKIM (backup ici)

Petit détail, pour DKIM il ne faut pas utiliser :


mais :


Attention aussi de bien mettre la valeur du record en une seule ligne comme indiqué.

Au final votre configuration DNS doit ressembler à ça (si on prend l’exemple de roflcopter.fr) :

Premiers pas et tests

3 URL à retenir :

  • https://<votre_ip>/iredadmin/, c’est l’accès à l’interface d’admin d’IredMail, c’est ici que vous allez ajouter des domaines et créer des comptes mails.
  • https://<votre_ip>/mail ou /webmail/, c’est votre webmail : « roundcube ».
  • https://<votre_ip>/phpldapadmin/, c’est ici que vous allez parfois mettre les mains dans le cambouis : ce n’est pas sale :)

Allez rendez-vous sur la page d’iredadmin, et allez créer votre domaine et votre compte mail, vous pourrez ensuite vous connecter sur le webmail.

Avant de tester l’envoie de mail, vérifiez si vos MX sont à jour, allez dans une console (windows ou linux) et tapper les commandes suivantes :


Vous devriez obtenir une réponse de cette forme :


Vous pouvez donc envoyer un mail à votre nouvelle adresse. Une bonne chose à faire est de surveiller en parallèle le fichier de log de postfix :


Exemple ici d’une réception correct d’un mail :


Il ne reste plus qu’à prendre en main Roundcube. C’est quelque chose qui se fait assez rapidement et qui ne fera pas l’objet d’un article :) Google est votre ami.

Activer Spamassasin/Clamav

Par défaut ils ne sont pas activés ?! Étrange…

Pour les activer, rien de plus simple : éditez le fichier


Activer spamassasin :


Puis activer les mises à jour automatiques :


On redémarre pépère et on en profite pour faire la mise à jour de ses filtres :


 

Ensuite il va falloir dire à Amavis  – service qui s’occupe de faire le pont entre postfix et Spamassasin // Clamav – d’activer la vérification des mails :



Et on redémarre Amavis :


Voilà, normalement tout devrait bien se passer ;)

 

Gérer plusieurs adresses mails

Si comme moi vous avez plusieurs domaines ou des mails génériques (comme contact@…, admin@…) c’est un peu galère de créer une boite mail pour chaque adresse. On va plutôt utiliser une adresse principale et faire des redirections mails sur toutes les autres adresses.

Ajouter un alias

Une adresse mail de redirection est un alias, malheureusement l’interface web basique ne permet pas la création d’alias, il faut aller directement dans le LDAP. Rendez-vous, donc, dans le phpldapadmin (rappelez-vous le DN du compte et le mot de passe sont dans le fichier iredmail.tips)

2013-08-29 16_18_48-phpLDAPadmin (1.2.2) -

Dans la branche « domain », sélectionner le domaine du futur Alias, cliquez sur « Aliases » et ensuite « Create a child entry ».

Dans le menu suivant, sélectionnez « MailAlias » comme ObjectClasses et cliquez sur « Proceed ».

Dans l’étape suivante, il va falloir remplir plusieurs champs, ils sont obligatoires :

  • RDN : choississez « mail« 
  • Email : l’email de votre alias
  • accountStatus : active
  • cn : l’intitulé de votre alias
  • enabledService : mail
  • mailForwardingAddress : l’adresse de destination de votre alias

2013-08-29 16_54_04-phpLDAPadmin (1.2.2) -

Ensuite, cliquez sur « Create Object » tout en bas, puis « Commit » dans le menu suivant.

Il faut ensuite rajouter un « enabledService », sinon l’alias ne fonctionnera pas !

Cliquez sur « add value » dans la partie « enabledService » et entrez « deliver » puis cliquez sur « Update Object » :

2013-08-29 17_00_34-phpLDAPadmin (1.2.2) -

N.B : vous pouvez rajouter autant de mailForwardingAddress que vous le voulez, vous aurez ainsi un alias pointant sur plusieurs adresses mails.

Une fois l’alias configuré, vous pourrez recevoir recevoir les mails via votre email principal.

Intégration dans Roundcube

Roundcube gère très bien les alias via les « identités ». Une identité est liée à une adresse mail et permet d’envoyer des mails via cette adresse. Vous pouvez par exemple configurer une signature différente par identité.

Par défaut c’est désactivé, pour le réactiver, c’est assez simple, il y a juste une variable à changer dans le fichier de configuration principal de Roundcube :


Et changez la valeur du paramètre identities_level :

Et le DKIM dans tout ça ?

Si vous ajoutez un nouveau domaine, il va falloir lui générer une pair de clé DKIM et l’intégrer dans amavis. La procédure est simple et est décrite ici : http://www.iredmail.org/forum/post1807.html#p1807 (backup ici)

 

Le « +addressing »

Avec Gmail, vous avez la possibilité de créer virtuellement autant d’adresse mail que vous voulez à partir de la vôtre, par exemple avec « tu.peux.pas.test@gmail.com » : 

  • tu.peux.pas.test+spam@gmail.com
  • tu.peux.pas.test+mailing@gmail.com
  • tu.peux.pas.test+univ@gmail.com
  • tu.peux.pas.test+taff@gmail.com
  • tu.peux.pas.test+<etc etc>@gmail.com

Toutes ces adresses seront redirigées automatiquement vers votre inbox. C’est assez pratique car, grâce à quelques filtres, elles permettent d’avoir un « pré-classement » du courrier.

Ça permet aussi de voir qui a vendu votre adresse mail : imaginons, vous vous inscrivez à un service quelconque en ligne qui vous demande un mail (imaginons les3suisses), vous pouvez renseigner un mail unique et lié à ce service : tu.peux.pas.test+3suisses@gmail.com. Si un jour vous recevez du spam à cette adresse, vous saurez que les 3suisses on revendu votre mail à des tiers… Attention cependant, tous les sites/services ne supportent pas d’avoir un « + » dans l’adresse mail.

De base, Iredmail supporte ce type d’adresse, seul problème, les mails n’arrivent pas dans l’Inbox mais sont stockés automatiquement dans un dossier portant le nom indiqué après le « + ». Par exemple tu.peux.pas.test+coincoin@gmail.com sera automatiquement mis dans le dossier « coincoin » (le dossier est créé automatiquement).

On peut changer ce comportement avec des filtres : après réception d’un mail, dovecot va analyser les filtres « sieves » de la mailbox afin de savoir où le stocker.

Première chose à faire, changer les entêtes du mail que postfix va laisser pour dovecot (revoir l’image du haut si vous êtes perdus). De base il va virer ce qu’il y a après le « + » à cause de la directive :


Cet paramètre est nécessaire, mais a donc besoin qu’il laisse l’adresse entière pour le Dovecot, pour cela :


Et rajouter -a ${recipient} comme ceci :


Et un petit restart de postfix pour prendre en compte les changements :


Ensuite rendez-vous sur Roundcube > Onglet Paramètres > Filtres, et créez un nouveau filtre de la sorte : 2013-08-29-19_11_20-ROFLmail-__-Filtres

On filtre ici grâce au modificateur « enveloppe » et de type « détail » (accessibles en cliquant sur la flèche à gauche). Ici tous les mails atterriront dans la Inbox.

 

Une bonne chose de faite !

Et voilà il ne vous reste plus qu’à prendre en main Roundcube !

Dans le prochain article on parlera de l’XMPP et de l’intégration avec Iredmail, ça permettra de souffler un peu avant d’entamer la partie caldav/carddav…

11 réflexions au sujet de « A+ sous l’bus Google – Partie 2 »

  1. Joli travail de documentation.
    A terme c’est une solution similaire (c’est à dire hébergement maison) que j’adopterai.
    D’ici là, je sauvegarde précieusement votre didacticiel rédigé avec amour ^_^

  2. Je songe à l’autohébergement emails, contacts et calendriers depuis longtemps, mais j’étais loin de me douter de la complexité de la tâche.

    J’espère qu’un jour la démarche sera plus accessible au quidam tel que moi.

  3. Whaou merci,
    J’utilise Zimbra depuis quelques temps.
    J’avais installé cette solution car elle était complète et « clés en main ».
    De plus elle propose la gestion de calendrier, de contact etc etc…

    Mais bon au final, je me suis rendu compte que c’était quand même une usine à gaz.
    Bref, ca fait quelques semaines (mois en fait) que je cherche une solution simple et efficace pour installer un serveur mail avec un webmail et un calendrier…
    et je n’y suis pas parvenu.

    Je n’ai pas encore testé la solution que tu proposes içi, mais si vraiment c’est aussi simple que ce qui est écris dans le tutoriel…
    je ne comprends pas pourquoi ce genre de script n’est pas aussi connu.

    Dans tous les cas, merci pour ce bel article bien écrit.
    Et merci à SebSauvage d’avoir partagé le lien ;)

    1. Franchement iRedmail mâche vraiment tout le boulot pour la partie « serveur mail », moi non plus je ne comprends pas pourquoi ce n’est pas plus connu que ça…

  4. J’aime beaucoup l’article qui propose de se « dé-google-iser » grâce à un projet hébergé sur Google Code et qui dit  » Google est votre ami »

    1. J’aurais dit la même chose pour le google code ;-)

      Cela dit, je vais me contenter de te faire remarquer que tu as peut-être oublié de changer le lien dans « Les 3 urls à retenir », et .. Que tu aurais pu sortir ca AVANT que je finisse le miens :D

      En tout cas, intéréssant et bien foutu, merci à toi !

  5. Merci pour ce petit tuto, c’est exactement ce que je cherche. Une solution simple, fonctionnel et qui utilise dovecot (pour la simple et bonne raison que je dois garder les mails de plusieurs comptes qui fonctionne avec dovecot en maildir, donc en gros un transfert en ftp suffit.). Je suis pour l’instant sur un synology avec une solution clé en main mais c’est lent et tributaire de ma connexion.

    Un petit teasing pour le partie cal/carddav ? Tu utilise quoi ? Perso je suis sur baikal, ça fonctionne très bien mais j’ai un doute sur le transfert de la base de donnée vers un autre serveur, il faut que je me renseigne.

    1. De rien !

      Pour la partie cal/carddav c’est effectivement un Baïkal légèrement modifié que j’ai choisi.
      Pour le transfert de la base, en MySQL je pense que ça peut se faire tranquillement avec un import/export de la base.

      Je vais écrire la suite très bientôt, stay tuned ! :)

  6. Pour la partie serveur mail, il y a maintenant Opensmtpd.

    Comparé à Postfix, c’est rien que du bonheur !

    Je compte ameliorer grandement ma propre install (opensmtpd + roundcube + dovecot) avec amavis + spamassassin (et plein de plugins) + un serveur cal/carddav + xmpp.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *