Dernière mise-à-jour :

108.3 - Bases des Mail Transfer Agent (MTA)(3/60)

Présentation

La messagerie utilise les protocols suivants :

SMTP (Simple Message Transfer Protocol),

POP (Post Office Protocol),

IMAP (Internet Message Access Protocol).

Lors de l'utilisation du protocol, c'est l'expéditeur qui initie le transfert tandis qu'avec les protocols POP et IMAP c'est le destinataire qui initie la collecte.

Un serveur SMTP est aussi appelé un MTA (Mail Transfer Agent) tandis que les serveurs POP et IMAP sont souvents appelés des Pull Mail Servers. Enfin les clients de messagerie sont des MUA (Mail User Agent).

Dans un système Linux, le mail est stocké pour chaque utilisateur soit dans le répertoire /var/spool/mail, soit dans un répertoire dans le répertoire personnel de chaque utilisateur.

Les quatre MTA les plus utilisés sous Linux sont :

Sendmail,

Postfix,

Exim,

Qmail.

Postfix est considéré d'être un des MTA le plus facilement configuré par 250 directives. Ses fichiers sont facilement lisibles par l'être humain ce qui n'est pas le cas de sendmail.

Les deux Pull Mail Servers les plus utilisés sous Linux sont :

Cyrus IMAP,

Dovecot,

Fetchmail.

Fetchmail remplit un rôle spécifique et n'est utilisé que quand le serveur n'est pas connecté en permanance à Internet.

Les quatre MUA les plus utilisés sous Linux sont :

http://projects.gnome.org/evolution/Evolution,

KMail,

Thnderbird,

mutt.

Deux utilitaires simples permettent la lecture des spools de mail locaux en ligne de commande aussi bien que l'envoie des messages :

mail,

nail.

La commande nail diffère de la commande mail par le fait qu'elle peut gérer des fichiers attachés.

La commande mail est souvent un lien symbolique ver la commande mailx :

[root@centos6 ~]# ls -l /bin/mail
lrwxrwxrwx. 1 root root 5 Oct 25 2013 /bin/mail -> mailx

Les options de la commande mailx sont :

[root@centos6 ~]# mailx --help
mail: illegal option -- -
Usage: mail -eiIUdEFntBDNHRV~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users

La syntaxe de la commande mailx dans le cas d'un envoie est :

mailx [-­s objet ] [-­c ccadresse ] [-­b bcc­adresse ] adresse_destinataire

Lors de la lecture du spool de mail local, la syntaxe est la suivante :

mailx [­-f [ spool de mail local ] | ­-u nom_utilisateur ]

Par exemple :

[root@centos6 ~]# mail -s "test message" -c trainee root
This is a test message
[^D]
EOT

[root@centos6 ~]# su - trainee
[trainee@centos6 ~]$ mail
Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/trainee": 2 messages 2 new
>N 1 root Thu Nov 5 11:50 19/655 "[example] message"
N 2 root Thu Nov 5 11:50 19/657 "test message"
& 2
Message 2:
From root@centos6.fenestros.loc Thu Nov 5 11:50:57 2015
Return-Path: <root@centos6.fenestros.loc>
X-Original-To: trainee
Delivered-To: trainee@centos6.fenestros.loc
Date: Thu, 05 Nov 2015 11:50:57 +0100
To: root@centos6.fenestros.loc
Subject: test message
Cc: trainee@centos6.fenestros.loc
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: root@centos6.fenestros.loc (root)
Status: R
This is a test message
& q
Held 2 messages in /var/spool/mail/trainee

Il est aussi possible d'injecter le contenu d'un fichier sur l'entrée standard de la commande mailx afin de l'utiliser comme le contenu du message :

[trainee@centos6 ~]$ echo fenestros > mail.txt
[trainee@centos6 ~]$ mail -s "test message back" < mail.txt root
[trainee@centos6 ~]$ su -
Password: fenestros
[root@centos6 ~]# mail
Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/root": 2 messages 2 unread
>U 1 root Thu Nov 5 11:50 20/661 "test message"
U 2 trainee Thu Nov 5 11:55 19/633 "test message back"
&

Configuration de votre Machine Virtuelle

Commencez par installer une machine virtuelle vierge de CentOS 6.

Modification du Fichier /etc/hosts

