Tux aux hermines
Accueil du site > Les Documentations > Installation d’un serveur imap et d’un webmail

Installation d’un serveur imap et d’un webmail

mardi 25 mai 2004, par Emmanuel « manproc » Prochasson

Vous avez mis en place un serveur pop local, qui va chercher régulièrement votre courrier chez vos différents prestataires avec fetchmail. Vous en avez profité pour filtrer le spam avec spamassassin et vous en étiez presque satisfait mais... lorsque vous n’êtes pas chez vous, vos mails sont inaccessible.

Nous allons donc voir comment améliorer ce système (ou le reprendre du début) pour pouvoir consulter votre courrier de n’importe où avec une interface web (webmail).

Ces opérations ont été effectué sur une debian sarge avec un noyau 2.6.2. Les logiciels utilisés sont :
- Postfix pour délivrer le courrier
- fetchmail pour aller le chercher
- procmail pour le trier
- spamassassin pour le filtrer
- uw-imapd-ssl pour le serveur imap
- sylpheed-claws pour le client mail (optionnel, pour les illustrations).
- openwebmail pour le webmail (avec un apache-ssl/php derrière, non décrit dans cette documentation).

Les gens pressés pourront passer directement au chapitre « Installation des composants ».

Pourquoi cette documentation

Beaucoup de documentation existe sur internet pour mettre en place un serveur imap, mais a peu près toutes se résume à « installez ça, ça et ça, et hop, plug-n-play, ça marche ». Hors, dans la réalité (du moins chez moi) ça marche pas du tout. L’idée donc est de dépister les petits problèmes qui font que bien que la procédure soit simplissime, ça ne fonctionne pas.

Ce ne sont donc pas les documentations trouvées sur le net qui m’ont permis de trouver les solutions aux problèmes, mais une armée de gens sympa sur #linux-nantes@ircnet (citons Hooligan0 et beny en particulier).

Pourquoi un serveur imap

Un serveur imap à l’avantage de permettre d’organiser le courrier directement sur le serveur (à l’inverse d’un serveur pop à partir duquel on télécharge les messages en bloc puis on les trie avec le client de courrier électronique, ce qui est génant si l’on souhaite avoir plusieurs points d’accès pour son courrier). Vous pouvez donc avoir une boîte à lettre consultable à distance.

Par exemple, vous consultez votre courrier de chez vous avec sylpheed (client mail léger et performant). Au travail, vous utilisez mozilla et vous souhaiteriez avoir les même courriers, pas de problème : il vous suffit de synchroniser mozilla sur votre serveur imap. Vous récupererez toute l’arborescence déjà crée (et donc l’organisation de votre boîte à lettre). Nous décrivons ici aussi la mise en place d’un webmail, qui permet, à partir de n’importe quel endroit et avec un simple navigateur de consulter votre courrier.

Installation des composants

Rien de compliqué :
- apt-get update
- apt-get install postfix fetchmail procmail uw-imapd-ssl openwebmail

La configuration de postfix n’est pas détaillé ici. On peut rapidement faire des choses simple (configuration par défaut), mais pour faire des choses compliqués, c’est compliqué.

Configuration de fetchmail

fetchmail est un outil très simple qui va à intervalle régulier chercher votre courrier sur un serveur distant (votre boite à lettre chez free) et le rapatrie sur votre boîte à lettre locale. Vous devez éditez (ou crée) le fichier /etc/fetchmailrc. La syntaxe est la suivante :

poll <serveur mail> with protocol <protocole>
  user '<login_serveur>' there with password '<mot de passe serveur>' is '<login_local>' here

Par exemple dans mon cas :

poll pop.free.fr with protocol POP3
     user 'eprochasson' there with password 'Plqsdliu' is 'manproc' here

(le mot de passe n’est pas le vrai évidemment).

Vous mettez ces lignes pour chaque utilisateur. Attention ! Le mot de passe doit-être en clair dans le fichier, il est donc indispensable qu’il soit lisible uniquement par l’utilisateur fetchmail (chown fetchmail /etc/fetchmailrc, chmod og-xrw /etc/fetchmailrc).

fetchmail va ainsi récupérer votre courrier et le stocker dans la boîte mail locale de l’utilisateur (/var/mail/[utilisateur]).

Configuration de procmail/spamassassin

Je vous renvois à la documentation sur spamassassin qui explique très clairement comment cela fonctionne.

Configuration de uw-imapd

