Dernière mise-à-jour : 2020/01/30 03:27

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 :

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 :

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 :

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
/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
/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
/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
/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 
/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 :

main.cf
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 :

main.cf
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 :

/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 :

/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:		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>


Menu