Linboost.org

Les Tutoriaux de Linboost.org

Configuration d'un serveur de Mail Privé (Partie 1)
Dans ce Tuto, je vais vous expliquer de facon claire et pas trop compliqué comment mettre en place :

1. Un Serveur de recupération de Mails (Fetchmail)
2. Un Serveur qui filtre et Distribue les mails(Procmail)
3. Un Serveur POP-IMAP(Courier)
4. Un Serveur SMTP (Postfix)
5. Un Webmail pour acceder aux mails par le Web (Squirrelmail)

Tout ces logiciels sont des logiciels libres!
Pour une question de facilité, je partirai du principe que vous avez installé Webmin, qui est une interface de configuration tres utile et simple d'utilisation. Si vous ne l'avez pas , vous pouvez le trouver dans les packages de votre Distribution ou sur www.webmin.com .


1) & 2) Serveur de recupération de Mails (Fetchmail) & Serveur qui filtre et Distribue les mails(Procmail)

Nom des paquetages fetchmail sous Mandrake 10.0 : fetchmail-6.2.5-3mdk & fetchmailconf-6.2.5-3mdk & fetchmail-daemon-6.2.5-3mdk
Nom des paquetages Procmail sous Mandrake 10.0 : procmail-3.22-4mdk

Lancez Webmin (https://localhost:10000 ou https://adressipserveur:10000), allez dans l'onglet servers, cliquez que l'icone de Fetchmail, allez dans le configuration du module (Module Config) , la vous aurez plusieurs options :

- Fetchmail config file to edit : cochez All users' .fetchmailrc files , tous les utilisateurs auront un fichier de configuration
- User to run the fetchmail daemon as : root
- Mail delivery command : ici entrez le chemin vers procmail meme si il n'est pas encore installé (souvent : /usr/bin/procmail), c'est procmail qui va s'occuper de la distribution des mails etr non le smtp , vous allez voir que c'est utile.
- Path to the fetchmail program : fetchmail (normalement par defaut)
- Path to the fetchmail daemon PID file : /var/run/fetchmail.pid (normalement par defaut)
- Command to start fetchmail daemon : cochez Just run fetchmail (normalement par defaut)
- Command to stop fetchmail daemon : cochez Just run fetchmail -q (normalement par defaut)

Voila vous pouvez Sauver.

Nous allons maintenant passer a Procmail , pour faire fonctionner Fetchmail. Toujours via Webmin cliquez sur l'icone de Procmail Mail Filter.

Dans le Module Config , il n'y a que deux options qui sont normalement bonnes par default :

- Show contents of include files?(If no variables are used in filenames) : No
- Path to system procmailrc file : /etc/procmailrc

une fois dans la configuration de Procmail, cliquez sur Manually edit configuration , nous allons le configurer à la main , il n'y a pas grand chose :

VERBOSE=no : Nous n'avons pas besoin des informations de diagnostic
SHELL=/bin/sh : Chemin pour le Shell
PATH=/bin:/usr/bin:/usr/local/bin:/home/$LOGNAME/bin : les différents PATH nécessaires
MAILDIR=$HOME/Maildir : le chemin vers le Maildir de l'utilisateur ( nous décidons de le mettre dans le hom de l'utilisateur)
LOGFILE=$MAILDIR/.procmail.log : le chemin vers le fichier des logs (il se trouvera dans le dossier Maildir de l'utilisateur)
DEFAULT=$HOME/Maildir/ : le chemin par default

Options suplémentaires :

Certain d'entre vous aurons surement recu avec leur connexion internet une seul boite mail chez leur provider avec plusieurs alias,et donc quand vous allez chercher vos mails, vous vous retrouvez avec les mails de tout vos alias, procmail peut filtrer cela pour que ces mails soit distribuer a la bonne personne, je vous montre ici un exemple avec mon provider Skynet. Considerons 2 utilisateurs sur le meme compte , sebastien et cindy qui ont donc chacun une adresse : [email protected] & [email protected], chacun d'eux possedent également un compte Linux (ici le compte de sebastien sera Seb et le compte de cindy sera cindy), nous allons donc dire a procmail de séparer ces mails pour les distribuer a la bonne personne :

:0
* ^TO.*[email protected]
! seb

:0
* ^TO.*[email protected]
! cindy

il se pose encore un probleme, les adresses email n'étant pas sensible à la casse mais les régles de procmail oui, si quelqu'un envoye un mail à [email protected] au lieu de [email protected], procmail va le distribuer au compte principale qui n'est peut etre pas le bon. On peut regler ce probleme de la façon suivante :

:0
* ^TO.*(sebastien|Sebastien)@skynet.be
! seb

:0
* ^TO.*(cindy|Cindy)@skynet.be
! cindy

Et Maintenant si sebastien s'est inscrit a une mailing list , ou iront les mails ? et bien ils iront de nouveau à l'utilisateur principal du compte et donc il faut rajouter une regle pour ca aussi. ici je prend un exemple simple, sebastien s'est inscrit a la mailing list [email protected] et veut recevoir ses mails sur le compte linux seb :

:0:
* ^(From|Cc|To).*[email protected]
! seb

Notez que l'ont a testé le champ From, Cc et To car avec les mailing list, on ne sait jamais ou on va retrouver son adresse :)

Voila vous pouvez sauver votre configuration et retourner dans la configuration de Fetchmail. Dans la configuration de Fetchmail il vous suffit d'associer des comptes pop a vos comptes Linux. (pour ajouter un utilisateur sous Linux, utilisez les commandes adduser et passwd :
adduser seb
passwd seb )

