Files
2026-09-10 09:24:22 -06:00

18 lines
707 B
Python

"""Cálculo de huellas (fingerprints) para detectar mensajes ya migrados.
Los UID de IMAP no son estables entre servidores, así que la identidad de un
mensaje se basa preferentemente en su ``Message-ID``. Cuando el mensaje no
tiene ``Message-ID`` (raro, pero ocurre con correo mal formado), se recurre a
una combinación de tamaño y fecha interna.
"""
import hashlib
def compute_fingerprint(message_id: str | None, size: int, internaldate_raw: str, extra: str | None = None) -> str:
if message_id:
return "mid:" + message_id.strip()
base = f"{size}:{internaldate_raw}:{extra or ''}"
digest = hashlib.sha256(base.encode("utf-8", "replace")).hexdigest()
return "nomid:" + digest