Le système d'exploitation GNU-Linux/Le serveur de mails Postfix

Un livre de Wikibooks.
Aller à : Navigation, rechercher
Le système d'exploitation GNU-Linux
Tux.svg
Plan
  1. Qu'est-ce qu'un système d'exploitation ?
  2. Unix et Linux
  3. Partitionnement du disque
  4. Installation
    1. Installer Debian via le réseau
  5. Utilisateur Unix
    1. Le login
    2. Commandes de base
    3. L'aide en ligne man
    4. L'éditeur de texte vi
    5. Les shells
    6. La complétion
    7. Les jokers
    8. Les répertoires importants
    9. Redirection des entrées/sorties
    10. Invoquer un programme en tâche de fond
    11. Propriétaires et droits d'accès
    12. Processus
  6. Administration du système
    1. Configuration du réseau
    2. Les utilisateurs et groupes
    3. Le processus d'initialisation
    4. Les systèmes de fichiers
    5. Le système virtuel /proc
    6. Les périphériques /dev
    7. L'ordonnanceur de travaux cron
    8. Le backup : tar et gzip
    9. ghost avec partimage
    10. sauvegarde de fichiers avec rsync
    11. Les fichiers journaux syslog
    12. Installation de nouveaux logiciels
    13. Le noyau Linux et les modules
    14. Autres commandes utiles
    15. Installation RAID1 logiciel + LVM + XFS
    16. Scripts de surveillance
    17. Réseaux sans fil
  7. Administration des services réseaux
    1. Le serveur de noms Bind
    2. Le serveur de configuration réseau DHCP
    3. Le serveur de shell distant SSH
    4. Le partage de fichiers Samba
    5. Le partage de fichiers NFS
    6. Le serveur d'impression CUPS
    7. Le serveur de mails Postfix
    8. Le serveur de fichiers FTP
    9. La base de données Mysql
    10. Le serveur Web Apache
    11. Les annuaires LDAP
    12. L'outil d'administration Webmin
    13. Le routage avec iptables et route
    14. La supervision
  8. Sécurisation d'un serveur Linux
    1. Installation d'un service en mode chroot
    2. Protection avec iptables
  9. Médiagraphie
  10. Auteurs
Modifier ce modèle

Sections

[modifier] Le serveur de mail Postfix

Postfix est un serveur de mail écrit dans l'idée de remplacer Sendmail, serveur de mail historique de moins en moins utilisé car sa configuration est très complexe.

Postfix effectue 99% des fonctions de Sendmail, les 1% restant ne sont que purement applicable dans une minorité de cas. De plus, il allie performance et facilité d'installation et de paramétrage.

Il existe de nombreux autres serveurs de mails, parmi les plus connus : Qmail, Exim, Qpsmtpd, Courier ...

[modifier] Comment ça marche ?

Schéma du cheminement des mails entre les correspondants (3 cas illustrés en fonction des moyens mis en œuvre).
Postfix-server(c).png


Le schéma précédent nous propose trois cas de figure:

[modifier] Cas numéro 1

  • Nous avons deux sociétés: societe.com et client.com
  • Paul (paul@societe.com) veut envoyer un mail à Pierre (pierre@client.com)
  • Le mail part en direction du serveur SMTP de sa société (smtp.societe.com)
  • Celui-ci est accepté par le serveur de mail smtp.societe.com car il vient de son propre réseau
  • smtp.societe.com fait une demande au serveur DNS pour connaitre le serveur de mail qui gère les courriers de @client.com : client.com MX ? (Mail eXchanger)
  • Le serveur DNS répond: smtp.client.com
  • Le serveur de mail smtp.societe.com contacte donc le serveur SMTP smtp.client.com
  • Lorsque le client de messagerie de Pierre veut consulter ces mails, il va demander à POP si il y a quelque chose pour lui et télécharge le mail de Paul
  • Pierre a donc bien reçu le mail de Paul
  • Pierre répond à Paul de la même manière
  • Le mail suit le cheminement inverse : smtp.client.com demande au serveur DNS le serveur de messagerie de societe.com. Celui-ci lui répond: smtp.societe.com
  • Le mail est acheminé vers le serveur SMTP smtp.societe.com
  • Il est stocké jusqu'à la demande de Paul de lire ces mails. Contrairement à Pierre, le client de messagerie de Paul interroge le serveur IMAP imap.societe.com. La différence est que le mail de Pierre est lu directement depuis le serveur IMAP et reste stocké sur ce dernier

