Fetchmail, um das ursprüngliche Datum und die Uhrzeit beizubehalten

2194
usr-local-ΕΨΗΕΛΩΝ

Ich bin dabei, mein eigenes IMAP einzurichten, und ich muss E-Mails sammeln, die ich in den letzten 9 Jahren auf meinem eigenen Server erhalten habe (und von ein paar E-Mail-Boxen fortlaufend synchronisieren).

Ich habe fetchmail erfolgreich mit einem Testkonto für eine leere Mailbox eingerichtet. Immer wenn ich E-Mails an die Zielmailbox schicke, wird sie über POP3 in meine Box aufgenommen. Aber ich entdeckte, dass die Botschaft, die ich in Windows Mail geliefert bin zeigt das Datum / Zeit, wenn fetchmaillief. Dies kann für neue E-Mails angemessen sein, aber für die Verlaufsverfolgung wirklich ungeeignet.

Meine .fetchmailrcDatei * wird momentan angezeigt

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

Mein Posteingang wird mit Postfix & Dovecot mit MaildirFormat konfiguriert . Ich habe POP3 für fetchmail gewählt, da es die Nachricht löscht, sobald sie mit maildir synchronisiert wurde.

Wie kann ich feststellen, fetchmaildass neue E-Mails, die in Maildir abgelegt wurden, mit dem Datum und der Uhrzeit genau auf dem Server übereinstimmen müssen ?

Ich meine, wenn ich meine Geschichte mit den anotherbox@example.org9 Jahren Mail synchronisieren wollte, werden alle heute datiert!

Zum Beispiel schickte ich mir um 14:59 eine Test-E-Mail an redacted@fastwebnet.it, öffnete das Webmail um um fastwebnet.itzu bestätigen, dass 14:59 die "offizielle" Zeit war, und lief dann fetchmailum 15:30 von meinem Server ab. Windows Mail zeigte, dass die E-Mail-Zeit 15:30 statt 14:59 Uhr war.

Aktualisierung

Aus dem Kommentar und dem Lesen der Dokumentation wird deutlich, dass fetchmail normalerweise einen ReceivedHeader oben in der E-Mail hinzufügt, sodass der Client erkennt, dass die E-Mail brandneu ist.

Ich lief auch fetchmailim verbose Modus, diesmal mit IMAP. Es scheint, dass standardmäßig E-Mails über SMTP abgelegt werden. Hier liegt also das Problem. Wenn mein Server eine E-Mail über SMTP erhält, die in Maildir abgelegt wird, wird davon ausgegangen, dass die E-Mail brandneu ist.

* Ich habe meine Fragen aus der ursprünglichen Schrift aktualisiert

1
fetchmail schreibt das `Date`-Feld nicht neu. Das Maildrop-Datum wird in ein "Received" -Feld oben in den Kopfzeilen eingefügt, jedoch nicht in "Date", das normalerweise von einer MUA angezeigt wird. Daniel Vérité vor 9 Jahren 0

2 Antworten auf die Frage

2
Daniel Vérité

Es scheint, dass das Datum, das dem Benutzer von Windows Mail zur Verfügung gestellt wird, nicht aus dem DateHeaderfeld stammt, sondern aus dem neuesten ReceivedFeld ( ReceivedFelder sind hauptsächlich dazu gedacht, eine Nachricht über Zustellungsgateways zu verfolgen, wie in RFC5321 und RFC5322 erwähnt ).

Wenn fetchmail eine Nachricht übermittelt, auch wenn die mdaOption (ohne SMTP) verwendet wird, fügt es standardmäßig ein eigenes ReceivedFeld mit dem aktuellen Datum und der aktuellen Uhrzeit hinzu.

Glücklicherweise gibt es eine Option zum Deaktivieren:

Die Option --invisible (Schlüsselwort: set unsichtbar) versucht, fetchmail unsichtbar zu machen. Normalerweise verhält sich fetchmail wie jeder andere MTA - es generiert einen Received-Header in jeder Nachricht, der seinen Platz in der Übertragungskette beschreibt, und teilt dem MTA mit, dass die E-Mail von der Maschine geleitet wird, auf der Fetchmail selbst läuft. Wenn die Option unsichtbar aktiviert ist, wird der Received-Header unterdrückt und fetchmail versucht, den MTA zu fälschen, an den er weitergeleitet wird, um zu denken, dass er direkt vom Mailserver-Host stammt.

Ich glaube, Sie möchten diese Option mit einer Nicht-SMTP-Zustellung kombinieren, zum Beispiel mit --mda /usr/lib/dovecot/deliver. Andernfalls fügt der SMTP-Server Receivednach fetchmail wahrscheinlich ein eigenes Feld hinzu.

Hat versucht, "set unsichtbar" am oberen Rand des .fetchmailrc hinzuzufügen, ist das der richtige Ort? Ihre Ratschläge haben (noch) nicht funktioniert usr-local-ΕΨΗΕΛΩΝ vor 9 Jahren 0
Ok, dann habe ich nach der "poll" -Anweisung versucht, "unsichtbar" zu setzen, und ich hole Gruppen von 2 Mails gleichzeitig ab. Wenn sie zugestellt werden, sehen sie aus wie neue E-Mails (kein Problem), scheinen aber die Daten korrekt zu sein. usr-local-ΕΨΗΕΛΩΝ vor 9 Jahren 0
0
usr-local-ΕΨΗΕΛΩΝ

Da es sich bei der Frage um eine "anfängliche" hystorische Migration der Mailbox handelte, gibt es verschiedene brute forceAnsätze: Verschieben Sie E-Mails aus dem alten IMAP in den neuen Posteingang. Von da an funktioniert der fetchmail-Daemon problemlos mit neuer Mail

Über Client (zB Outlook)

Synchronisieren Sie beide Mailboxen, wählen Sie alle E-Mails (oder Gruppen von E-Mails) aus und ziehen Sie sie per Drag & Drop in den neuen Posteingang. Dies erfordert einige Zeit und manuelle Arbeit, kann jedoch keinen oder geringen Schaden verursachen, insbesondere wenn Sie E-Mails in Gruppen verschieben

Über Mülldeponie

Da ich Zugriff auf den Server habe, kann ein Tool wie imap2maildir eine IMAP-Box in eine Maildir-kompatible Box speichern . Durch das Zusammenführen des ursprünglichen Maildir mit dem neuen wird die Nachrichtensammlung korrekt initialisiert

Mit jedem anderen kommerziellen Tool

Es gibt eine Vielzahl von Tools für die IMAP-Migration / -Synchronisation. Es gibt sogar Online-Tools, für die Sie Ihr Boxkennwort angeben müssen (zu Ihrer Sicherheit können Sie das Kennwort während der Migration in ein temporäres Kennwort ändern.) Sie müssen sich darauf verlassen, dass der Dienst Ihre persönlichen Daten nicht speichert.