Comme vous allez utiliser le nom de domaine mail.linuxelearning.info pour votre serveur postfix, modifiez votre fichier /etc/hosts ainsi :

[root@centos6 ~]# vi /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.2.15 mail.linuxelearning.info

Modification du Fichier /etc/sysconfig/network

[root@centos6 ~]# vi /etc/sysconfig/network

NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=mail.linuxelearning.info

Modification du Fichier /etc/sysconfig/network-scripts/ifcfg-eth0

[root@centos6 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

HWADDR="08:00:27:9B:55:B1" UUID="8de9b113-7c02-42c1-b447-5a860cf431fe" DEVICE="eth0" NM_CONTROLLED="no" ONBOOT=yes TYPE=Ethernet BOOTPROTO=static IPV6INIT=no NETMASK=255.255.255.0 IPADDR=10.0.2.15 GATEWAY=10.0.2.2 USERCTL=yes

N'oubliez pas de modifier les valeurs des directives HWADDR et UUID en fonction de votre configuration.

Tuez votre session graphique et reconnectez-vous.

Modification des Services

[root@mail ~]# service NetworkManager stop
[root@mail ~]# service network start
[root@mail ~]# service iptables stop
[root@mail ~]# chkconfig --del NetworkManager
[root@mail ~]# chkconfig --del iptables

Modification de SELinux

[root@mail ~]# setenforce permissive
[root@mail ~]# vi /etc/selinux/config

# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted

Modification du fichier /etc/resolv.conf

[root@mail ~]# vi /etc/resolv.conf

nameserver 8.8.8.8 nameserver 8.8.4.4

Changez les adresses IP des nameservers selon votre installation.

LAB #1 - Installation de postfix

Pour installer le serveur de messagerie postfix utilisez yum. Choisissez le MDA (Mail Delivery Agent) Dovecot ou Cyrus-Imapd :

[root@mail ~]# yum install postfix procmail cyrus-imapd
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* atomic: atomic.mirror.uber.com.au
* base: centos.mirror.crcrepairs.com
* epel: ftp.fau.de
* extras: centos.mirror.crcrepairs.com
* rpmforge: apt.sw.be
* updates: centos.crazyfrogs.org
ox-backend | 1.3 kB 00:00
ox-frontend | 1.3 kB 00:00
ox-usm | 1.2 kB 00:00
Setting up Install Process
Package 2:postfix-2.6.6-6.el6_5.i686 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package cyrus-imapd.i686 0:2.3.16-6.el6_2.5 will be installed
--> Processing Dependency: cyrus-imapd-utils = 2.3.16-6.el6_2.5 for package: cyrus-imapd-2.3.16-6.el6_2.5.i686
---> Package procmail.i686 0:3.22-25.1.el6 will be installed
--> Running transaction check
---> Package cyrus-imapd-utils.i686 0:2.3.16-6.el6_2.5 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================================================================================
Package Arch Version Repository Size
========================================================================================================================================================================
Installing:
cyrus-imapd i686 2.3.16-6.el6_2.5 base 11 M
procmail i686 3.22-25.1.el6 base 159 k
Installing for dependencies:
cyrus-imapd-utils i686 2.3.16-6.el6_2.5 base 255 k
Transaction Summary
========================================================================================================================================================================
Install 3 Package(s)
Total download size: 12 M
Installed size: 43 M
Is this ok [y/N]:

LAB #2 - Configuration de Base

Le fichier /etc/postfix/main.cf

Utilisez les commandes suivantes pour voir les directives actives dans le fichiers /etc/postfix/main.cf :

[root@mail ~]# cd /tmp ; grep -E -v '^(#|$)' /etc/postfix/main.cf > main.cf
[root@mail tmp]# cat main.cf

A l'installation de postfix, le fichier principal de configuration main.cf comporte les directives actives suivantes :

queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix inet_interfaces = localhost inet_protocols = all mydestination = $myhostname, localhost.$mydomain, localhost unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.6.6/samples readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES

Ce fichier comporte des directives au formats suivants :

paramètre = valeur

autre_paramètre = $paramètre

Copiez votre fichier main.cf en main.old

[root@mail tmp]# cd ~
[root@mail ~]# cp /etc/postfix/main.cf /etc/postfix/main.old

Modifiez main.cf ainsi :

myhostname = mail.linuxelearning.info mydomain= linuxelearning.info myorigin = $mydomain mynetworks = 10.0.2.0/24, 127.0.0.0/8 mail_spool_directory = /var/spool/mail mailbox_command = /usr/bin/procmail -Y -a $DOMAIN smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) delay_warning_time = 4h recipient_delimiter = + owner_request_special = no relayhost = smtp.bbox.fr mail_owner = postfix inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain #unknown_local_recipient_reject_code = 550 unknown_local_recipient_reject_code = 450 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.6.6/samples readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix

