Skip to content

Commit

Permalink
v0.3.3
Browse files Browse the repository at this point in the history
  • Loading branch information
mdecimus committed Sep 5, 2023
1 parent a6cd1d6 commit 949b8fc
Show file tree
Hide file tree
Showing 8 changed files with 33 additions and 35 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
@@ -1,3 +1,8 @@
mail-auth 0.3.3
================================
- Bump `mail-parser` dependency to 0.9
- Bump `trust-dns-resolver` dependency to 0.23

mail-auth 0.3.2
================================
- Bump `mail-builder` dependency to 0.3
Expand Down
12 changes: 6 additions & 6 deletions Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "mail-auth"
description = "DKIM, ARC, SPF and DMARC library for Rust"
version = "0.3.2"
version = "0.3.3"
edition = "2021"
authors = [ "Stalwart Labs <hello@stalw.art>"]
license = "Apache-2.0 OR MIT"
Expand All @@ -22,21 +22,21 @@ test = []

[dependencies]
ahash = "0.8.0"
ed25519-dalek = { version = "1.0.1", optional = true }
ed25519-dalek = { version = "1.0", optional = true }
flate2 = "1.0.25"
lru-cache = "0.1.2"
mail-parser = { version = "0.8", git = "https://github.com/stalwartlabs/mail-parser", features = ["ludicrous_mode", "full_encoding"] }
mail-parser = { version = "0.9", git = "https://github.com/stalwartlabs/mail-parser", features = ["ludicrous_mode", "full_encoding"] }
mail-builder = { version = "0.3", git = "https://github.com/stalwartlabs/mail-builder", features = ["ludicrous_mode"] }
parking_lot = "0.12.0"
quick-xml = "0.28"
quick-xml = "0.30"
ring = { version = "0.16.20", optional = true }
rsa = { version = "0.7.0", optional = true }
rsa = { version = "0.7", optional = true }
rustls-pemfile = { version = "1", optional = true }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sha1 = { version = "0.10", features = ["oid"], optional = true }
sha2 = { version = "0.10.6", features = ["oid"], optional = true }
trust-dns-resolver = { version = "0.22.0", features = ["dns-over-rustls", "dnssec-ring"] }
trust-dns-resolver = { version = "0.23", features = ["dns-over-rustls", "dnssec-ring"] }
zip = "0.6.3"

