Smail/server/dto/parsemail
Cd1s 23c2fbbdd5
fix: generate Message-ID once and persist to DB (#328)
Previously, a random suffix was generated every time BuildBytes or
ForwardBuildBytes was called, causing IMAP/POP3 clients to treat the
same message as a new message on every sync and breaking conversation
threading.

Changes:
- Add msg_id column to the email table (synced automatically via Sync2)
- Generate a crypto/rand-based RFC-compliant Message-ID once at email
  creation time (send.go for outgoing, read_content.go for incoming)
- Preserve the original Message-ID from externally received emails
- Load the persisted MsgID when rebuilding Email from DB records
- Use the stored MsgID in BuildBytes, ForwardBuildBytes and the IMAP
  ENVELOPE response; fall back to the old numeric format for legacy rows

Fixes the MSGID_SHORT SpamAssassin penalty and Gmail rejection while
keeping Message-IDs stable across syncs.

Co-authored-by: root <root@Claw-ai.tail1478c.ts.net>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 11:43:59 +08:00
..
dkim_test.go feature/v2.8.3 (#269) 2025-04-20 09:59:56 +08:00
dkim.go feature/v2.8.3 (#269) 2025-04-20 09:59:56 +08:00
email_test.go feature/v2.8.6 (#304) 2025-08-30 20:25:11 +08:00
email_xss_test.go Fix xss feature (#290) 2025-07-01 15:40:41 +08:00
email.go fix: generate Message-ID once and persist to DB (#328) 2026-04-13 11:43:59 +08:00
encodedword.go first commit 2023-07-30 17:59:25 +08:00