Les directives dans l'exemple ci-dessus sont :

Directive	Description
myhostname	Le nom de machine Internet de ce système de messagerie.
mydomain	Le nom de domaine Internet du système de messagerie.
myorigin	Le domaine par défaut utilisé pour les messages postés localement.
mynetworks	La liste des clients SMTP “internes” qui ont plus de privilèges que les “étrangers”.
mail_spool_directory	Le répertoire où les boîtes-aux-lettres locales sont stockées.
mailbox_command	Commande externe optionnelle que l'agent de livraison local doit utiliser pour la livraison des messages.
smtpd_banner	Texte qui suit le code de statut 220 dans la bannière d'accueil.
delay_warning_time	Temps au delà duquel l'expéditeur reçoit les en-têtes d'un message toujours en file d'attente.
recipient_delimiter	Le délimiteur système de l'extension de adresse de destination.
owner_request_special	Applique un traitement particulier aux parties locales des adresses de listes de propriétaires ou de requêtes.
relayhost	La machine par défaut où livrer le courrier extérieur.
mail_owner	Le compte du système qui possède la file d'attente et la plupart des processus démons de Postfix.
inet_interfaces	Les adresses réseau par lesquelles le système de messagerie reçoit les messages.
mydestination	Liste des domaines livrés par le transporteur de messages.
unknown_local_recipient_reject_code	Code numérique de réponse du serveur SMTP de Postfix lorsque le destinataire n'est pas trouvé.
alias_maps	La base de données des alias utilisée pour la livraison locale.
alias_database	La base de données des alias pour la livraison locale.
debugger_command	La commande externe à exécuter lorsqu'un programme démon de Postfix est invoké avec l'option -D.
sendmail_path	Indique l'emplacement de la commande sendmail de Postfix.
newaliases_path	Indique l'emplacement de la commande newaliases.
mailq_path	Indique où est installée la commande Postfix mailq. Cette commande peut être utilisée pour afficher la file d'attente.
setgid_group	Le groupe propriétaire des commandes set-gid de Postfix et des répertoires en écriture pour le groupe.
manpage_directory	Emplacement des pages de manuel de Postfix.
sample_directory	Emplacement des exemples de fichiers de configuration de Postfix.
readme_directory	Emplacement des fichiers README de Postfix.
queue_directory	Emplacement du répertoire racine de la file d'attente de Postfix.
command_directory	Emplacement des commandes administratives de Postfix.
daemon_directory	Emplacement des démons Postfix.

Pour plus d'informations concernant les directives, consultez cette page.

La directive relayhost = smtp.bbox.fr n'est necéssaire que pour contourner le blocage du port 25 du FAI utilisé pour éloborer ce cours. Elle n'est pas neceéssaire dans un environnement de production.

Les options les plus importantes de la commande sendmail de postfix sont :

-Am (ignored)
-Ac (ignored)
Postfix sendmail uses the same configuration file regardless of
whether or not a message is an initial submission.
-B body_type
The message body MIME type: 7BIT or 8BITMIME.
-bd Go into daemon mode. This mode of operation is implemented by
executing the "postfix start" command.
-bh (ignored)
-bH (ignored)
Postfix has no persistent host status database.
-bi Initialize alias database. See the newaliases command above.
-bm Read mail from standard input and arrange for delivery. This is
the default mode of operation.
-bp List the mail queue. See the mailq command above.
-bs Stand-alone SMTP server mode. Read SMTP commands from standard
input, and write responses to standard output. In stand-alone
SMTP server mode, mail relaying and other access controls are
disabled by default. To enable them, run the process as the
mail_owner user.
This mode of operation is implemented by running the smtpd(8)
daemon.
-bv Do not collect or deliver a message. Instead, send an email
report after verifying each recipient address. This is useful
for testing address rewriting and routing configurations.
This feature is available in Postfix version 2.1 and later.