[dev-dependencies]
Expand Down
2 changes: 1 addition & 1 deletion src/common/headers.rs
Expand Up @@ -539,7 +539,7 @@ mod test {

#[test]
fn chained_header_iterator() {
let parts = vec![
let parts = [
&b"From: a\nTo: b\nEmpty:\nMulti: 1\n 2\n"[..],
&b"Subject: c\nReceived: d\n\nhey"[..],
];
Expand Down
19 changes: 3 additions & 16 deletions src/common/message.rs
Expand Up @@ -8,7 +8,7 @@
* except according to those terms.
*/

use mail_parser::{parsers::MessageStream, HeaderValue};
use mail_parser::{parsers::MessageStream, Address, HeaderValue};

use crate::{arc, common::crypto::HashAlgorithm, dkim, AuthenticatedMessage};

Expand Down Expand Up @@ -96,26 +96,13 @@ impl<'x> AuthenticatedMessage<'x> {
}
AuthenticatedHeader::From(name) => {
match MessageStream::new(value).parse_address() {
HeaderValue::Address(addr) => {
if let Some(addr) = addr.address {
message.from.push(addr.to_lowercase());
}
}
HeaderValue::AddressList(list) => {
HeaderValue::Address(Address::List(list)) => {
message.from.extend(
list.into_iter()
.filter_map(|a| a.address.map(|a| a.to_lowercase())),
);
}
HeaderValue::Group(group) => {
message.from.extend(
group
.addresses
.into_iter()
.filter_map(|a| a.address.map(|a| a.to_lowercase())),
);
}
HeaderValue::GroupList(group_list) => {
HeaderValue::Address(Address::Group(group_list)) => {
message
.from
.extend(group_list.into_iter().flat_map(|group| {
Expand Down
12 changes: 6 additions & 6 deletions src/common/resolver.rs
Expand Up @@ -72,7 +72,7 @@ impl Resolver {
capacity: usize,
) -> Result<Self, ResolveError> {
Ok(Self {
resolver: AsyncResolver::tokio(config, options)?,
resolver: AsyncResolver::tokio(config, options),
cache_txt: LruCache::with_capacity(capacity),
cache_mx: LruCache::with_capacity(capacity),
cache_ipv4: LruCache::with_capacity(capacity),
Expand All @@ -91,7 +91,7 @@ impl Resolver {
ptr_capacity: usize,
) -> Result<Self, ResolveError> {
Ok(Self {
resolver: AsyncResolver::tokio(config, options)?,
resolver: AsyncResolver::tokio(config, options),
cache_txt: LruCache::with_capacity(txt_capacity),
cache_mx: LruCache::with_capacity(mx_capacity),
cache_ipv4: LruCache::with_capacity(ipv4_capacity),
Expand Down Expand Up @@ -196,10 +196,10 @@ impl Resolver {
}

let ipv4_lookup = self.resolver.ipv4_lookup(key.as_ref()).await?;
let ips = ipv4_lookup
let ips: Vec<Ipv4Addr> = ipv4_lookup
.as_lookup()
.record_iter()
.filter_map(|r| (*r.data()?.as_a()?).into())
.filter_map(|r| r.data()?.as_a()?.0.into())
.collect::<Vec<_>>();

Ok(self
Expand All @@ -225,7 +225,7 @@ impl Resolver {
let ips = ipv6_lookup
.as_lookup()
.record_iter()
.filter_map(|r| (*r.data()?.as_aaaa()?).into())
.filter_map(|r| r.data()?.as_aaaa()?.0.into())
.collect::<Vec<_>>();

Ok(self
Expand Down Expand Up @@ -325,7 +325,7 @@ impl Resolver {
match self.resolver.lookup_ip(key.as_ref()).await {
Ok(result) => Ok(result.as_lookup().record_iter().any(|r| {
r.data().map_or(false, |d| {
matches!(d.to_record_type(), RecordType::A | RecordType::AAAA)
matches!(d.record_type(), RecordType::A | RecordType::AAAA)
})
})),
Err(err) => {
Expand Down
6 changes: 4 additions & 2 deletions src/report/arf/parse.rs
Expand Up @@ -10,7 +10,7 @@

use std::borrow::Cow;

use mail_parser::{parsers::MessageStream, HeaderValue, Message, MimeHeaders, PartType};
use mail_parser::{parsers::MessageStream, HeaderValue, MessageParser, MimeHeaders, PartType};

use crate::{
common::headers::HeaderIterator,
Expand All @@ -19,7 +19,9 @@ use crate::{

impl<'x> Feedback<'x> {
pub fn parse_rfc5322(message: &'x [u8]) -> Result<Self, Error> {
let message = Message::parse(message).ok_or(Error::MailParseError)?;
let message = MessageParser::new()
.parse(message)
.ok_or(Error::MailParseError)?;
let mut feedback = None;
let mut included_message = None;
let mut included_headers = None;
Expand Down
6 changes: 4 additions & 2 deletions src/report/dmarc/parse.rs
Expand Up @@ -13,7 +13,7 @@ use std::net::IpAddr;
use std::str::FromStr;

use flate2::read::GzDecoder;
use mail_parser::{Message, MimeHeaders, PartType};
use mail_parser::{MessageParser, MimeHeaders, PartType};
use quick_xml::events::{BytesStart, Event};
use quick_xml::reader::Reader;

Expand All @@ -26,7 +26,9 @@ use crate::report::{

impl Report {
pub fn parse_rfc5322(report: &[u8]) -> Result<Self, Error> {
let message = Message::parse(report).ok_or(Error::MailParseError)?;
let message = MessageParser::new()
.parse(report)
.ok_or(Error::MailParseError)?;
let mut error = Error::NoReportsFound;

for part in &message.parts {
Expand Down
6 changes: 4 additions & 2 deletions src/report/tlsrpt/parse.rs
Expand Up @@ -11,7 +11,7 @@
use std::io::{Cursor, Read};

use flate2::read::GzDecoder;
use mail_parser::{Message, MimeHeaders, PartType};
use mail_parser::{MessageParser, MimeHeaders, PartType};
use zip::ZipArchive;

use crate::report::Error;
Expand All @@ -24,7 +24,9 @@ impl TlsReport {
}

pub fn parse_rfc5322(report: &[u8]) -> Result<Self, Error> {
let message = Message::parse(report).ok_or(Error::MailParseError)?;
let message = MessageParser::new()
.parse(report)
.ok_or(Error::MailParseError)?;
let mut error = Error::NoReportsFound;

for part in &message.parts {
Expand Down

0 comments on commit 949b8fc

Please sign in to comment.