<p class="spip">Ce soir-là était essentiellement consacré à un atelier présenté par moi-même sur l’installation et la configuration de Postfix.</p>

<p class="spip">Lors de cette réunion, il y avait 12 personnes : Philippe, Tony, Luc, Mircea, xxx, Gérald, Piou, Nicolas, Laurent, Benjamin, Gnunux et Yogi.</p>

<h2>2 visiteurs</h2>
<br /><li> Luc JULLIOT : Notre visiteur habituel.
<br /><li> xxx
<h2>Atelier Postfix</h2>
<h3>Pourquoi installer un serveur de Messagerie</h3>
<p class="spip">Sur un poste Linux (et plus généralement Unix), le serveur de messagerie est indispensable au bon fonctionnement du système. Il permet à de nombreux programmes d’envoyer des messages d’informations ou d’avertissements à l’administrateur de l’ordinateur.</p>

<h3>Installation de Postfix</h3>
<p class="spip">Installation :</p>

<blockquote class="spip">
<p class="spip">apt-get install postfix</p>
</blockquote>
<p class="spip">Fichier de configuration :</p>

<blockquote class="spip">
<p class="spip">/etc/postfix/main.cf</p>
</blockquote>
<p class="spip">Afficher tous les paramètres de configuration :</p>

<blockquote class="spip">
<p class="spip">postconf</p>
</blockquote>
<p class="spip">Afficher les paramètres modifiés</p>

<blockquote class="spip">
<p class="spip">postconf -n</p>
</blockquote>
<p class="spip">Deamon :</p>

<blockquote class="spip">
<p class="spip">/etc/init.d/postfix start ou stop ou restart ou reload</p>
</blockquote>
<p class="spip">Il est nécessaire de faire un reload après chaque modification du fichier de configuration.</p>

<h3>Détail du fichier de configuration /etc/postfix/main.cf</h3>
<p class="spip">Cette ligne indique le domaine géré par le serveur. Ce nom de domaine sera ajouté automatiquement à l’émetteur et aux destinataires du message si le domaine n’est pas précisé (ex : si root envoie un message à toto, se sera en fait root@mondomaine.com qui enverra un message à toto@mondomaine.com)</p>

<blockquote class="spip">
<p class="spip">myhostname = mondomaine.com</p>
</blockquote>
<p class="spip">Ces deux lignes indiquent le chemin de la table des alias à utiliser. La table des alias permet de diriger les messages envoyés à certains destinataires (ex : root) vers d’autres destinataires (ex : toto)</p>

<blockquote class="spip">
<p class="spip">alias_maps = hash :/etc/aliases
alias_database = hash :/etc/aliases</p>
</blockquote>
<p class="spip">Cette ligne indique les domaines de destination que le serveur doit prendre en compte (ex : toto@debian1 ou toto@mondomaine.com sera géré par ce serveur)</p>

<blockquote class="spip">
<p class="spip">mydestination = debian1, debian1.gray.mondomaine.com,
 localhost.gray.mondomaine.com, localhost, mondomaine.com</p>
</blockquote>
<p class="spip">Cette ligne indique le serveur SMTP auquel il faut transférer les messages non gérés par ce serveur (Serveur SMTP du fournisseur d’accès à internet)</p>

<blockquote class="spip">
<p class="spip">relayhost = 192.0.0.1</p>
</blockquote>
<p class="spip">Cette ligne indique le réseau que ce serveur prend en compte</p>

<blockquote class="spip">
<p class="spip">mynetworks = 127.0.0.0/8</p>
</blockquote>
<p class="spip">Cette ligne permet d’indiquer une taille maximum pour les messages (0=pas de limite)</p>

<blockquote class="spip">
<p class="spip">mailbox_size_limit = 0</p>
</blockquote>
<h3>Tester le fonctionnement</h3>
<p class="spip">Le plus simple est d’avoir au moins deux utilisateurs sur l’ordinateur (toto et tutu)  et de faire des tests d’envois de messages avec la commande "mail"</p>

<p class="spip">Exemple où tutu envoie un message à toto :</p>

<blockquote class="spip">
<p class="spip">tutu$ mail -s "Sujet du message" toto
Saisir le contenu du message et finir par un point
.
Cc :</p>
</blockquote>
<p class="spip">Ou en utilisant un pipe :</p>

<blockquote class="spip">
<p class="spip">cat LeMessage.txt | mail -s "Objet du message" toto</p>
</blockquote>
<p class="spip">Ensuite, sous le compte de toto, la commande mail permet de connaître les messages en attente :</p>

<blockquote class="spip">
<p class="spip">toto$ mail
toto$ mail
Mail version 8.1.2 15/12/2004.  Type ? for help.
"/var/mail/toto" : 1 message 1 unread
>U  1 tutu@mondomaine.com  Fri Jan 24 00:35   17/525</p>
</blockquote>
<p class="spip">Il faut saisir le numéro du message pour le lire et la touche q, permet de sortir.</p>

