保存IMAP审查诊断检查点

This commit is contained in:
smail 2026-09-06 08:07:12 +08:00
parent d772abdb86
commit 1c8a600d79
2 changed files with 11 additions and 0 deletions

View File

@ -166,6 +166,7 @@ func (s *serverSession) Fetch(w *imapserver.FetchWriter, numSet imap.NumSet, opt
end = maxUID
}
}
log.WithContext(s.ctx).Infof("IMAP FETCH UID range start=%d end=%d mailbox=%s", start, end, s.currentMailbox)
emailList, err := list.GetEmailListByGroup(s.ctx, s.currentMailbox, list.ImapListReq{
Star: start,
End: end,
@ -174,6 +175,7 @@ func (s *serverSession) Fetch(w *imapserver.FetchWriter, numSet imap.NumSet, opt
log.WithContext(s.ctx).WithError(err).Error("query IMAP messages for UID fetch failed")
return &imap.Error{Type: imap.StatusResponseTypeNo, Text: "Fetch failed"}
}
log.WithContext(s.ctx).Infof("IMAP FETCH UID result count=%d", len(emailList))
if err := write(s.ctx, w, emailList, options); err != nil {
return err
}
@ -319,6 +321,7 @@ func write(ctx *context.Context, w *imapserver.FetchWriter, emailList []*respons
if options.UID {
writer.WriteUID(uid)
}
log.WithContext(ctx).Infof("IMAP FETCH write sequence=%d uid=%d ue_id=%d", sequence, uid, email.UeId)
if options.Envelope {
env := buildEnvelope(email, traEmail)
writer.WriteEnvelope(env)

View File

@ -270,6 +270,13 @@ func getEmailListByUidList(ctx *context.Context, groupName string, req ImapListR
if err := db.Instance.SQL(sql, params...).Find(&relations); err != nil {
return nil, fmt.Errorf("query mailbox UID list: %w", err)
}
if len(relations) > 0 {
for _, relation := range relations {
if relation != nil {
fmt.Printf("IMAP UID relation id=%d email_id=%d status=%d group_id=%d\n", relation.ID, relation.EmailID, relation.Status, relation.GroupId)
}
}
}
return hydrateIMAPEmailResponses(relations)
}
@ -330,6 +337,7 @@ func hydrateIMAPEmailResponses(relations []*response.UserEmailUIDData) ([]*respo
if err := db.Instance.Table("email").Select("*").Where(Eq{"id": emailIDs}).Find(&stored); err != nil {
return nil, fmt.Errorf("query mailbox messages: %w", err)
}
fmt.Printf("IMAP hydrate email_ids=%v stored=%d\n", emailIDs, len(stored))
messageByID := make(map[int]*response.EmailResponseData, len(stored))
for _, message := range stored {
if message != nil {