[modifier] Cas numéro 2

  • Notre ami Paul fait parti d'une association (asso.org) et dispose d'un email sur ce domaine : paul@asso.org
  • L'association dispose d'un hébergement chez hebergeur.net qui lui fournit différents services serveur SMTP, POP, IMAP et accès Webmail
  • Paul utilise son email sur asso.org (paul@asso.org) pour envoyer un email à son ami Jack qui dispose aussi d'un email sur asso.org : jack@asso.org
  • Ce mail est acheminé via son réseau vers son serveur SMTP. Dans son client Outlook, Paul a paramétré plusieurs comptes
  • Le serveur de sa société (smtp.societe.com) accepte d'envoyer le mail sur Internet, même si l'email émetteur et le destinataire utilisent des noms de domaine différents, car il vient de son propre réseau
  • Ce mail est donc envoyé au serveur SMTP asso.org : smtp.hebergeur.net
  • Paul peut donc s'il le souhaite aller consulter ses mails sur asso.org via le serveur POP qui va rapatrier directement les mails paul@asso.org

[modifier] Cas numéro 3

  • Jack utilise une connexion à Internet fournie par un fournisseur d'accès à Internet : fai.fr. Pour lire son email sur asso.org (jack@asso.org), Jack utilise son navigateur Web et l'accès Webmail fournit par fai.fr
  • Il se connecte donc sur l'adresse webmail.asso.org et peut ainsi visualiser ses mails. Aucun email ne sera rapatrié sur son PC.
  • Il peut également répondre à tous ses mails via WEBMAIL.

[modifier] Quelques définitions

  • SMTP : Simple Mail Transfer Protocol (port 25), pour l'envoi et l'acheminement du courrier.
  • POP  : Post Office Protocol (port 110), pour la réception du courrier.
  • IMAP : Internet Message Access Protocol (port 143), sert à la réception du courrier. À la différence de POP, les emails restent stockés sur le serveur IMAP.
  • MTA : Mail Transfert Agent. Il s'agit des serveurs de mails SMTP.
  • MUA : Mail User Agent. Il s'agit des logiciels clients de messagerie, ex: Outlook, Eudora, Thunderbird, Kmail, Evolution ...

[modifier] Installation de Postfix

Installer en premier Postfix, si un autre serveur de mail est déjà présent, il le supprimera :

 # apt-get install postfix

Pour l'instant, nous laissons toutes les options par défaut, nous allons le configurer par la suite.

Une fois l'installation terminée, nous allons configurer Postfix.

sudo adduser postfix sasl[1]
sudo dpkg-reconfigure postfix

[modifier] Configuration de Postfix

