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