Il n’y a à priori rien à faire, le logiciel étant « plug & play » (d’après la documentation du projet). On peut juste regarder comment ça fonctionne (et les éléments bloquant qui peuvent empecher d’avancer).
- Le serveur cherche la boîte INBOX d’un utilisateur dans /var/mail/[utilisateur], et les sous-dossier dans son HOME (/home/[utilisateur]). C’est au client de courrier électronique de dire qu’il faudrait aller chercher les sous-dossiers ailleurs (par exemple, créer un répertoire /home/[utilisateur]/Maildir et indiquer le répertoire « Maildir » au client.

PNG - 8.4 ko
Sylpheed configuration imap 1
Configuration du répertoire imap

- Si vous utilisez uw-imap-ssl (recommandé pour le webmail) il faut le dire au client, sinon ça ne marche pas (et le message d’erreur n’est pas du tout explicite).

PNG - 7.5 ko
Sylpheed configuration imap 2
Configuration SSL

- Vous pouvez ensuite créer des sous-repertoire dans celui que vous avez précisé (par exemple Maildir) dans lesquels vous pourrez mettre vos messages pour les trier. Si à partir d’un client mail quelconque, vous déplacez un message dans un répertoire, ou que vous supprimiez un message, la modification sera effectuée sur le serveur et sera donc effective sur les autres points d’accès que vous utiliserez.

Configuration d’openwebmail

Ici encore, rien de bien compliqué. Il faut veillez avoir un apache-ssl fonctionnel si vous utilisez uw-imapd-ssl. Si vous utilisez un repertoire différente de /home/[utilisateur] pour stocker les sous-repertoire, il faut le précisez a openwebmail. Dans /etc/openwebmail/openwebmail.conf.default il faut modifier la ligne :

homedirfolderdirname    <RepertoireVoulu>

en remplaçant le répertoire par « Maildir » par exemple.

openwebmail est un très bon outil qui permet de faire beaucoup plus que de consulter son courrier. Je vous invite a explorer l’interface.

Annexe : configuration iptable pour accéder à son serveur web de l’extérieur

Attention : si vous voulez consulter votre webmail de l’extérieur (ce qui est un peu le but il faut l’avouer), il faut permettre d’accéder a votre serveur web de l’extérieur, ce qui peut-être un trou de sécurité.

La règle iptable pour laisser rentrer ce qui vient vers le port http (80) est la suivante :

iptables -A BAD-LAN -p tcp --dport http -j ACCEPT

où BAD-LAN est un chemin du dehors (le ternet) vers le dedans (votre lan) par exemple :

iptables -A INPUT -i eth1 -j BAD-LAN
iptables -A FORWARD -i eth1 -j BAD-LAN

avec eth1 l’interface connectée au modem.

Si votre serveur web n’est pas directement sur le firewall, il faut rediriger le port :

(remplacez ici eth1 par l’interface connecté a internet).

P.-S.

N’hésitez pas a poser des questions dans le forum en bas de l’article.

6 Messages de forum

  • screenshot howto :) 27 mai 2004 01:00, par :bp

    comment réduire leur poid de 40K à 8K :
    - ouvrir l’image dans Gimp
    - faire un clic droit dedans puis aller dans : image > mode > indexée
    - réduire le nombre de couleur à par exemple [24] et sélectionner "pas de tramage"
    - enfin enregistrez en PNG :)

    (c vrai qu’à l’heure de l’adsl ce genre de tips n’est peut-être plus d’actualité, mais bon...)

    • > screenshot howto :) 28 mai 2004 17:01, par Emmanuel « manproc » Prochasson

      ok, c’est arrangé.

      • > screenshot howto :) 29 juin 2004 11:40

        Salut à tous ...

        Voici ma configuration actuelle :

        - Un serveur 1 mail insatall sur une machine avec Postfix et vm-pop3d

        - et un serveur 2 avec Openwabmail, je ne ve pas avoir de service web sur le serveur 1 ... mais mes utilisateur sont sur le serveur 1 ...

        Comment faire et que configure pour dire à openwebmail que les mailbox des users sont sur le serveur 1 ...

        Merci ...

  • Je voudrais configurer mon firewall de telle sorte qu’on puisse acceder de l’exterieur vers une page qui est localisee sur une machine de mon reseau local.j’ai un firewall sur une machine,un proxy sur une autre machine et derriere tout ca mon reseau local.J’ai essaye les lignes suivantes dans ipsec.sh du repertoire "/usr/local/firewall/modules" :
    iptables -A INPUT -i eth1 -p tcp —dport http -j ACCEPT
    iptables -t nat -A PREROUTING -i eth1 -p tcp —dport http -j DNAT —to-destination 192.168.5.4(adresse de la machine ou se trouve la page)
    quand je clique sur le lien de l’exterieur(http://xxx.xxx.xxx.xxx) pour me connecter sur le port 80 du firewall afin qu’il puisse le rediriger vers la bonne machine il m’affiche impossible de trouver la page.Je demande secours pour quelqu’un qui a eu deja a le faire.
    Merci d’avance.
    Mon email est :lousmane@telecelniger.com ou ousmane_ly@yahoo.fr

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0