Emails · 5 min read · Jan 01, 2026

Récupération des e-mails depuis des serveurs distants avec getmail (Debian Etch)

Récupération des e-mails depuis des serveurs distants avec getmail (Debian Etch)

Version 1.1
Auteur : Falko Timme

Getmail est un programme pour récupérer des e-mails depuis des serveurs distants ; il est très similaire à fetchmail, mais plus flexible. Par exemple, il peut être configuré pour livrer des mails directement dans une boîte aux lettres Maildir ou mbox sans avoir besoin d’un MTA tel que Postfix, mais bien sûr, il peut aussi acheminer les mails via un MTA si vous le souhaitez. Getmail peut utiliser des filtres appelés tels que SpamAssassin et ClamAV pour scanner les mails, et vous pouvez même dire à getmail de supprimer les mails sur le serveur d’origine seulement après un certain nombre de jours.

Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Note préliminaire

J’ai testé getmail sur un système Debian Etch avec un utilisateur local appelé falko qui a l’adresse e-mail locale [email protected].

2 Installer getmail

Pour installer getmail, il suffit d’exécuter

apt-get install getmail4

en tant que root.

3 Configurer getmail

Getmail peut être configuré via des fichiers de configuration par utilisateur, et getmail peut ensuite être exécuté par cet utilisateur. Pour faire fonctionner getmail automatiquement, nous pouvons créer un job cron pour cet utilisateur.

Dans ce chapitre, je suppose que vous êtes connecté en tant qu’utilisateur falko, pas root !

Getmail recherche le fichier de configuration ~/.getmail/getmailrc, donc d’abord nous devons créer le répertoire ~/.getmail avec des permissions de 0700 :

mkdir -m 0700 ~/.getmail

Ensuite, nous créons le fichier de configuration ~/.getmail/getmailrc. Un fichier getmailrc doit avoir au moins une section [retriever] et une section [destination].

vi ~/.getmail/getmailrc

| [retriever] type = SimplePOP3Retriever server = pop.someprovider.tld username = [email protected] password = secret [destination] type = Maildir path = ~/Maildir/ |

L’exemple ci-dessus suppose que falko a un compte mail avec le nom d’utilisateur [email protected] et le mot de passe secret sur le serveur pop.someprovider.tld, et qu’il a un compte Maildir sur ce serveur, avec ~/Maildir/ étant son répertoire Maildir.

C’est déjà suffisant pour configurer getmail. falko pourrait maintenant récupérer des e-mails depuis le serveur distant simplement en exécutant

getmail

Bien sûr, falko ne veut pas démarrer la récupération manuellement toutes les quelques minutes, donc nous créons un job cron pour lui. Toujours en tant qu’utilisateur falko, nous exécutons

crontab -e

et créons un job cron comme celui-ci (qui démarrerait getmail toutes les cinq minutes) :

| */5 * * * * /usr/bin/getmail &> /dev/null |

Maintenant, supposons que falko n’a pas de compte Maildir, mais un compte mbox sur ce serveur (/var/mail/falko). Tout ce que nous avons à faire est de modifier la section [destination] dans ~/.getmail/getmailrc, par exemple comme ceci :

vi ~/.getmail/getmailrc

| [retriever] type = SimplePOP3Retriever server = pop.someprovider.tld username = [email protected] password = secret [destination] type = Mboxrd path = /var/mail/falko |

Dans l’exemple suivant, nous voulons acheminer les e-mails que nous récupérons du serveur distant via un MTA tel que Postfix (je suppose que Postfix est déjà installé et fonctionne). Postfix peut alors s’occuper de savoir s’il doit livrer les mails à Maildir ou mbox, et il peut également invoquer des scanners de spam et de virus, par exemple via amavisd-new.

vi ~/.getmail/getmailrc

| [retriever] type = SimplePOP3Retriever server = pop.someprovider.tld username = [email protected] password = secret [destination] type = MDA_external path = /usr/sbin/sendmail arguments = ("-i", "-bm", "[email protected]") unixfrom = true |

(Comme vous le voyez, nous disons à getmail que l’adresse e-mail locale de falko est [email protected].)

L’option -i dans la ligne des arguments est importante (merci à Chris Moules pour l’astuce) :

*Le problème est que certains mails, lorsqu’ils sont livrés à sendmail, seront tronqués. Cela peut se produire lorsque le corps du message extrait de la source contient une ligne avec un seul point (.). Dans SMTP, cela est utilisé pour indiquer la fin du message. Lorsque vous invoquez sendmail sur la ligne de commande, le comportement par défaut est de terminer le message à EOF ou à un seul point.

Citation de la page de manuel de Postfix sendmail :

Par défaut, Postfix sendmail(1) lit un message à partir de l’entrée standard jusqu’à EOF ou jusqu’à ce qu’il lise une ligne contenant uniquement un caractère ..

Citation de la page de manuel de sendmail :

Sans aucun drapeau, sendmail lit son entrée standard jusqu’à une fin de fichier ou une ligne consistant uniquement en un point unique et envoie une copie du message trouvé à toutes les adresses listées.

J’avais reçu des avis de clients que, parfois, leur e-mail était ‘corrompu’, ‘manquant’ ou ‘tronqué’. Après avoir examiné les messages sur notre serveur et ce qui était sur leur système de messagerie, il était clair qu’il y avait un problème.

Une petite recherche a montré que le sendmail local devait être invoqué avec l’option ‘-i’ :

Citation de la page de manuel de Postfix sendmail :

-i Lorsque vous lisez un message à partir de l’entrée standard, ne traitez pas une ligne contenant uniquement un caractère . comme la fin de l’entrée.

Cela fait que sendmail attend jusqu’à la fin du fichier avant que le message soit soumis.*

Vous pouvez tester l’option -i avec un e-mail comme le suivant :

``

Four: …. Three: … Two: .. One: .


#### 3.1 Options Nous pouvons également ajouter une section [options] à ~/.getmail/getmailrc où nous pouvons modifier le comportement par défaut de getmail, par exemple comme ceci : vi ~/.getmail/getmailrc | ``` [...] [options] verbose = 1 read_all = false delete = true message_log_syslog = true ``` | Les options ci-dessus disent à getmail d'imprimer des messages sur les messages récupérés, de ne récupérer que les nouveaux messages, de supprimer les messages du serveur distant après récupération, et de journaliser dans le syslog. Si vous souhaitez supprimer uniquement les mails de plus de dix jours, vous pouvez modifier la section [options] comme suit : vi ~/.getmail/getmailrc `` | [...] [options] verbose = 1 read_all = false delete_after = 10 message_log_syslog = true | Vous pouvez en apprendre davantage sur toutes les options disponibles sur http://pyropus.ca/software/getmail/configuration.html#conf-options.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.