Red Hat Linux comprend deux Agent de transfert de courrier primaires, à savoir Sendmail et Postfix. Sendmail est configuré comme la valeur par défaut mais il est possible de remplacer facilement cette valeur par Postfix.
![]() | Astuce |
---|---|
Pour savoir comment passer d'un ATC par défaut Sendmail à un ATC par défaut Postfix, reportez-vous au chapitre intitulé Configuration de l'Agent de transfert de courrier (ATC) du Guide de personnalisation de Red Hat Linux. |
Red Hat Linux inclut également un ATC doté d'une fonction particulière nommé Fetchmail; ce dernier est utilisé pour acheminer le courrier électronique d'un ACT distant à un ACT local.
Cette section examine de manière détaillé Sendmail et Fetchmail.
La tâche principale de Sendmail est de déplacer de façon sécurisée des messages électroniques entre des hôtes, utilisant généralement le protocole SMTP. Toutefois, Sendmail est hautement configurable, ce qui vous permet de contrôler presque tous les aspects du traitement des messages, y compris le protocole à utiliser. De nombreux administrateurs système choisissent d'utiliser Sendmail comme ATC en raison de sa puissance et de sa scalabilité.
Il est important de bien comprendre ce qu'est Sendmail et ce qu'il peut faire, de même que ce qu'il n'est pas. En cette période d'applications monolithiques jouant des rôles multiples, on pourrait penser que Sendmail est la seule application nécessaire pour exécuter un serveur de messagerie au sein d'une organisation. Techniquement parlant, ceci est vrai car Sendmail peut spouler du courrier sur vos répertoires utilisateur et accepter de nouveaux messages sortant pour les utilisateurs. Cependant, la plupart des utilisateurs désirent bien plus que le simple acheminement du courrier. Ils veulent en général interagir avec le courrier électronique à l'aide d'un AGC qui utilise POP ou IMAP pour télécharger leurs messages sur leur ordinateur local. Ou alors, ils pourraient préférer une interface Web pour avoir accès à leur boîte à lettres. Ces autres applications fonctionnent de concert avec Sendmail et SMTP, mais existent en réalité pour différentes raisons et peuvent fonctionner indépendemment les unes des autres.
L'explication de tout ce que Sendmail devrait et pourrait faire en fonction de sa configuration va bien au-delà de la portée de cette section. Étant donné le nombre d'options différentes et de réglages possibles, des volumes entiers ont été écrits pour expliquer toutes les possibilités de Sendmail et les façons de régler d'éventuels problèmes. Reportez-vous à Section 11.6 Ressources supplémentaires pour obtenir une liste des ressources dédiées à Sendmail.
Cette section passe en revue les fichiers installés avec Sendmail par défaut et examine certaines modification de configuration élémentaires, y compris comment éviter de recevoir du pourriel (spam) et comment augmenter les capacités de Sendmail avec le protocole 'Lightweight Directory Access Protocol' (LDAP).
Le fichier exécutable de Sendmail est /usr/sbin/sendmail.
Le fichier de configuration de Sendmail, long et détaillé, est /etc/mail/sendmail.cf. Évitez d'éditer le fichier sendmail.cf directement. Pour apporter des modification à la configuration, éditez plutôt le fichier /etc/mail/sendmail.mc, sauvegardez le fichier original /etc/mail/sendmail.cf et utilisez ensuite le macroprocesseur m4 qui est inclus pour créer un nouveau fichier /etc/mail/sendmail.cf. De plus ample informations sur la configuration de Sendmail sont disponibles dans Section 11.3.1.3 Modifications courantes de la configuration de Sendmail.
Divers fichiers de configuration Sendmail sont installés dans /etc/mail/, notamment:
access — Spécifie les systèmes qui peuvent utiliser Sendmail pour le courrier électronique sortant.
domaintable — Spécifie le mappage de noms de domaine.
local-host-names — Spécifie les alias de l'hôte.
mailertable — Spécifie des instructions qui écrasent le routage de domaines spécifiques.
virtusertable — Spécifie une forme de dénomination par alias spécifique au domaine, ce qui permet à des domaines virtuels multiples d'être hébergés sur un ordinateur.
Plusieurs fichiers de configuration placés dans /etc/mail/, tels que access, domaintable, mailertable et virtusertable, doivent en fait stocker leurs informations dans des fichiers de base de données avant que Sendmail puisse appliquer les modifications apportées à la configuration. Pour inclure les changements apportés à ces fichiers de configuration dans leurs fichiers de base de données, vous devez exécutez la commande:
makemap hash /etc/mail/<nom> < /etc/mail/<nom> |
où <nom> doit être remplacé par le nom du fichier de configuration à convertir.
Par exemple, pour que tous les messages électroniques destinés au domaine example.com soit envoyés à <bob@other-example.com>, ajoutez la ligne reproduite ci-dessous au fichier virtusertable:
@example.com bob@other-example.com |
Pour finaliser cette modification, le fichier virtusertable.db doit être mis à jour à l'aide de la commande suivante, en étant connecté en tant que super-utilisateur:
makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable |
Ce faisant, un nouveau fichier virtusertable.db est créé, reflétant la nouvelle configuration.
Lors de la modification du fichier de configuration Sendmail, il est recommandé de générer un tout nouveau un fichier /etc/mail/sendmail.cf plutôt que de modifier un fichier existant.
![]() | Attention |
---|---|
Avant de modifier le fichier sendmail.cf, il est toujours conseillé d'effectuer une copie de sauvegarde de la version courante du fichier. |
Pour ajouter la fonctionnalité désirée à Sendmail, éditez le fichier /etc/mail/sendmail.mc. Une fois cette opération terminée, utilisez le macroprocesseur m4 pour générer un nouveau fichier sendmail.cf en exécutant la commande m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf. Après la création d'un nouveau fichier /etc/mail/sendmail.cf, redémarrez Sendmail pour qu'il reflète les changements apportés. Pour ce faire, le moyen le plus simple consiste à taper la commande /sbin/service sendmail restart, en étant connecté en tant que super-utilisateur.
Par défaut, le macroprocesseur m4 est installé avec Sendmail mais fait partie du paquetage m4.
![]() | Important | |
---|---|---|
Le fichier sendmail.cf par défaut n'autorise pas Sendmail à accepter des connexions réseau de tout hôte autre que l'ordinateur local. Afin de configurer Sendmail en tant que serveur pour d'autres clients, éditez /etc/mail/sendmail.mc et modifiez les valeurs de DAEMON_OPTIONS pour permettre l'écoute des périphériques de réseau ou supprimez tout simplement les commentaires appropriés pour cette option. Régénérez ensuite le fichier /etc/mail/sendmail.cf grâce à la commande:
|
Cette configuration devrait fonctionner pour la plupart des sites exclusivement SMTP. Elle ne fonctionnera pas pour les sites UUCP ('UNIX to UNIX Copy'); vous devrez générer un nouveau fichier sendmail.cf si vous devez utiliser les transferts de courrier UUCP.
Consultez le fichier /usr/share/sendmail-cf/README avant de modifier tout fichier contenus dans les répertoires sous le répertoire /usr/share/sendmail-cf, car ils peuvent affecter la configuration future de fichiers /etc/mail/sendmail.cf.
L'une des configurations courantes de Sendmail est d'avoir un seul ordinateur qui agit comme passerelle de messagerie pour tous les ordinateurs sur un réseau. Par exemple, une société pourrait souhaiter qu'un ordinateur appelé mail.bigcorp.com gère tout son courrier électronique et attribue à tous les messages sortants la même adresse de retour.
Dans ce cas de figure, le serveur Sendmail est obligé de déguiser le nom des ordinateurs du réseau de la société de façon à ce que leur adresse de retour soit user@bigcorp.com au lieu de user@devel.bigcorp.com.
Pour ce faire, ajoutez les lignes suivantes à /etc/mail/sendmail.mc:
FEATURE(always_add_domain)dnl FEATURE(`masquerade_entire_domain') FEATURE(`masquerade_envelope') FEATURE(`allmasquerade') MASQUERADE_AS(`bigcorp.com.') MASQUERADE_DOMAIN(`bigcorp.com.') MASQUERADE_AS(bigcorp.com) |
Une fois qu'elle aura généré un nouveau sendmail.cf à l'aide de m4, cette configuration fera en sorte que le tous les messages envoyés à partir du réseau semblent avoir été envoyés depuis bigcorp.com.
Les 'spams' (ou pourriel) peuvent être définis comme étant des messages électroniques inutiles et indésirables reçus par un utilisateur qui n'en a jamais fait la demande. Il s'agit d'un abus très perturbateur, coûteux et répandu des normes de communication Internet.
Sendmail rend relativement aisé le blocage des nouvelles techniques utilisées pour envoyer des spams. Il bloque même par défaut, un grand nombre des méthodes d'envoi de spams les plus courantes.
Par exemple, le réacheminement de messages SMTP, aussi appelé retransmission ('relaying'), a été désactivé par défaut depuis la version 8.9. de Sendmail. Auparavant, Sendmail aurait dirigé l'hôte de messagerie (x.org) de façon à ce qu'il accepte des messages d'un individu (y.com) et les envoie à un autre individu (z.net). Désormais, Sendmail doit être configuré de façon à autoriser un domaine à retransmettre du courrier par le biais du serveur. Pour configurer les domaines de retransmission, éditez simplement le fichier /etc/mail/relay-domains et relancez Sendmail.
Ceci étant, les utilisateurs sont très souvent bombardés de pourriel provenant d'autres serveurs via l'Internet. Dans ce cas, les fonctions de contrôle d'accès de Sendmail, disponibles par l'entremise du fichier /etc/mail/access peuvent servir à empêcher les connexions en provenance d'hôtes indésirables. L'exemple suivant illustre comment utiliser ce fichier pour non seulement bloquer mais également autoriser l'accès au serveur Sendmail:
badspammer.com ERROR:550 "Go away and do not spam us anymore" tux.badspammer.com OK 10.0 RELAY |
Cet exemple stipule que tout message électronique envoyé par badspammer.com doit être bloqué à l'aide d'un code d'erreur 550 conforme à RFC-821 et qu'un message doit être renvoyé à l'expéditeur de pourriel. Le courrier envoyé par le sous-domaine tux.badspammer.com en revanche peut être accepté. La dernière ligne montre que tout message envoyé depuis le réseau 10.0.*.* peut être retransmis au moyen de votre serveur de messagerie.
Étant donné que /etc/mail/access.db est une base de données, vous devez utiliser makemap pour activer toute modification. Pour ce faire, tapez la commande suivante en étant connecté en tant que super-utilisateur:
makemap hash /etc/mail/access < /etc/mail/access |
Comme vous pouvez l'imaginer, cet exemple ne fait qu'effleurer la surface du potentiel de Sendmail en termes d'autorisation ou d'interdiction d'accès. Reportez-vous au document /usr/share/doc/sendmail/README.cf pour obtenir de plus amples renseignements et d'autres exemples.
Étant donné que Sendmail fait appel à l'ADC Procmail pour la livraison de courrier, il est également possible d'utiliser un programme de filtrage de pourriel comme SpamAssassin, pour identifier et classer ce type de courrier à la place de l'utilisateur. Reportez-vous à Section 11.4.2.6 Filtres de spam pour obtenir de plus amples informations sur l'utilisation de du programme SpamAssassin.
L'utilisation de Lightweight Directory Access Protocol (LDAP) est une façon très rapide et puissante de trouver des informations spécifiques sur un utilisateur particulier appartenant à un grand groupe. Par exemple, un serveur LDAP peut servir à chercher une adresse électronique spécifique dans un répertoire d'entreprise à partir du nom de famille de l'utilisateur. Pour ce genre de mise en application, LDAP est en grande partie séparé de Sendmail; LDAP stocke les informations hiérarchiques des utilisateurs alors que Sendmail ne s'occupe que de recevoir le résultat de la recherche LDAP par le biais de messages électroniques pré-adressés.
Toutefois, Sendmail prend en charge une intégration beaucoup plus grande avec LDAP, là où il utilise LDAP pour remplacer des fichiers maintenus séparément, tels que aliases et virtusertables, sur divers serveurs de messagerie qui fonctionnent ensemble pour prendre en charge une organisation de taille moyenne ou supérieure. En bref, LDAP fait abstraction du niveau de routage du courrier depuis Sendmail et ses fichiers de configuration séparés en un cluster LDAP puissant qui influence de nombreuses autres applications.
La version actuelle de Sendmail comprend la prise en charge pour LDAP. Pour étendre votre serveur Sendmail à l'aide de LDAP, prenez d'abord un serveur LDAP, tel que OpenLDAP, opérationnel et correctement configuré. Ensuite, modifiez votre fichier /etc/mail/sendmail.mc pour y inclure les éléments suivants:
LDAPROUTE_DOMAIN('yourdomain.com')dnl FEATURE('ldap_routing')dnl |
![]() | Remarque |
---|---|
Ceci n'est que pour une configuration de base de Sendmail avec LDAP. Votre configuration devrait différer considérablement de celle-ci selon votre mise en application de LDAP, tout spécialement si vous souhaitez configurer plusieurs ordinateurs Sendmail pour qu'ils utilisent un serveur LDAP commun. Consultez /usr/share/doc/sendmail/README.cf pour avoir des informations de configuration de routage LDAP détaillées et des exemples. |
Ensuite, recréez le fichier /etc/mail/sendmail.cf en exécutant m4 et redémarrant Sendmail. Reportez-vous à Section 11.3.1.3 Modifications courantes de la configuration de Sendmail pour obtenir des instructions sur la manière de procéder.
Pour plus d'informations sur LDAP, reportez-vous au Chapter 13 Protocole LDAP (Lightweight Directory Access Protocol).
Fetchmail est un ATC récupérant du courrier électronique depuis des serveurs distants et le transfère à l'ATC local. De nombreux utilisateurs apprécient le fait de pouvoir séparer le processus de téléchargement de leurs messages stockés sur un serveur distant, du processus de lecture et d'organisation de leur courrier dans un AGC. Conçu tout spécialement pour les utilisateurs qui se connectent par modem, Fetchmail se connecte et télécharge rapidement tous les messages électroniques dans le fichier spoule de messagerie à l'aide de nombreux protocoles différents, tels que POP3 et IMAP. Il permet même de réacheminer vos messages vers un serveur SMTP, si nécessaire.
Fetchmail est configrué pour chaque utilisateur grâce à un fichier .fetchmailrc du répertoire personnel de l'utilisateur.
Sur la base des préférences spécifiés dans le fichier .fetchmailrc, Fetchmail recherche les messages électroniques sur un serveur distant et les récupère. Il essaie ensuite de les acheminer au port 25 de l'ordinateur local, au moyen de l'ATC local, pour placer les messages sur le fichier spoule de l'utilisateur approprié. Si Procmail est disponible, il peut ensuite être utilisé pour filtrer les messages et les placer dans une boîte à lettres de sorte qu'ils puissent être lus avec un AGC.
Bien qu'il soit possible de passer toutes les options nécessaires pour vérifier le courrier sur un serveur distant depuis la ligne de commande lorsque l'on exécute Fetchmail, il est beaucoup plus simple d'utiliser un fichier .fetchmailrc. Toutes les options de configuration vont certes dans le fichier .fetchmailrc mais il est possible de les écraser lorsque Fetchmail est en cours en spécifiant cette option à la ligne de commande.
Le fichier .fetchmailrc d'un utilisateur est divisé en trois types d'option de configuration:
options globales — donne à Fetchmail des instructions qui contrôlent l'exploitation du programme ou fournit des réglages pour toute connexion de vérification du courrier.
options serveur — Spécifie les informations nécessaires sur le serveur scruté, telles que le nom d'hôte, de même que les préférences que vous souhaitez utiliser avec un serveur de messagerie donné, comme le port à vérifier ou le nombre de secondes d'attente avant d'interrompre la connexion. Ces options affectent chaque option utilisateur utilisée avec ce serveur.
options utilisateur — Contient des informations, telles que le nom d'utilisateur et le mot de passe, nécessaires à l'authentification et la vérification du courrier à l'aide d'un serveur de messagerie donné.
Les options globales apparaissent au sommet du fichier de configuration .fetchmailrc, suivies d'une ou plusieurs options serveur, précisant chacune un serveur de messagerie différent sur lequel Fetchmail devrait vérifier le courrier. Les options utilisateur vont à la suite des options serveur pour chaque compte utilisateur devant être vérifié sur ce serveur de messagerie. Tout comme les options serveur, il est possible de spécifier non seulement de multiples options utilisateur à utiliser avec un serveur donné mais également de vérifier plusieurs comptes de courrier sur un même serveur.
Les options serveur sont appelées à être utilisées dans le fichier .fetchmailrc par l'emploi d'un verbe d'option spécial, poll ou skip, qui précède toute information serveur. L'action poll indique à Fetchmail d'utiliser cette option serveur lorsqu'il est exécuté; il vérifie en fait le courrier à l'aide des différentes options utilisateur. Toute option serveur après une action skip, n'est pas vérifiée, à moins que le nom d'hôte de ce serveur ne soit spécifié lorsque Fetchmail est invoqué. L'option skip établit des configurations test dans .fetchmailrc et ne vérifie ce serveur que selon des instructions spécifiques, sans affecter toute autre configuration actuellement en cours.
Ci-dessous figure un exemple de fichier .fetchmailrc:
set postmaster "user1" set bouncemail poll pop.domain.com proto pop3 user 'user1' there with password 'secret' is user1 here poll mail.domain2.com user 'user5' there with password 'secret2' is user1 here user 'user7' there with password 'secret3' is user1 here |
Dans cet exemple, les options globales sont configurées de façon à ce que l'utilisateur reçoive le courrier seulement en dernier ressort (option postmaster) et que toutes les erreurs soient envoyées au "postmaster" plutôt qu'à l'expéditeur (option bouncemail). L'action set indique à Fetchmail que cette ligne contient une option globale. Ensuite, deux serveurs de messagerie sont spécifiés; le premier, configuré pour vérifier POP3 et le second pour essayer divers protocoles afin d'en trouver un qui fonctionne. Deux utilisateurs sont vérifiés dans le cas de la seconde option serveur, mais tout message électronique trouvé pour l'un ou l'autre des utilisateurs est envoyé dans le fichier spoule de messagerie de l'utilisateur 1. Ceci permet de vérifier des boîtes à lettres multiples sur des serveurs multiples, bien qu'apparaissant dans un seul AGC. Chaque information spécifique à un utilisateur commence par l'action user.
![]() | Remarque |
---|---|
Les utilisateurs ne doivent pas placer leur mot de passe dans le fichier .fetchmailrc. Si la section with password '<mot-de-passe>' est omise Fetchmail demandera un mot de passe lors de son lancement. |
Fetchmail offre de nombreuses options différentes, tant globales que serveur ou locales. Un grand nombre de ces options sont rarement utilisées ou ne s'appliquent qu'à des situations très particulières. La page de manuel relative à fetchmail explique chacune de ces options de façon détaillée, mais les options les plus courantes sont énumérées ci-dessous.
Chaque option globale devrait être placée sur une ligne individuelle et précédée de l'action set.
daemon <seconds> — Spécifie le mode démon dans lequel Fetchmail demeure en tâche de fond et récupère le courrier à intervalle déterminé.
postmaster — Spécifie un utilisateur local auquel envoyer le courrier en cas de problèmes de distribution.
syslog — Spécifie le fichier journal pour l'enregistrement des messages d'erreur et d'état. Par défaut, /var/log/maillog est retenu.
Les options serveur doivent figurer sur leur propre ligne dans .fetchmailrc, après une action poll ou skip.
auth <type-d'auth-> — Spécifie le type d'authentification à utiliser. Par défaut, l'authentification password est utilisée, mais certains protocoles prennent en charge d'autres types d'authentification, notamment kerberos_v5, kerberos_v4 et ssh. Si le type d'authentification any est retenu, Fetchmail essaiera d'abord des méthodes qui ne nécessitent aucun mot de passe, puis des méthodes qui masquent votre mot de passe et, en dernier ressort, essaiera d'envoyer votre mot de passe en texte en clair pour effectuer l'authentification au serveur.
interval <nombre> — Indique à Fetchmail de ne scruter que ce serveur chaque <nombre> de fois qu'il vérifie le courrier sur tous les serveurs configurés. Cette option est généralement utilisée pour les serveurs de messagerie sur lesquels un utilisateur ne reçoit que peu de messages.
port <numéro-de-port> — Écrase le numéro de port par défaut pour un protocole spécifié.
proto <protocole> — Spécifie un protocole particulier, tel que pop3 ou imap, à utiliser pour vérifier le courrier sur ce serveur.
timeout <secondes> — Spécifie la durée d'inactivité du serveur )en secondes) après laquelle Fetchmail abandonne une tentative de connexion. Si cette valeur n'est pas configurée, le système retient une valeur par défaut de 300 secondes.
Les options utilisateur peuvent être placées sur leurs propres lignes sous une option serveur ou alors sur la même ligne qu'une option serveur. Dans les deux cas, les options utilisateur doivent suivre l'option user (définie ci-dessous).
fetchall — Donne l'ordre à Fetchmail de télécharger tous les messages d'une file, y compris les messages qui ont déjà été visualisés. Par défaut, Fetchmail ne récupère que les nouveaux messages.
fetchlimit <nombre> — Ne permet le téléchargement que d'un certain nombre de messages avant l'arrêt.
flush — Donne l'instruction à Fetchmail de supprimer tous les messages de la file visualisés précédemment avant de télécharger les nouveaux messages.
limit <nombre-max-octets> — Spécifie que seuls les messages dont la taille est inférieure à la taille spécifiée peuvent être récupérés. Cette option est pratique lors de connexions réseau lentes, particulièrement lorsqu'un gros message prend trop de temps à télécharger.
password '<mot de passe>' — Spécifie le mot de passe à utiliser pour cet utilisateur.
preconnect "<commande>" — Exécute la commande spécifiée avant de récupérer les messages pour cet utilisateur.
postconnect "<commande>" — Exécute la commande spécifiée après avoir récupéré les messages pour cet utilisateur.
ssl — Active le cryptage SSL.
user "<nom-d'utilisateur>" — Définit le nom d'utilisateur employé par Fetchmail pour récupérer les messages électroniques. Cette option doit être placée avant toute autre option utilisateur.
La plupart des options utilisées à la ligne de commande lors de l'exécution de la commande fetchmail, répliquent les options de configuration de .fetchmailrc. Ainsi, Fetchmail peut être utilisé avec ou sans fichier de configuration. La plupart des utilisateurs n'utilisent jamais ces options à la ligne de commande car il est plus simple de les laisser dans le fichier .fetchmailrc et de les utiliser chaque fois que Fetchmail est exécuté.
Toutefois, il se peut que dans certaines situations, la commande fetchmail doive être exécutée avec d'autres options dans un but bien précis. Étant donné que les options spécifiées à la ligne de commande écrasent les options du fichier de configuration, il est possible d'exécuter des options de commande pour écraser temporairement un paramétrage de .fetchmailrc qui est la cause d'une erreur.
Certaines options utilisées après la commande fetchmail permettent d'obtenir d'importantes informations.
--configdump — Affiche toutes les options possibles sur la base des informations de .fetchmailrc et les valeurs par défaut de Fetchmail. Aucun message électronique n'est téléchargé lorsque vous utilisez cette option, et ce, pour aucun utilisateur.
-s — Exécute Fetchmail en mode silencieux, empêchant tout message, autre que des messages d'erreur, d'apparaître après la commande fetchmail.
-v — Exécute Fetchmail en mode prolixe, affichant toute communication entre Fetchmail et les serveurs de messagerie distants.
-V — Affiche des informations détaillées sur la version utilisée, la liste des options globales et les paramètres à appliquer à chaque utilisateur, y compris le protocole de messagerie et la méthode d'authentification. Lors de l'utilisation de cette option, aucun courrier électronique n'est récupéré pour quelque utilisateur que ce soit.
Ces options peuvent parfois être pratiques pour écraser les valeurs par défaut qui se trouvent souvent dans le fichier .fetchmailrc.
-a — Indique à Fetchmail de télécharger tous les messages depuis le serveur de messagerie distant, qu'ils soient nouveaux ou déjà visualisés. Par défaut, Fetchmail ne télécharge que les nouveaux messages.
-k — Fait en sorte que Fetchmail laisse les messages sur le serveur de messagerie distant après les avoir téléchargés. Cette option écrase le comportement par défaut qui consiste à supprimer les messages après les avoir téléchargés.
-l <nombre-max-octets> — Indique à Fetchmail de ne pas télécharger les messages dont la taille est supérieure à la taille spécifiée et de les laisser sur le serveur de messagerie distant.
--quit — Quitte le processus démon de Fetchmail.
D'autres commandes et options .fetchmailrc sont disponibles dans la page de manuel relative à fetchmail.