fix(imap): IMAP/POP3-Import in korrekten Tenant-Index schreiben

IMAP- und POP3-Importer haben Mails immer nur in emails_global
indexiert (TenantID nie gesetzt, idxMgr.Global() statt
ForTenant(tenantID)). Dadurch fehlten neue Mails ab dem letzten
Server-Neustart im Tenant-Index (Suche zeigte veraltete Ergebnisse).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
sysops
2026-06-12 21:15:10 +02:00
parent f32f83ff8e
commit a3bab16f07
3 changed files with 12 additions and 10 deletions
+5 -4
View File
@@ -16,7 +16,7 @@ import (
type Importer struct {
store *Store
mailStore *storage.Store
idx index.Indexer
idxMgr index.TenantIndexer
logger *slog.Logger
TenantID *int64 // optional tenant assignment for stored mails
// PROJ-44: optional OCR enqueue hook, wired from main.go.
@@ -24,11 +24,11 @@ type Importer struct {
}
// NewImporter creates a new Importer wired to the storage and index backends.
func NewImporter(store *Store, mailStore *storage.Store, idx index.Indexer, logger *slog.Logger) *Importer {
func NewImporter(store *Store, mailStore *storage.Store, idxMgr index.TenantIndexer, logger *slog.Logger) *Importer {
return &Importer{
store: store,
mailStore: mailStore,
idx: idx,
idxMgr: idxMgr,
logger: logger,
}
}
@@ -167,9 +167,10 @@ func (imp *Importer) storeAndIndex(raw []byte, log *slog.Logger) error {
HasAttachment: len(pm.Attachments) > 0,
Date: pm.Date,
Size: int64(len(raw)),
TenantID: imp.TenantID,
}
if err := imp.idx.IndexSync(doc); err != nil {
if err := imp.idxMgr.ForTenant(imp.TenantID).IndexSync(doc); err != nil {
log.Warn("failed to index mail", "id", id, "err", err)
// Non-fatal: mail is stored, just not searchable yet
}