Fetchmail pour conserver la date / heure d'origine

1

Je configure mon propre IMAP et je dois rassembler les courriels reçus au cours des 9 dernières années sur mon propre serveur (et synchroniser en permanence à partir de quelques boîtes aux lettres).

J'ai réussi à configurer fetchmail avec un compte de test sur une boîte aux lettres vide. Chaque fois que j'enverrai un courrier dans la boîte aux lettres cible, il sera récupéré via POP3 dans ma boîte. Mais j'ai découvert que le message que je recevais dans Windows Mail indique la date et l'heure de l' fetchmailexécution. Cela peut être approprié pour les nouveaux messages, mais vraiment inapproprié pour le suivi de l'historique.

Mon .fetchmailrcfichier actuellement * montre

set invisible

poll pop.fastwebnet.it proto imap
        user "redacted" pass "redacted" fetchall
        mda "/usr/lib/dovecot/deliver"

Ma boîte de réception est configurée avec Postfix & Dovecot avec le Maildirformat. J'ai choisi POP3 pour fetchmail car il supprimera le message une fois synchronisé avec maildir.

Comment puis-je savoir fetchmailque les nouveaux messages déposés dans Maildir doivent correspondre exactement à ceux trouvés sur le serveur, avec une référence à la date et à l'heure ?

Je veux dire, si je suis allé synchroniser mon historique avec [email protected]ces 9 années de courrier accumulées, elles seront toutes datées aujourd'hui!

Par exemple, je me suis envoyé un e-mail d’essai vers 14h59 à, j’ai [email protected]ouvert le courrier électronique à fastwebnet.itpour confirmer que 14h59 était l’heure "officielle", puis je me suis échappé fetchmailde mon serveur à 15h30. Windows Mail a montré que le courrier électronique était à 15h30 au lieu de 14h59.

Mises à jour

D'après les commentaires et en lisant la documentation, il apparaît clairement que fetchmail ajoute normalement un en- Receivedtête en haut de l'e-mail afin que le client détecte que le message est tout neuf.

J'ai aussi couru fetchmailen mode verbeux, cette fois en utilisant IMAP. Il semble que par défaut, il abandonne le courrier via SMTP. C'est là que réside le problème. Si mon serveur reçoit un courrier via SMTP à déposer dans Maildir, cela supposera que le courrier est nouveau.

* J'ai mis à jour mes questions de l'écriture originale

usr-local-ΕΨΗΕΛΩΝ
la source
fetchmail ne réécrit pas le Datechamp. Il place la date du dépôt de courrier dans un Receivedchamp en haut des en-têtes, mais pas dans Date, qui est celui qui est normalement affiché par un MUA.
Daniel Vérité

Réponses:

2

Il semble que la date indiquée à l'utilisateur par Windows Mail ne provient pas du Datechamp d'en-tête, mais du dernier Receivedchamp (les Receivedchamps sont principalement conçus pour tracer un message via des passerelles de remise, comme indiqué dans les RFC5321 et RFC5322 ).

Lorsque fetchmail envoie un message, même avec l' mdaoption (sans utiliser SMTP), il ajoute par défaut son propre Receivedchamp avec la date et l'heure actuelles.

Heureusement, il offre une option pour désactiver ceci:

L' option --invisible (keyword: set invisible) essaie de rendre fetchmail invisible. Normalement, fetchmail se comporte comme tout autre MTA - il génère un en-tête Reçu dans chaque message décrivant sa place dans la chaîne de transmission, et indique au MTA qu'il transmet à lui-même que le courrier provient de la machine sur laquelle fetchmail s'exécute. Si l'option invisible est activée, l'en-tête Received est supprimé et fetchmail tente d'usurper le MTA auquel il s'adresse en lui faisant croire qu'il provient directement de l'hôte du serveur de messagerie.

Je pense que vous souhaitez combiner cette option avec une livraison non-SMTP, par exemple avec --mda /usr/lib/dovecot/deliver. Sinon, le serveur SMTP ajouterait probablement son propre Receivedchamp après fetchmail.

Daniel Vérité
la source
J'ai essayé d'ajouter "set invisible" en haut du fichier .fetchmailrc, est-ce le bon endroit? Vos deux conseils n'ont pas encore fonctionné
usr-local-ΕΨΗΕΛΩΝ
Ok, alors, j’ai essayé "set invisible" après la déclaration "poll" et je vais chercher des groupes de 2 mails à la fois. Quand ils sont livrés, ils ressemblent à du nouveau courrier (pas de problème), mais il semble que les dates soient correctes.
usr-local-ΕΨΗΕΛΩΝ
0

Étant donné que la question visait à effectuer une migration hystorique "initiale" de la boîte aux lettres, différentes brute forceapproches sont possibles: déplacer les courriers électroniques de l'ancien IMAP vers une nouvelle boîte de réception. À partir de là, le démon fetchmail fonctionnera correctement avec les nouveaux messages

Via le client (par exemple, Outlook)

Synchronisez les deux boîtes aux lettres, sélectionnez tous les courriels (ou tous les groupes) et faites-les glisser-déposer ou les copier-coller dans la nouvelle boîte de réception. Cela prendra du temps et du travail manuel, mais ne peut causer que peu ou pas de dommages, surtout si vous déplacez des courriels en groupes

Via Dump

Depuis que j'ai accès au serveur, un outil tel que imap2maildir peut vider une boîte IMAP dans une boîte compatible Maildir. La fusion du Maildir d'origine avec le nouveau initialise correctement la collecte des messages

Via tout autre outil commercial spécifique

Il existe de nombreux outils conçus pour la migration / synchronisation IMAP. Il existe même des outils en ligne pour lesquels vous devez fournir votre mot de passe de boîte (pour votre sécurité, vous pouvez le remplacer par un mot de passe temporaire lors de la migration), et vous devez faire confiance au service pour ne pas conserver vos données personnelles.

usr-local-ΕΨΗΕΛΩΝ
la source