sommaire
Messagerie
Postfix:

TBP

  • Les ellipses jaune sont des programmes de courrier.
  • Les rectangles jaune sont des files d'attentes ou des fichiers.
  • Les rectangles bleu sont des tables de consultations.
  • Les programmes inclus dans l'encadré sont sous le contrôle du démon de Postfix.
  • Les données incluses dans l'encadré sont la propriété du système de mail Postfix.

liens utiles:

http://www.postfix.org (vo)
http://x.guimard.free.fr/postfix (vf)
http://www.linux-france.org/article/mail/postfix-jaco/

Installation:

apt-get install postfix

Configuration:

Le fichier principal de configuration est : /etc/postfix/main.cf
Le fichier /etc/postfix/master.cf fait la correspondance entre les binaires et les ellipses jaunes

La variable myhostname (ligne 68) doit etre le FQDN de la machine (voir DNS & Bind)
donc:

myhostname = thebible.linuxfred.lan

Ceci va permettre le refus de mail si l'IP de la machine est différente de celle obtenue par resolution du FQDN (la machine qui envoie est bien la bonne).

La variable mydomain est le nom de domaine de rattachment de la machine du myhostname

mydomain = linuxfred.lan

On peut aussi changer la valeur de myorigin (par défaut sur myhostname pour les petits domaines) en mydomain

Le paramètre inet_interfaces indique toutes les adresses d'interface réseau sur lesquelles le système Postfix doit écouter.

inet_interfaces = $myhostname, localhost

Le paramètre mydestination indique les domaines pour lesquels cette machine délivrera le courrier localement, au lieu de le transmettre à une autre machine. La valeur par défaut est de recevoir le courrier à destination de la machine elle-même.
Pour gerer un domaine entier:

mydestination = $myhostname, localhost.$mydomain, $mydomain


Le paramètre de mynetworks contient tous les réseaux auxquels cette machine fait confiance. Alternativement vous pouvez renseigner la liste de mynetworks à la main, dans ce cas Postfix ignore le paramètre mynetworks_style. Pour indiquer la liste de réseaux de confiance à la main, indiquez les blocs de réseau dans la notation de CIDR (réseau/masque), par exemple:
mynetworks = 168.100.189.0/28, 127.0.0.0/8

Les domaines autorisés sont définis par le paramètre relay_domains. La valeur par défaut autorise les machines rattachées aux domaines énumérés dans mydestination. Ceci permettrais de relayer le courrier d'un autre serveur d'un autre domaine pour le cas ou ce serveur tombe en panne, même si l'on est en antirelays.

Le paramètre relayhost contient le nom du serveur smtp de votre fournisseur d'acces internet ou alors le nom de la mahcine qui fait office de serveur smtp.

relayhost = smtp.wanadoo.fr

Alias:
Les alias permette de faire la correspondance entre les nom des boites aux lettres et les utilisateurs systèmes
Cette ligne permet ensuite de configurer les alias:

alias_maps = hash:/etc/postfix/aliases

hash indique que nous allons créer un fichier aliases.db

on va donc modifier le fichier /etc/postfix/aliases de la manière suivante:
en fin de fichier on redirige root vers le simple utilisateur qui gère le système.

Attention il faut d'abord commenter la ligne:
# root:         postfix

sinon les mails pour root ne seront pas recu par "fred"

root:   fred
frederic.m:     fred
fmr:     fred
root:   admin,fred

Pour générer le fichier aliases.db : postalias aliases
puis postfix reload

Ne jamais modifier les alias d'origines sauf celui de root vers un compte simple utilisateur.

Un alias peut se faire avec un compte utilisateur, un autre alias, une adresse email.


Le lieu de stockage des mails se définit avec :
#home_mailbox = Mailbox

Par défaut : /var/spool/mail/user or /var/mail/user

mail_spool_directory = /var/spool/mail

Le format de boîte mail : mbox (1 seul fichier contient tout les mails) ou maildir (1 mail = 1 fichier) dépend du "/" présent ou pas dans mail_spool_directory ou home_mailbox
=> un mail_spool_directory avec /var/spool/mail/ sera au format maildir

Le programme qui s'occupe optionnellement des mails : procmail
mailbox_command = /usr/bin/procmail  avec des options à voir dans le man de procmail

On peut aussi utiliser un autre logiciel de gestion de la file d'attente de mails en le precisant dans :

mailq_path = /usr/bin/mailq.postfix



Transport:


Dans le main.cf :
section : TRANSPORT MAP y mettre

transport_maps = hash:/etc/postfix/transport

Avec le fichier /etc/postfix/transport
La table transport doit contenir ce qu'il y a dans mydestination
donc cela donne:

thebible.linuxfred.lan        local:
localhost.linuxfred.lan      local:
linuxfred.lan                      local:

Onpeut aussi gerer les sous domaine avec
.linuxfred.lan    local:

Ne jamais oublier le trasnport local

Une fois la table tranposrt terminé:

postmap tranport
postfix reload


Virtual:

Avec le fichier /etc/postfix/virtual

Table optionnelle.
Elle permet de faire de la redirection
exemple:
@thebible.com                   fred

tous les messages à destination de @thebible.com iront à fred