Testez votre fichier de configuration avec la commande postfix :

[root@mail ~]# postfix check
[root@mail ~]#

Consultez le manuel de la commande postfix pour connaître ses options et ses arguments.

Modifiez maintenant les droits sur le répertoire /var/spool/mail:

[root@mail ~]# chmod 1777 /var/spool/mail

Le service postfix est activé dans les niveaux d'exécution 2,3,4 et 5 :

[root@mail ~]# chkconfig --list postfix
postfix	0:arrêt	1:arrêt	2:marche	3:marche	4:marche	5:marche	6:arrêt

Re-démarrez le serveur postfix :

[root@mail ~]# service postfix restart
Arrêt de postfix : [ OK ]
Démarrage de postfix : [ OK ]

Installez maintenant telnet :

[root@centos6 ~]# yum install telnet
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* atomic: atomic.mirror.uber.com.au
* base: centos.mirror.crcrepairs.com
* epel: ftp.fau.de
* extras: centos.mirror.crcrepairs.com
* rpmforge: apt.sw.be
* updates: centos.crazyfrogs.org
ox-backend | 1.3 kB 00:00
ox-frontend | 1.3 kB 00:00
ox-usm | 1.2 kB 00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package telnet.i686 1:0.17-47.el6_3.1 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================================================================================
Package Arch Version Repository Size
========================================================================================================================================================================
Installing:
telnet i686 1:0.17-47.el6_3.1 base 57 k
Transaction Summary
========================================================================================================================================================================
Install 1 Package(s)
Total download size: 57 k
Installed size: 102 k
Is this ok [y/N]:

Testez maintenant le serveur smtp de postfix en envoyant un message de root à trainee :

[root@centos6 ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.linuxelearning.info ESMTP Postfix (2.6.6)
HELO me
250 mail.linuxelearning.info
MAIL from: root@linuxelearning.info
250 2.1.0 Ok
RCPT to: trainee@linuxelearning.info
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject : Test email
Ceci est un test
.
250 2.0.0 Ok: queued as 7CADC451CA
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

Notez :

le code 220 qui indique sue le serveur attend des instructions,

le déroulement de la conversation :

HELO me sert à vous identifier,

MAIL from: root@linuxelearning.info indique l'expéditeur,

RCPT to: trainee@linuxelearning.info indique le destinataire,

DATA indique que ce qui suit est le message,

le code 250 qui indique que la commande s'est bien déroulée.

le point sur une ligne vide indique la fin de la section DATA.

Passez en revue la totalité des liens ci-dessus. Lisez chaque article/page attentivement.

Consultez maintenant le fichier /var/log/maillog. Vous devez constater que votre message a été livré à trainee :

[root@centos6 ~]# tail /var/log/maillog
Apr 29 15:35:13 centos postfix/master[11705]: terminating on signal 15
Apr 29 15:35:14 centos postfix/postfix-script[11800]: starting the Postfix mail system
Apr 29 15:35:14 centos postfix/master[11801]: daemon started -- version 2.6.6, configuration /etc/postfix
Apr 29 15:35:16 centos postfix/smtpd[11807]: connect from localhost[127.0.0.1]
Apr 29 15:35:52 centos postfix/smtpd[11807]: AE2C81369: client=localhost[127.0.0.1]
Apr 29 15:36:26 centos postfix/cleanup[11810]: AE2C81369: message-id=<20140429133552.AE2C81369@mail.linuxelearning.info>
Apr 29 15:36:26 centos postfix/qmgr[11804]: AE2C81369: from=<root@linuxelearning.info>, size=396, nrcpt=1 (queue active)
Apr 29 15:36:26 centos postfix/local[11812]: AE2C81369: to=<trainee@linuxelearning.info>, relay=local, delay=45, delays=45/0.07/0/0.01, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -Y -a $DOMAIN)
Apr 29 15:36:26 centos postfix/qmgr[11804]: AE2C81369: removed
Apr 29 15:36:34 centos postfix/smtpd[11807]: disconnect from localhost[127.0.0.1]

LAB #3 - Testez le serveur SMTP sortant

Envoyez un message en utilisant telnet à hugh.norris@hugh-norris.info avec comme Subject: votre prénom :