Le fichier de configuration principal de Postfix est /etc/postfix/main.cf

 # cat /etc/postfix/main.cf
 
 # Message affiché à la connexion
 smtpd_banner = $myhostname ESMTP
 
 # Ne pas utiliser le service biff qui sert à la notification
 # des nouveaux mails
 biff = no
 
 # On ne rajoute pas le domaine car c'est le boulot du client mail
 append_dot_mydomain = no
 
 # Permet d'envoyer un email a l'émetteur si son mail n'est pas
 # parti au bout d'un certain temps
 #delay_warning_time = 4h
 
 # Paramètres liés au chiffrement TLS
 #smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
 #smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
 #smtpd_use_tls=yes
 #smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
 #smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
 # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
 # information on enabling SSL in the smtp client.
 
 # Le nom de machine FQDN (doit être en accord avec le DNS)
 myhostname = pc230.mondomaine.fr
 
 # Emplacement des alias Unix
 # Attention, à chaque modification de /etc/aliases, il faut taper
 # la commande newaliases pour qu'il régénère le fichier /etc/aliases.db
 alias_maps = hash:/etc/aliases
 alias_database = hash:/etc/aliases
 
 # Le domaine d'origine
 myorigin = /etc/mailname
 
 # Liste des domaines principaux dont on accepte le courrier
 mydestination = pc230.mondomaine.fr, localhost
 
 # Permet d'indiquer un autre serveur SMTP pour l'envoi des emails
 # Utilisé si on ne peut pas envoyer directement les emails
 relayhost =
 
 # Indique les réseaux dont on accepte d'acheminer les emails
 mynetworks = 127.0.0.0/8, 192.168.30.0/24
 
 # Le dépôt des emails dans les boites aux lettres est confié
 # à procmail (cas du format mbox)
 mailbox_command = procmail -a "$EXTENSION"
 
 # Taille des boites aux lettres. 0 : pas de limite
 mailbox_size_limit = 0
 
 # Séparateur utilisé pour les usernames + adresses
 recipient_delimiter = +
 
 # Écoute sur toutes les interfaces réseaux
 inet_interfaces = all
 
 # On force postfix à utiliser le protocole IPv4
 inet_protocols = ipv4

On peut visualiser la totalité des options possibles de Postfix et leurs valeurs par défaut via la commande postconf :

 # postconf | more
 2bounce_notice_recipient = postmaster
 access_map_reject_code = 554
 address_verify_default_transport = $default_transport
 address_verify_local_transport = $local_transport
 address_verify_map =
 address_verify_negative_cache = yes
 address_verify_negative_expire_time = 3d
 ...

On vérifie également que le fichier /etc/mailname contient le nom de domaine de notre réseau :

 # cat /etc/mailname
 mondomaine.fr

Chaque fois que l'on modifie le fichier /etc/postfix/main.cf, il faut relancer Postfix :

 # /etc/init.d/postfix restart

Pour chaque mail envoyé ou reçu, Postfix enregistre les informations d'acheminement dans le fichier /var/log/mail.log. Il est donc très utile de surveiller ce fichier durant les tests de fonctionnement.

Pour vérifier que le serveur de mail fonctionne, on envoi un mail à un utilisateur et on regarde le fichier /var/log/mail.log.

 # mail alex
 Subject: essai
 essai
 .
 Cc:

Dans un autre terminal :

 # tail -f /var/log/mail.log
 ...
 Feb 13 13:10:40 pc230 postfix/pickup[13353]: B782A1FD6F: uid=0 from=<root>
 Feb 13 13:10:40 pc230 postfix/cleanup[13675]: B782A1FD6F: 
 message-id=<20080213121040.B782A1FD6F@pc230.mondomaine.fr>
 Feb 13 13:10:40 pc230 postfix/qmgr[13354]: B782A1FD6F: 
 from=<root@pc230.mondomaine.fr>, size=355, nrcpt=1 (queue active)
 Feb 13 13:10:40 pc230 postfix/local[13677]: B782A1FD6F: 
 to=<alex@pc230.mondomaine.fr>, orig_to=<alex>, relay=local, delay=0.08, 
 delays=0.04/0.02/0/0.02, dsn=2.0.0, status=sent (delivered to command: 
 procmail -a "$EXTENSION")
 Feb 13 13:10:40 pc230 postfix/qmgr[13354]: B782A1FD6F: removed
 ...

[modifier] Ajouter une boite aux lettres

