Smail/server/models
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
..
email.go fix: generate Message-ID once and persist to DB (#328) 2026-04-13 11:43:59 +08:00
group.go Feature/v2.8.0 (#231) 2025-01-04 16:23:07 +08:00
rule.go V2.4.7 (#112) 2024-04-30 14:43:37 +08:00
session.go bug fix 2024-04-20 09:10:13 +08:00
user_email.go feature/v2.8.4 (#277) 2025-05-10 09:31:23 +08:00
User.go V2.5.0 (#132) 2024-07-02 21:02:00 +08:00
version.go V2.5.0 (#132) 2024-07-02 21:02:00 +08:00