[root@mail ~]# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.linuxelearning.info ESMTP Postfix (2.6.6)
HELO me
250 mail.linuxelearning.info
MAIL from: root@linuxelearning.info
250 2.1.0 Ok
RCPT to: hugh.norris@hugh-norris.info
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject : root
Message de Test
.
250 2.0.0 Ok: queued as AF03C70A3
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

Consultez maintenant la fin du fichier /var/log/maillog. Vous devez constater que votre message est parti. Par exemple :

...
May 1 10:54:17 mail postfix/smtpd[5899]: connect from localhost[127.0.0.1]
May 1 10:54:50 mail postfix/smtpd[5899]: AF03C70A3: client=localhost[127.0.0.1]
May 1 10:55:04 mail postfix/cleanup[5903]: AF03C70A3: message-id=<20140501085450.AF03C70A3@mail.linuxelearning.info>
May 1 10:55:04 mail postfix/qmgr[5061]: AF03C70A3: from=<root@linuxelearning.info>, size=390, nrcpt=1 (queue active)
May 1 10:55:04 mail postfix/smtp[5904]: AF03C70A3: to=<hugh.norris@hugh-norris.info>, relay=smtp.bbox.fr[194.158.122.55]:25, delay=31, delays=31/0.01/0.16/0.05, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 4EF645A)
May 1 10:55:04 mail postfix/qmgr[5061]: AF03C70A3: removed
May 1 10:55:08 mail postfix/smtpd[5899]: disconnect from localhost[127.0.0.1]

Important : Il est possible a tout moment de visualiser le contenu du spool de mail en utilisant la commande mailq qui est équivalente à la commande sendmail bp.

LAB #4 - Définir les Aliases

Les deux lignes suivantes, issues du fichier /etc/postfix/main.cf indiquent l'emplacement des fichiers relatifs aux aliases :

...
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
...

Voici le contenu du fichier /etc/aliases :

# # Aliases in this file will NOT be expanded in the header from # Mail, but WILL be visible over networks or from /bin/mail. # # >>>>>>>>>> The program "newaliases" must be run after # >> NOTE >> this file is updated for any changes to # >>>>>>>>>> show through to sendmail. # # Basic system aliases -- these MUST be present. mailer-daemon: postmaster postmaster: root # General redirections for pseudo accounts. bin: root daemon: root adm: root lp: root sync: root shutdown: root halt: root mail: root news: root uucp: root operator: root games: root gopher: root ftp: root nobody: root radiusd: root nut: root dbus: root vcsa: root canna: root wnn: root rpm: root nscd: root pcap: root apache: root webalizer: root dovecot: root fax: root quagga: root radvd: root pvm: root amanda: root privoxy: root ident: root named: root xfs: root gdm: root mailnull: root postgres: root sshd: root smmsp: root postfix: root netdump: root ldap: root squid: root ntp: root mysql: root desktop: root rpcuser: root rpc: root nfsnobody: root ingres: root system: root toor: root manager: root dumper: root abuse: root newsadm: news newsadmin: news usenet: news ftpadm: ftp ftpadmin: ftp ftp-adm: ftp ftp-admin: ftp www: webmaster webmaster: root noc: root security: root hostmaster: root info: postmaster marketing: postmaster sales: postmaster support: postmaster # trap decode to catch security attacks decode: root # Person who should get root's mail #root: marc

Il est important de spécifier un utilisateur existant qui recevra le mail de root et ceci pour des raisons légales liées à la boîte de mail postmaster, l'administrateur du serveur vu de l'extérieur.

Il est aussi possible de créer des aliases pour harmoniser les adresses email de l'organisation. Si, par exemple, l'adresse email doit être au format prénom.nom mais que les noms de comptes du système linux sont au format prénom, il convient de rajouter au fichier une ligne pour chaque personne au format suivant :

...
prénom.nom: prénom
...

Modifiez donc votre fichier ainsi :