la syntaxe:

virtual.domain       anything
postmaster@virtual.domain    postmaster
user1@virtual.domain address1
user2@virtual.domain address2, address3

On peut donc faire de multiple redirections:
exemple:
@thebible.com    fred
@vieuxbouc.com    @thebible.com

echo "message pour le domaine @vieuxbouc.com" | mail -s "super le redirection" lol@vieuxbouc.com
envoie un mail à fred


On cree ensuite la ligne suivante dans le main.cf

dans la section: ADDRESS REDIRECTION (VIRTUAL DOMAIN) y mettre

virtual_maps=hash:/etc/postfix/virtual

Actualisation de la configration:

postmap virtual
postfix reload


Canonical:

Va permettre de réécrire les enveloppes
Les données de la table canonical sont prioritaire devant la table virtual

syntaxe:

user@domain    adresse1
user                    adresse2
@domain2        @domain3
@domain4        adresse3

exemple:

fred@thebible.linuxfred.lan     frederic.m@free.fr
fred@linuxfred.lan              frederic.m@free.fr

Dans la section: ADDRESS REWRITING y mettre

canonical_maps = hash:/etc/canonical   (cela réécrit émetteur + destinataire )

recipient_canonical_maps réécrit le destinataire
sender_canonical_maps    réécrit l'emetteur

Actualisation de la configration:

postmap canonical
potsfix reload


Grace à cette table plus besoin d'avoir un vrai domaine pour se servir du relay_host et donc ce message n'apparait plus.
Maintenant même les messages interne sont réécris et on ne voit plus le domaine linuxfred.lan


Demarrage et tests:

Le service se demarre avec :

service postfix start



le fichier de log se trouve dans /var/log/maillog (ou alors /var/log/mail/errors , info et warnings)

Un message du style :
thebible postfix/postfix-script: warning: /var/spool/postfix/etc/resolv.conf and /etc/resolv.conf differ indique que le DHCP à modifier le fichier /etc/resolv.conf

un petit test rapide:

avec l'utilisateur fred:
echo "message pour root" | mail -s "sujet du message" root@linuxfred.lan

avec mutt (client mail) fred recoit ce message addressé à root grace aux alias.

Attention
pour que le mail puisse etre envoyé il faut que le nom de domaine de l'expediteur soit valide sinon on reçoit un message du style:

From MAILER-DAEMON  Sat Sep  6 15:08:09 2003
Return-Path: <>
Delivered-To: fred@thebible.linuxfred.lan
Received: by thebible.linuxfred.lan (Postfix)
id 60CC0B79AE; Sat, 6 Sep 2003 15:08:09 +0200 (CEST)
Date: Sat, 6 Sep 2003 15:08:09 +0200 (CEST)
From: MAILER-DAEMON@thebible.linuxfred.lan (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: fred@thebible.linuxfred.lan
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="D06DDB79AD.1062853689/thebible.linuxfred.lan"
Message-Id: <20030906130809.60CC0B79AE@thebible.linuxfred.lan>
Status: RO
Content-Length: 1636
Lines: 49

This is a MIME-encapsulated message.

--D06DDB79AD.1062853689/thebible.linuxfred.lan
Content-Description: Notification
Content-Type: text/plain

This is the Postfix program at host thebible.linuxfred.lan.

I'm sorry to have to inform you that the message returned
below could not be delivered to one or more destinations.


For further assistance, please send mail to <postmaster>

If you do so, please include this problem report. You can
delete your own text from the message returned below.

The Postfix program

<frederic.m@free.fr>: host smtp.wanadoo.fr[193.252.22.81] said: 553
<fred@thebible.linuxfred.lan>: Sender address rejected: Domain not found

--D06DDB79AD.1062853689/thebible.linuxfred.lan
Content-Description: Delivery error report
Content-Type: message/delivery-status

Reporting-MTA: dns; thebible.linuxfred.lan
Arrival-Date: Sat, 6 Sep 2003 15:08:05 +0200 (CEST)

Final-Recipient: rfc822; frederic.m@free.fr
Action: failed
Status: 5.0.0
Diagnostic-Code: X-Postfix; host smtp.wanadoo.fr[193.252.22.81] said: 553
<fred@thebible.linuxfred.lan>: Sender address rejected: Domain not found

--D06DDB79AD.1062853689/thebible.linuxfred.lan
Content-Description: Undelivered Message
Content-Type: message/rfc822

Received: by thebible.linuxfred.lan (Postfix, from userid 501)
id D06DDB79AD; Sat, 6 Sep 2003 15:08:05 +0200 (CEST)
To: frederic.m@free.fr
Subject: super sujet
Message-Id: <20030906130805.D06DDB79AD@thebible.linuxfred.lan>
Date: Sat, 6 Sep 2003 15:08:05 +0200 (CEST)
From: fred@thebible.linuxfred.lan

mesage de fred postfix


Commandes Utiles:

echo "le coprs du message" | mail -s "le sujet" addresse_email

mailq: permet de voir la file d'attente
sendmail -q : vide la file d'attente

postalias aliases : régénère les alias
postmap transport : régénère la table transport
postfix reload : recharge la configuration de postfix
postconf -n : montre la configuration