<h3>Que faire en cas de dysfonctionnement</h3>
<p class="spip">Il faut commencer par regarder les logs :</p>

<blockquote class="spip">
<p class="spip"># tail /var/log/mail.log</p>
</blockquote>
<p class="spip">Pour vérifier ce qui se passe en cas de problème, il faut envoyer un message sur un utilisateur inconnu du système (ex : test) et un autre message pour un utilisateur non géré par le serveur (test@test.test) en pensant à déconnecter le poste du réseau pour éviter que le message ne parte sur internet.</p>

<p class="spip">Dans le deuxième cas un message de ce genre apparaîtra dans les logs :</p>

<blockquote class="spip">
<p class="spip">Jan 24 00:37:15 debian1 postfix/smtp[3357] : <strong class="spip">B1E8F3059A</strong> : to=<<a href="mailto:test@test.test" class="spip_out">test@test.test</a>>,
 relay=none, delay=1, status=deferred (connect to 192.0.0.1[192.0.0.1] : Network is unreachable)</p>
</blockquote>
<p class="spip">Le code indiqué en gras indique dans quel fichier est stocké le message en attente. Voici les commandes permettant de voir le contenu de celui-ci :</p>

<blockquote class="spip">
<p class="spip"># cd /var/spool/postfix/deferred/
# find -itype f
./B/B1E8F3059A
# cat B/B1E8F3059A</p>
</blockquote>
<h3>Rediriger les mails et créer des alias avec la table aliases</h3>
<p class="spip">Cette table permet par exemple d’indiquer que les messages pour root, seront dirigés vers l’utilisateur toto.</p>

<p class="spip">Elle permet aussi de créer des aliases pour indiquer par exemple que l’utilisateur tony.galmcihe sera dirigé vers l’adresse de toto.</p>

<p class="spip">Elle permet enfin de créer des listes de diffusion pour envoyer à plusieurs personnes un message destiné à une seule :</p>

<blockquote class="spip">
<p class="spip">root :		toto 
tony.galmiche :	toto 
maliste :		toto tutu tata</p>
</blockquote>
<h3>Mise en place de la table aliases</h3>
<p class="spip">Pour transformer ce fichier texte en base de données utilisable par Postfix, il faut utiliser la commande :</p>

<blockquote class="spip">
<p class="spip">postalias /etc/aliases</p>
</blockquote>
<p class="spip">Vérifier la présence de ces deux lignes dans /etc/main.cf :</p>

<blockquote class="spip">
<p class="spip">alias_maps = hash :/etc/aliases
alias_database = hash :/etc/aliases</p>
</blockquote>
<p class="spip">Ne pas oublier de recharger Postfix pour prendre en compte les modifications :</p>

<blockquote class="spip">
<p class="spip">/etc/init.d/postfix reload</p>
</blockquote>
<h3>Réécriture des adresses avec la table canonical</h3>
<p class="spip">Si "myhostname = mondomaine.com"</p>

<p class="spip">Si /etc/canonical contient :</p>

<blockquote class="spip">
<p class="spip">toto	tony.galmiche</p>
</blockquote>
<p class="spip">Alors l’adresse toto deviendra tony.galmiche@mondomaine.com</p>

<p class="spip">Si /etc/canonical contient :</p>

<blockquote class="spip">
<p class="spip">toto	tony.galmiche@mondomaine.com</p>
</blockquote>
<p class="spip">Alors l’adresse toto deviendra tony.galmiche@mondomaine.com</p>

<p class="spip">Si /etc/canonical contient :</p>

<blockquote class="spip">
<p class="spip">@mondomaine.com	@mondomaine.com</p>
</blockquote>
<p class="spip">Toutes les adresses se terminant par @mondomaine.com seront remplacées par @mondomaine.com</p>

<p class="spip">Si /etc/canonical contient :</p>

<blockquote class="spip">
<p class="spip">@mondomaine.com	tony.galmiche</p>
</blockquote>
<p class="spip">Toutes les adresses se terminant par @mondomaine.com seront remplacées par tony.galmiche@mondomaine.com</p>

<h3>Mise en place de la table canonical</h3>
<p class="spip">Créer ou modifier le fichier "/etc/canonical" pour indiquer comment Postfix doit récrire les adresses. Exemple :</p>

<blockquote class="spip">
<p class="spip">toto 		tony.galmiche@monautredomaine.net
@mondomaine.com	@ monautredomaine.net</p>
</blockquote>
<p class="spip">Il faut créer la base de données à partir du ficher texte avec la commande :</p>

<blockquote class="spip">
<p class="spip">postmap /etc/canonical</p>
</blockquote>
<p class="spip">Il faut également modifier "/etc/postfix/main.cf" pour indiquer le chemin de la table canonical :</p>

<blockquote class="spip">
<p class="spip">sender_canonical_maps = hash :/etc/canonical</p>
</blockquote>
<p class="spip">Et ne pas oublier de recharger Postfix pour prendre en compte les modifications :</p>

<blockquote class="spip">
<p class="spip">/etc/init.d/postfix reload</p>
</blockquote>