Fetchmail para mantener la fecha / hora original

1

Estoy configurando mi propio IMAP y necesito reunir los correos electrónicos recibidos durante los últimos 9 años en mi propio servidor (y sincronizar continuamente desde algunos buzones de correo electrónico).

He configurado con éxito fetchmail con una cuenta de prueba en un buzón vacío. Cada vez que envío un correo al buzón de destino, se recogerá a través de POP3 en mi casilla. Pero descubrí que el mensaje que recibo en Windows Mail muestra la fecha / hora en que se fetchmailejecutó. Esto puede ser apropiado para el correo nuevo, pero realmente inapropiado para el seguimiento del historial.

Mi .fetchmailrcarchivo actualmente * muestra

set invisible

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

Mi bandeja de entrada está configurada usando Postfix y Dovecot con Maildirformato. Elegí POP3 para fetchmail porque eliminará el mensaje una vez sincronizado con maildir.

¿Cómo puedo saber fetchmailque el correo nuevo que se ha caído en Maildir debe coincidir exactamente con lo encontrado en el servidor, con referencia a la fecha y la hora ?

Quiero decir, si fui a sincronizar mi historia de los [email protected]9 años acumulados de correo, ¡todos ellos estarán fechados hoy!

Por ejemplo, me envié un correo electrónico de prueba aproximadamente a las 14:59 [email protected], abrí el correo web a las fastwebnet.it14:59 para confirmar que era la hora "oficial", y luego salí fetchmailde mi servidor a las 15:30. Windows Mail mostró que la hora del correo electrónico era las 15:30 en lugar de las 14:59.

Actualizaciones

Del comentario y al leer la documentación, parece claro que fetchmail normalmente agrega un Receivedencabezado en la parte superior del correo electrónico para que el cliente detecte que el correo es nuevo.

También corrí fetchmailen modo detallado, esta vez usando IMAP. Parece que, por defecto, deja caer el correo a través de SMTP, así que ahí es donde radica el problema. Si mi servidor recibe un correo a través de SMTP para enviarlo a Maildir, asumirá que el correo electrónico es nuevo.

* He actualizado mis preguntas de la escritura original

usr-local-ΕΨΗΕΛΩΝ
fuente
fetchmail no reescribe el Datecampo. Pone la fecha de maildrop en un Receivedcampo en la parte superior de los encabezados, pero no en Date, que es el que normalmente muestra un MUA.
Daniel Vérité

Respuestas:

2

Parece que la fecha expuesta al usuario por Windows Mail no proviene del Datecampo de encabezado, sino del último Receivedcampo (los Receivedcampos están destinados principalmente a rastrear un mensaje a través de las puertas de enlace de entrega, como se menciona en RFC5321 y RFC5322 ).

Cuando fetchmail entrega un mensaje, incluso con la mdaopción (sin usar SMTP), por defecto agrega su propio Receivedcampo con la fecha y hora actuales.

Afortunadamente, ofrece una opción para deshabilitar esto:

La opción --invisible (palabra clave: set invisible) intenta hacer que fetchmail sea invisible. Normalmente, fetchmail se comporta como cualquier otro MTA: genera un encabezado Recibido en cada mensaje que describe su lugar en la cadena de transmisión y le dice al MTA que reenvía que el correo proveniente de la máquina en la que se está ejecutando fetchmail. Si la opción invisible está activada, el encabezado Recibido se suprime y fetchmail intenta falsificar el MTA al que reenvía para que piense que proviene directamente del host del servidor de correo.

Creo que desea combinar esta opción con una entrega no SMTP, por ejemplo con --mda /usr/lib/dovecot/deliver. De lo contrario, el servidor SMTP probablemente agregaría su propio Receivedcampo después de fetchmail.

Daniel Vérité
fuente
Intenté agregar "set invisible" en la parte superior de .fetchmailrc, ¿es ese el lugar correcto? Ambos consejos no funcionaron (todavía)
usr-local-ΕΨΗΕΛΩΝ
De acuerdo, intenté "configurar invisible" después de la declaración de "encuesta" y estoy buscando grupos de 2 correos a la vez. Cuando se entregan, parecen correo nuevo (no hay problema), pero parece que las fechas son correctas.
usr-local-ΕΨΗΕΛΩΝ
0

Dado que el alcance de la pregunta era realizar una migración histórica "inicial" del buzón, aquí hay diferentes brute forceenfoques: mover los correos electrónicos de IMAP antiguo a la nueva bandeja de entrada. A partir de ese momento, fetchmail daemon funcionará bien con el correo nuevo.

Vía cliente (por ejemplo, Outlook)

Sincronice ambos buzones, seleccione todos (o grupos de) correos electrónicos y arrástrelos y suéltelos o córtelos y péguelos en la nueva Bandeja de entrada. Esto tomará algo de tiempo y trabajo manual, pero no puede causar ningún daño, especialmente si mueve correos electrónicos en grupos.

Vía volcado

Como tengo acceso al servidor, una herramienta como imap2maildir puede volcar un cuadro IMAP en un cuadro compatible con Maildir. Fusionar el Maildir original con el nuevo inicializa la recopilación de mensajes correctamente

A través de cualquier otra herramienta comercial específica

Hay muchas herramientas hechas para la migración / sincronización IMAP. Incluso hay herramientas en línea, a las que debe proporcionar su contraseña de caja (para su seguridad, puede cambiar la contraseña a una temporal durante la migración), y debe confiar en el servicio para no mantener sus datos personales.

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