# # Aliases in this file will NOT be expanded in the header from # Mail, but WILL be visible over networks or from /bin/mail. # # >>>>>>>>>> The program "newaliases" must be run after # >> NOTE >> this file is updated for any changes to # >>>>>>>>>> show through to sendmail. # # Basic system aliases -- these MUST be present. mailer-daemon: postmaster postmaster: root # General redirections for pseudo accounts. bin: root daemon: root adm: root lp: root sync: root shutdown: root halt: root mail: root news: root uucp: root operator: root games: root gopher: root ftp: root nobody: root radiusd: root nut: root dbus: root vcsa: root canna: root wnn: root rpm: root nscd: root pcap: root apache: root webalizer: root dovecot: root fax: root quagga: root radvd: root pvm: root amanda: root privoxy: root ident: root named: root xfs: root gdm: root mailnull: root postgres: root sshd: root smmsp: root postfix: root netdump: root ldap: root squid: root ntp: root mysql: root desktop: root rpcuser: root rpc: root nfsnobody: root ingres: root system: root toor: root manager: root dumper: root abuse: root newsadm: news newsadmin: news usenet: news ftpadm: ftp ftpadmin: ftp ftp-adm: ftp ftp-admin: ftp www: webmaster webmaster: root noc: root security: root hostmaster: root info: postmaster marketing: postmaster sales: postmaster support: postmaster # trap decode to catch security attacks decode: root # Person who should get root's mail root: trainee # Employee Accounts mickey.mouse: trainee

Afin de prendre en compte la nouvelle liste d'alias, il faut utiliser la commande newaliases :

[root@mail ~]# newaliases

et demander à postfix de relire ses fichiers de configuration :

[root@mail ~]# service postfix reload
Rechargement de postfix : [ OK ]

En utilisant telnet, envoyez un message de trainee à mickey.mouse. Ce message arrivera dans la bôite de réception de trainee grâce à l'alias créé ci dessus :

[root@mail ~]# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.linuxelearning.info ESMTP Postfix (2.6.6)
HELO me
250 mail.linuxelearning.info
MAIL from: trainee@linuxelearning.info
250 2.1.0 Ok
RCPT to: mickey.mouse@linuxelearning.info
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject : test
Message de test
.
250 2.0.0 Ok: queued as 7680970A3
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

Consultez maintenant le journal /var/log/maillog. Vous apercevrez des lignes similaires à :

[root@mail ~]# tail /var/log/maillog
May 1 10:59:19 mail postfix/master[5058]: terminating on signal 15
May 1 10:59:19 mail postfix/postfix-script[6009]: starting the Postfix mail system
May 1 10:59:19 mail postfix/master[6010]: daemon started -- version 2.6.6, configuration /etc/postfix
May 1 11:00:34 mail postfix/smtpd[6020]: connect from localhost[127.0.0.1]
May 1 11:00:59 mail postfix/smtpd[6020]: 7680970A3: client=localhost[127.0.0.1]
May 1 11:01:11 mail postfix/cleanup[6024]: 7680970A3: message-id=<20140501090059.7680970A3@mail.linuxelearning.info>
May 1 11:01:11 mail postfix/qmgr[6013]: 7680970A3: from=<trainee@linuxelearning.info>, size=397, nrcpt=1 (queue active)
May 1 11:01:11 mail postfix/local[6037]: 7680970A3: to=<trainee@linuxelearning.info>, orig_to=<mickey.mouse@linuxelearning.info>, relay=local, delay=21, delays=21/0.05/0/0.03, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -Y -a $DOMAIN)
May 1 11:01:11 mail postfix/qmgr[6013]: 7680970A3: removed
May 1 11:01:15 mail postfix/smtpd[6020]: disconnect from localhost[127.0.0.1]

Notez la présence de la ligne suivante :

May 1 11:01:11 mail postfix/local[6037]: 7680970A3: to=trainee@linuxelearning.info, orig_to=mickey.mouse@linuxelearning.info, relay=local, delay=21, delays=21/0.05/0/0.03, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail -Y -a $DOMAIN)

Cette ligne démontre que l'alias fonctionne.

Important : Un utilisateur peut transférer son email vers un autre utilisateur du système ou bien vers une adresse email valide en inscrivant le nom ou l'adresse dans le fichier ~.forward.

<html>

Copyright © 2004-2017 Hugh Norris.<br><br> <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”><img alt=“Licence Creative Commons” style=“border-width:0” src=“http://i.creativecommons.org/l/by-nc-nd/3.0/fr/88x31.png” /></a><br />Ce(tte) oeuvre est mise à disposition selon les termes de la <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”>Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France</a>.

</html>