Pour ajouter une boite aux lettres, il faut ajouter un compte Unix. Pour des raisons de sécurité, on positionne le shell de l'utilisateur à /bin/false (ainsi il ne pourra pas se logger sur le serveur). Le mot de passe saisi sera celui de sa boite aux lettres. On rajoute l'utilisateur dans le groupe mail afin qu'il puisse écrire le fichier <login>.lock dans le répertoire /var/mail.

 # adduser --shell /bin/false --ingroup mail pierre
 ...


[modifier] Installation d'un serveur POP

Il existe de nombreux serveurs POP : courier-pop, ipopd, qpopper, solid-pop3d, teapop, dovecot-pop3d ...

Nous installons le serveur POP teapop :

 # apt-get install teapop

Depuis un autre poste du réseau, il nous suffit ensuite de configurer un client mail (ex: kmail) pour venir relever une boite aux lettres en utilisant le protocole POP.


[modifier] Installation d'un serveur IMAP

IMAP signifie "Internet Message Access Protocol", c'est un nouveau protocole de messagerie pour relever son courrier dont la particularité est de laisser les messages sur le serveur.

Il existe plusieurs serveurs IMAP, pour cet exemple nous allons utiliser courier-imap.

On installe donc le serveur courier-imap :

 # apt-get install courier-imap

IMAP nécessite le format de stockage Maildir. Nous allons donc tout d'abord configurer Postfix pour lui indiquer d'utiliser le format Maildir au lieu du traditionnel mbox.

On modifie le fichier /etc/postfix/main.cf. On commente l'option mailbox_command (qui appelle procmail) et on rajoute l'option home_mailbox :

 # vi /etc/postfix/main.cf
 ...
 # mailbox_command = procmail -a "$EXTENSION"
 
  # Pour utiliser le format Maildir
 home_mailbox = Maildir/

On relance postfix :

 # /etc/init.d/postfix restart

Pour chaque utilisateur existant, il faut ensuite créer le répertoire Maildir. On fait ceci à l'aide de la commande maildirmake fourni par courrier-imap :

 $ cd      # pour retourner dans mon home directory
 $ maildirmake Maildir
 $ ls -l Maildir
 drwx------ 2 alex grpalex 4096 2008-02-13 13:58 cur
 drwx------ 2 alex grpalex 4096 2008-02-13 13:58 new
 drwx------ 2 alex grpalex 4096 2008-02-13 14:11 tmp

Pour automatiser la création du répertoire Maildir pour les nouveaux utilisateurs, on exécute la commande maildirmake dans le répertoire /etc/skel. Ainsi tous les nouveaux utilisateurs auront automatiquement le répertoire Maildir dans leur home directory :

 # cd /etc/skel
 # maildirmake Maildir

[modifier] Installation du Webmail Squirrelmail

Si n'est déjà le cas, on installe le serveur Web Apache :

 # apt-get install apache2

Pour installer Squirrelmail sous Debian, on tape la commande suivante :

 # apt-get install squirrelmail

On peut configurer Squirrelmail en utilisant le programme squirrelmail-configure. Ce fichier permet configurer le fichier /etc/squirrelmail/config.php. A noter que l'on peut modifier directement ce fichier sans passer par squirrelmail-configure.

Squirrelmail est fourni avec la section à rajouter à Apache pour l'activer. On va donc dans le répertoire de configuration de Apache pour lui indiquer d'utiliser ce fichier :

 # cd /etc/apache2/conf.d
 # ln -s /etc/squirrelmail/apache.conf squirrelmail.conf

On relance Apache :

 # /etc/init.d/apache2 restart

On peut tester si Squirrelmail fonctionne avec son navigateur en se connectant à l'URL suivante :

 http://localhost/squirrelmail/

[modifier] Références

  1. http://doc.ubuntu-fr.org/postfix
Outils personnels
Espaces de noms

Variantes
Actions
Bibliothèque
Navigation
Aide
Imprimer / exporter
Boîte à outils