une fois que vos comptes sont créés il ne vous reste plus qu'a cliquer sur Check all servers pour chaque utilisateur pour voir si ca fonctionne.
C'est bien beau tout ca mais si on doit chaque fois aller cliquer sur Check all servers pour chaque utilisateur, y en a qui risque d'être pas content :p
Donc il faut automatiser tout ca , pour cela allez dans une console et vous devez lancer fetchmail en demon pour chaque utilisateur , un exemple pour l'utilisateur seb :

su seb
fetchmail -d 300 -f '/home/seb/.fetchmailrc' -m '/usr/bin/procmail'

-d : démarrer en démon toutes les n secondes (ici on a mis 300 secondes, ca correspond donc a 5 minutes)
-f : spécifier un fichier de contrôle
-m : spécifier le MDA à utiliser pour la réexpédition (Ici Procmail :) )

vous devez le faire pour chaque utilisateur qui a un compte mail dans fetchmail en changeant biensur le chemin du fichier de contrôle (/home/login/.fetchmailrc)
Tout ca c'est bien beau et maintenant les utilisateurs récuperent comment leurs mails? :) Grâce a Courier.

3) Serveur POP-IMAP(Courier)

Nom des paquetages sous Mandrake 10.0 : courier-imap-2.1.2-2mdk & courier-imap-pop-2.1.2-2mdk
Ici a part l'installation , il n'y a rien a faire, juste lancer les serveurs :
/usr/lib/courier/pop3d.rc start
/usr/lib/courier/imapd.rc start

Les utilisateurs peuvent désormais accéder à leurs mails via leur client mail préféré soit via le protocole pop3 soit via imap :)

4) & 5) Webmail pour acceder aux mails par le Web (Squirrelmail) & Serveur SMTP (Postfix)

Nom des paquetages sous Mandrake 10.0 : squirrelmail-1.4.2-11mdk

La premiere chose a faire pour ceux qui n'ont pas les paquetages est de télécharger Squirrelmail : www.squirrelmail.org
Squirrelmail est un Webmail et donc la premiere chose avant de l'installer est d'etre sur d'avoir :

- Apache
- PHP4
- mod_php pour apache
- Perl

Installez Squirrelmail dans /var/www/html (automatique sous Mandrake), vous pouvez le mettre ailleur si vous voulez mais configurez apache en conséquence :)
Personnelement j'ai fais un virtual hosts dans apache pour que les utilisateurs arrivent directement sur le webmail en tapant le nom de domaine pour cela aller dans /etc/httpd/conf/vhosts/Vhosts.conf (Pour Mandrake, modifiez en fonction de votre installation de apache)
Dans ce fichier rajoutez :



relancez apache avec la commande : /etc/init.d/httpd restart
Pour plus d'info sur le Virtual host dans Apache , allez voir le tuto que j'ai fais sur Apache 2.
Normalement maintenant votre Webmail est accessible via le web et vos utilisateurs peuvent se logguer et voir leurs mails qui ne sont pas encore pris par leur client mail biensur! (la configuration de Squirrelmail se fait grâce a la commande : perl /var/www/html/squirrelmail/config/conf.pl) Un probleme se pose , vos utilisateurs ne peuvent pas envoyé de mails :( normal on a pas de serveur SMTP !

Installez Postfix.
Nom des paquetages sous Mandrake 10.0 : postfix-2.1.1-0.1.100mdk & libpostfix1-2.1.1-0.1.100mdk

Une fois Postfix installé, je vous donne mon fichier de configuration, il y a tellement d'option que tout expliquer me prendrait une journée et vous en auriez vite marre :) (et moi aussi!) , que cela ne vous empeche pas de lire le fichier en essayant de comprendre les options :p
http://sebastien.linboost.org/postfix/main.cf
il vous suffit juste de modifier l'avant derniere ligne du fichier en y indiquant quel est l'adresse du serveur smtp de votre provider et les lignes :
mydomain = domaine.ext
myhostname = votrehostname
ensuite tapez la commande : postfix reload (si postfix n'est pas lancé, faite un postfix start)
un probleme se pose, quand un de vos utilisateurs enverra un mail , l'adresse from sera du type [email protected] ce qui n'est pas une adresse correcte , premierement les gens ne pourront pas y repondre et deuxiement si le serveur SMTP de votre provider a été intelligement configuré , il refusera le mail.
il faut alors faire une correspondance des noms dans postfix , editez le fichier /etc/postfix/canonical , dans ce fichier vous devez rajouter des lignes de type :

[email protected] [email protected]

exemple pour mon compte seb :

[email protected] [email protected]

faite ca avec toutes les adresses mails de vos utilisateurs et ensuite creer la Db a partir de ce fichier en faisant :
postmap /etc/postfix/canonical
cela vous creera un fichier /etc/postfix/canonical.db
reloader ensuite la config de postfix avec la commande postfix reload

Voila tout devrait maintenant fonctionner :)
Si vous avez des questions ou des problemes n'hésitez pas à les poser sur forum.linboost.org, j'essayerai d'y répondre.
Amicalement Seb

Valid HTML 4.01! Valid CSS!

Apache Mysql PhpMyAdmin Linux

Copyright © 2004 by Linboost.org. All Rights Reserved, All the comments and Marks are property of their authors.