diff --git a/src/mimeparser.rs b/src/mimeparser.rs index 6f7a66544..ec7b098a3 100644 --- a/src/mimeparser.rs +++ b/src/mimeparser.rs @@ -825,7 +825,11 @@ fn update_gossip_peerstates( }))); } - if recipients.as_ref().unwrap().contains(&header.addr) { + if recipients + .as_ref() + .unwrap() + .contains(&header.addr.to_lowercase()) + { let mut peerstate = Peerstate::from_addr(context, &context.sql, &header.addr); if let Some(ref mut peerstate) = peerstate { peerstate.apply_gossip(header, message_time); @@ -981,7 +985,7 @@ fn get_attachment_filename(mail: &mailparse::ParsedMail) -> Result { Ok(desired_filename) } -// returned addresses are normalized. +// returned addresses are normalized and lowercased. fn get_recipients, T: Iterator>(headers: T) -> HashSet { let mut recipients: HashSet = Default::default(); @@ -993,11 +997,11 @@ fn get_recipients, T: Iterator>(headers: T) -> Hash for addr in addrs.iter() { match addr { mailparse::MailAddr::Single(ref info) => { - recipients.insert(addr_normalize(&info.addr).into()); + recipients.insert(addr_normalize(&info.addr).to_lowercase()); } mailparse::MailAddr::Group(ref infos) => { for info in &infos.addrs { - recipients.insert(addr_normalize(&info.addr).into()); + recipients.insert(addr_normalize(&info.addr).to_lowercase()); } } } diff --git a/test-data/message/mail_with_cc.txt b/test-data/message/mail_with_cc.txt index 02b749ffd..3f9254e47 100644 --- a/test-data/message/mail_with_cc.txt +++ b/test-data/message/mail_with_cc.txt @@ -9,6 +9,6 @@ message-id: <2dfdbde7@example.org> Date: Sat, 14 Sep 2019 19:00:13 +0200 From: lmn To: abc -CC: def +CC: def hi