Fetchmail, чтобы сохранить оригинальную дату / время

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

Я настраиваю свой собственный IMAP, и мне нужно собирать электронные письма, полученные в течение последних 9 лет, на моем собственном сервере (и непрерывно синхронизироваться из нескольких почтовых ящиков).

Я успешно настроил fetchmail с тестовой учетной записью в пустом почтовом ящике. Всякий раз, когда я отправляю почту на целевой почтовый ящик, она будет отправлена ​​через POP3 в мой ящик. Но я обнаружил, что сообщение, которое я доставляю в Почту Windows, показывает дату / время при fetchmailзапуске. Это может быть подходящим для новой почты, но на самом деле не подходит для отслеживания истории.

Мой .fetchmailrcфайл в настоящее время * показывает

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

Мой почтовый ящик настроен с использованием Postfix & Dovecot с Maildirформатом. Я выбрал POP3 для fetchmail, потому что он удалит сообщение после синхронизации с maildir.

Как я могу сказать, fetchmailчто новая почта, отправленная в Maildir, должна точно соответствовать той, которая найдена на сервере, со ссылкой на дату и время ?

Я имею в виду, если я anotherbox@example.orgпойду синхронизировать свою историю с накопленными за 9 лет почтой, все они будут датированы сегодня!

Например, я отправил себе тестовое электронное письмо в 14:59 redacted@fastwebnet.it, открыл веб- почту в, fastwebnet.itчтобы подтвердить, что 14:59 было «официальным» временем, а затем запустил fetchmailсвой сервер в 15:30. Почта Windows показала, что время электронной почты было 15:30 вместо 14:59.

Обновления

Из комментария и прочтения документации становится ясно, что fetchmail обычно добавляет Receivedзаголовок вверху письма, чтобы клиент обнаружил, что письмо совершенно новое.

Я также бегал fetchmailв подробном режиме, на этот раз используя IMAP. Похоже, что по умолчанию он сбрасывает почту через SMTP, так что вот в чем проблема. Если мой сервер получает почту через SMTP для отправки в Maildir, он будет считать, что электронная почта совершенно новая.

* Я обновил свои вопросы с оригинальной записи

1
fetchmail не переписывает поле `Date`. Он помещает дату maildrop в поле «Received» в верхней части заголовков, но не в поле «Date», которое обычно отображается MUA. Daniel Vérité 9 лет назад 0

2 ответа на вопрос

2
Daniel Vérité

It appears that the date exposed to the user by Windows Mail does not come from the Date header field, but rather from the latest Received field (Received fields are primarily meant to trace a message through delivery gateways, as mentioned in RFC5321 and RFC5322).

When fetchmail delivers a message, even with the mda option (not using SMTP), by default it adds its own Received field with the current date and time.

Fortunately it provides an option to disable this:

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.

I believe you want to combine this option with a non-SMTP delivery, for instance with --mda /usr/lib/dovecot/deliver. Otherwise the SMTP server would probably add its own Received field after fetchmail.

Пытался добавить «set invisible» вверху .fetchmailrc, это правильное место? Оба ваших совета не сработали (пока) usr-local-ΕΨΗΕΛΩΝ 9 лет назад 0
Итак, я попытался «установить невидимое» после выражения «опрос», и я получаю группы по 2 письма за раз. Когда они доставляются, они выглядят как новая почта (без проблем), но кажется, что даты верны. usr-local-ΕΨΗΕΛΩΝ 9 лет назад 0
0
usr-local-ΕΨΗΕΛΩΝ

Поскольку задача заключалась в том, чтобы выполнить «первоначальную» историческую миграцию почтового ящика, здесь есть разные brute forceподходы: переместить электронные письма из старого IMAP в новый почтовый ящик. С тех пор демон fetchmail будет нормально работать с новыми почтой.

Через клиента (например, Outlook)

Синхронизируйте оба почтовых ящика, выберите все (или группы) электронных писем и перетащите их, вставьте или вставьте в новую папку «Входящие». Это займет некоторое время и ручную работу, но может не нанести никакого или небольшого ущерба, особенно если вы перемещаете электронные письма в группах

Через свалку

Поскольку у меня есть доступ к серверу, такой инструмент, как imap2maildir, может выгрузить ящик IMAP в ящик, совместимый с Maildir. Слияние исходного Maildir с новым правильно инициализирует коллекцию сообщений

С помощью любого другого конкретного коммерческого инструмента

Существует множество инструментов для миграции / синхронизации IMAP. Существуют даже онлайн-инструменты, которым вы должны предоставить свой пароль от ящика (в целях безопасности вы можете сменить пароль на временный во время миграции), и вы должны доверять службе, чтобы не хранить ваши личные данные.

Похожие вопросы