Réseau - Web - GNU/Linux

2018 14 février

Utiliser un compte extérieur avec fetchmail - Debian 9.0 Stretch

Rédigé par Marc GUILLAUME | Aucun commentaire
Article précédent Mail façon FAI - Debian 9.0 Stretch Article suivant

Cet aspect n'est pas traité dans le document de Christophe Haas, mais peut être utile.

Qu'est-ce que fetchmail ?

fetchmailest un programme déjà ancien, écrit à l'origine par Eric S. Raymond. Il sert, comme son nom l'indique, à relever des mails sur une machine (serveur ou poste de travail) depuis différents comptes extérieurs, soit à la demande, soit à intervalle régulier en tournant en mode démon. A l'origine ce programme était destiné à être utilisé avec les connexions non permanentes à Internet, telles qu'on les connaissait majoritairement jusqu'à la fin des années 1990. Il n'a cessé d'évoluer et offre une panoplie de fonctionnalités assez impressionnante, pouvant aller jusqu'à pratiquement remplacer un mta.

L'utilisation que nous allons voir ici correspond à un besoin très précis et ne fera appel qu'à une infime partie des possibilités de fetchmail.

Il se trouve que je possède une adresse mail sur un domaine hébergé chez un opérateur depuis une vingtaine d'années, que j'utilise encore cette adresse et que je ne veux pas la ramener sur mon serveur de courrier. En effet, en cas de problème avec mon serveur de mail, j'entends avoir encore quelques adresses externes pour pouvoir, au minimum pouvoir communiquer avec OVH chez qui se trouvent mes serveurs. Il en est de même avec l'adresse chez mon FAI attachée à ma connexion Internet.

Mais l'hébergement mail que je possède correspond à une offre très ancienne, qui est très peu honnéreuse mais n'a pas évolué avec le temps (je soupçonne même que je dois être un des derniers, voir le dernier à utiliser encore cette offre qui a disparu de leur catalogue depuis plus de dix ans). Cet hébergement à l'ancienne ne propose que des connexions pop3. J'ai peu d'espace disque ce qui m'oblige à effacer les mails au fur et à mesure de mes consultations. J'ai donc décidé de les transférer sur mon serveur IMAP, où j'ai beacoup de place et qui est sauvegardé automatiquement quotidiennement. Pour cela j'utilise donc le programme fetchmail.

Installation de fetchmail

Aucune difficulté :

apt install fetchmail

Configuration de fetchmail

fetchmail se configure par deux fichiers /etc/default/fetchmail et /etc/fetchmailrc. Le premier fichier sert à definir si fetchmail doit être lancé en mode démon ou pas. Le second contient les informations qui lui sont nécessaires pour relever les comptes distants.

/etc/default/fetchmail

Ce fichier sert à définir le mode de fonctionnement de fetchmail, soit par un appel explicite, soit en mode démon pour aller automatiquement chercher le courrier à intervalle donné. Si l'on ne le lance pas comme un démon, on peut, par exemple, avec une tâche cron lancer la relève du courrier à des intervalles différents selon différents critères, par exemple toutes les 10 minutes de 9h00 à 19h00 les jours de semaine et toutes les heures en dehors de ces plages de temps et le week-end. On utilise alors les connexions à la demande. Si l'on veut en permanence aller consulter sa ou ses boîtes, par exemple tous les quart d'heure le mode démon est tout à fait approprié. Je l'utilise en mode démon et donc mon fichier /etc/default/fetchmail contient simplement :

# Declare here if we want to start fetchmail. 'yes' or 'no'
START_DAEMON=yes

/etc/fetchmailrc

Ce fichier n'est pas créé par défaut lors de l'installation de fetchmail. Mais il existe un fichier exemple dans /usr/share/doc/fetchmail/examples/fetchmailrc.example qui peut servir de base à la création de votre fichier fetchmailrc :

cp /usr/share/doc/fetchmail/examples/fetchmailrc.example /etc/fetchmailrc

