Spam filter performance and accuracy improvements (part 7)

This commit is contained in:
mdecimus
2025-12-06 16:59:43 +01:00
parent 84edb5e6db
commit 6c4d28a877
20 changed files with 701 additions and 152 deletions

View File

@@ -10,6 +10,7 @@ use crate::{
use common::{Server, auth::AccessToken};
use email::{
cache::{MessageCacheFetch, mailbox::MailboxCacheAccess},
mailbox::JUNK_ID,
message::ingest::{EmailIngest, IngestEmail, IngestSource},
};
use http_proto::HttpSessionData;
@@ -22,7 +23,7 @@ use jmap_proto::{
};
use mail_parser::MessageParser;
use std::future::Future;
use types::{acl::Acl, id::Id};
use types::{acl::Acl, id::Id, keyword::Keyword};
use utils::map::vec_map::VecMap;
pub trait EmailImport: Sync + Send {
@@ -149,12 +150,16 @@ impl EmailImport for Server {
message: MessageParser::new().parse(&raw_message),
blob_hash: Some(&blob_id.hash),
access_token: import_access_token.as_deref().unwrap_or(access_token),
source: IngestSource::Jmap {
train_classifier: email
.keywords
.iter()
.any(|k| matches!(k, Keyword::Junk | Keyword::NotJunk))
|| mailbox_ids.contains(&JUNK_ID),
},
mailbox_ids,
keywords: email.keywords,
received_at: email.received_at.map(|r| r.into()),
source: IngestSource::Jmap {
train_classifier: true,
},
session_id: session.session_id,
})
.await