Use latest received header in JMAP Email/import - credits to @apexskier (closes #2374)

This commit is contained in:
mdecimus
2025-12-18 14:44:58 +01:00
parent 9237e76661
commit c06e88cf7d

View File

@@ -437,12 +437,9 @@ impl EmailIngest for Server {
is_spam is_spam
} }
IngestSource::Jmap { IngestSource::Jmap { train_classifier } | IngestSource::Imap { train_classifier } => {
train_classifier: true, // Determine spam training
} if train_classifier && self.core.spam.enabled {
| IngestSource::Imap {
train_classifier: true,
} if self.core.spam.enabled => {
if params.keywords.contains(&Keyword::Junk) { if params.keywords.contains(&Keyword::Junk) {
train_spam = Some(true); train_spam = Some(true);
} else if params.keywords.contains(&Keyword::NotJunk) { } else if params.keywords.contains(&Keyword::NotJunk) {
@@ -454,6 +451,26 @@ impl EmailIngest for Server {
} else if params.mailbox_ids[0] == INBOX_ID { } else if params.mailbox_ids[0] == INBOX_ID {
train_spam = Some(false); train_spam = Some(false);
} }
}
// Set receivedAt if not present
if params.received_at.is_none() {
params.received_at = message
.root_part()
.headers()
.iter()
.filter_map(|header| {
if let (HeaderName::Received, HeaderValue::Received(received)) =
(&header.name, &header.value)
{
received.date.map(|dt| dt.to_timestamp() as u64)
} else {
None
}
})
.max();
}
false false
} }
_ => false, _ => false,