La configuration pour relever un compte imap est aussi simple que celle figurant ci-dessous ;

set daemon 600
set no bouncemail
set syslog
set invisible
set postmaster postmaster@example.org

# The --invisible option (keyword: set invisible) tries to make fetchmail invisible. Normally, fetchmail behaves like any other MTA would
# it generates a Received header into each message describing its place in the chain of transmission, and tells the MTA it forwards to
# that the mail came from the machine fetchmail itself is running on. If the invisible option is on, the Received header is suppressed
# and fetchmail tries to spoof the MTA it forwards to into thinking it came directly from the mailserver host.
#  mda "/usr/lib/dovecot/dovecot-lda  -f %F -d %T"

poll pop.monhebergeur.com
        proto pop3
        user "pop2546"
        pass "BjUiop"
        no keep
        sslcertck
        is "marc@mondomaine.org"
Description des options
set daemon 600
Indique l'intervalle de chaque connexion pour relever le courrier. Ici 600 secondes, soit 10 minutes.
set no bouncemail
Pas de mail de bounce (envoyé en cas d'erreur).
set syslog
Utiliser syslog pour les logs de l'application
set invisible
Supprime l'entête annonçant au serveur distant qu'il a affaire à fetchmail
set postmaster postmaster@example.org
Indique l'adresse mail à qui envoyer des messages d'alerte.
poll pop.monhebergeur.com
L'option poll indique quel serveur pop ou imap interroger
proto pop3
Indique quel protocole utiliser (ce pourrait être imap, etern etc.)
user "pop2546"
Nom d'utilisateur pour s'identifier auprès du serveur interrogé
pass "BjUiop"
Mot de passe de l'utilisateur ci-dessus
no keep
Indique de ne pas conserver de copie du mail sur le serveur. keep fait l'inverse. Ici comme le serveur a très peu d'espace disponible, c'est l'option importante.
sslcertck
Vérifie le certificat ssl du serveur.
is "marc@mondomaine.org"
La boîte mail dans laquelle distribuer le courrier.

Il suffit de définir un tel bloc de données pour chaque adresse mail que l'on veut relever. On pourrait par exemple utiliser le protocole imap au lieu de pop.

Choisir l'adresse de destination

Dans ce cas précis, j'ai créé dans la base de données de mon serveur mon domaine de courrier (ici dans l'exemple mondomaine.org) et l'adresse que je veux relever. Comme en réalité ce n'est pas mon serveur qui est MX pour ce domaine mais que c'est pop.monhebergeur.com, cela entraîne quelques obligations et présente un effet de bord non négligeable signalé ci-dessous.

Comme mon hébergeur a mis en place une signature dkim et un enregistrement spf et dmark je suis obligé de configurer mes clients de mail pour utiliser le serveur smtp fourni par mon hébergeur. Je peux donc envoyer des courriers depuis mon client de mail via ce serveur sous cette identité. Si je le faisais depuis mon propre serveur je pourrais être considéré comme un usurpateur d'identité à cause des contrôles dkim et spf.

Un effet de bord possible est que si un utilisateur dont le domaine et l'adresse sont hébergés sur mon serveur et qui voudrait m'écrire sur mondomaine.org, ne va pas passer par le serveur de mon hébergeur puisque Postfix va voir qu'il possède ce domaine dans sa table de virtual_domains. Le chemin sera plus court, mais je recevrai le mail.

Par contre il ne pourra pas écrire à toute autre adresse sur ce domaine qui ne figurerait pas dans virtual_users. En effet Postfix lui dirait que cet utilisateur n'est pas un utilisateur virtuel connu pour ce domaine dont il croit être responsable. C'est donc une technique à manier avec précaution.

Ce problème peut-être évité si vous utilisez une adresse existante d'un autre domaine, comme si l'adresse que vous relevez était un alias de cette adresse.

Écrire un commentaire

Quelle est la deuxième lettre du mot tzsrf ?

Fil RSS des commentaires de cet article

À propos

Yakati.info - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.034s  - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.info
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml