Skip to content

Commit 949b8fc

Browse files
committed
v0.3.3
1 parent a6cd1d6 commit 949b8fc

File tree

8 files changed

+33
-35
lines changed

8 files changed

+33
-35
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
mail-auth 0.3.3
2+
================================
3+
- Bump `mail-parser` dependency to 0.9
4+
- Bump `trust-dns-resolver` dependency to 0.23
5+
16
mail-auth 0.3.2
27
================================
38
- Bump `mail-builder` dependency to 0.3

Cargo.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "mail-auth"
33
description = "DKIM, ARC, SPF and DMARC library for Rust"
4-
version = "0.3.2"
4+
version = "0.3.3"
55
edition = "2021"
66
authors = [ "Stalwart Labs <[email protected]>"]
77
license = "Apache-2.0 OR MIT"
@@ -22,21 +22,21 @@ test = []
2222

2323
[dependencies]
2424
ahash = "0.8.0"
25-
ed25519-dalek = { version = "1.0.1", optional = true }
25+
ed25519-dalek = { version = "1.0", optional = true }
2626
flate2 = "1.0.25"
2727
lru-cache = "0.1.2"
28-
mail-parser = { version = "0.8", git = "https://github.com/stalwartlabs/mail-parser", features = ["ludicrous_mode", "full_encoding"] }
28+
mail-parser = { version = "0.9", git = "https://github.com/stalwartlabs/mail-parser", features = ["ludicrous_mode", "full_encoding"] }
2929
mail-builder = { version = "0.3", git = "https://github.com/stalwartlabs/mail-builder", features = ["ludicrous_mode"] }
3030
parking_lot = "0.12.0"
31-
quick-xml = "0.28"
31+
quick-xml = "0.30"
3232
ring = { version = "0.16.20", optional = true }
33-
rsa = { version = "0.7.0", optional = true }
33+
rsa = { version = "0.7", optional = true }
3434
rustls-pemfile = { version = "1", optional = true }
3535
serde = { version = "1.0", features = ["derive"] }
3636
serde_json = "1.0"
3737
sha1 = { version = "0.10", features = ["oid"], optional = true }
3838
sha2 = { version = "0.10.6", features = ["oid"], optional = true }
39-
trust-dns-resolver = { version = "0.22.0", features = ["dns-over-rustls", "dnssec-ring"] }
39+
trust-dns-resolver = { version = "0.23", features = ["dns-over-rustls", "dnssec-ring"] }
4040
zip = "0.6.3"
4141

4242
[dev-dependencies]

src/common/headers.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ mod test {
539539

540540
#[test]
541541
fn chained_header_iterator() {
542-
let parts = vec![
542+
let parts = [
543543
&b"From: a\nTo: b\nEmpty:\nMulti: 1\n 2\n"[..],
544544
&b"Subject: c\nReceived: d\n\nhey"[..],
545545
];

src/common/message.rs

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* except according to those terms.
99
*/
1010

11-
use mail_parser::{parsers::MessageStream, HeaderValue};
11+
use mail_parser::{parsers::MessageStream, Address, HeaderValue};
1212

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

@@ -96,26 +96,13 @@ impl<'x> AuthenticatedMessage<'x> {
9696
}
9797
AuthenticatedHeader::From(name) => {
9898
match MessageStream::new(value).parse_address() {
99-
HeaderValue::Address(addr) => {
100-
if let Some(addr) = addr.address {
101-
message.from.push(addr.to_lowercase());
102-
}
103-
}
104-
HeaderValue::AddressList(list) => {
99+
HeaderValue::Address(Address::List(list)) => {
105100
message.from.extend(
106101
list.into_iter()
107102
.filter_map(|a| a.address.map(|a| a.to_lowercase())),
108103
);
109104
}
110-
HeaderValue::Group(group) => {
111-
message.from.extend(
112-
group
113-
.addresses
114-
.into_iter()
115-
.filter_map(|a| a.address.map(|a| a.to_lowercase())),
116-
);
117-
}
118-
HeaderValue::GroupList(group_list) => {
105+
HeaderValue::Address(Address::Group(group_list)) => {
119106
message
120107
.from
121108
.extend(group_list.into_iter().flat_map(|group| {

src/common/resolver.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ impl Resolver {
7272
capacity: usize,
7373
) -> Result<Self, ResolveError> {
7474
Ok(Self {
75-
resolver: AsyncResolver::tokio(config, options)?,
75+
resolver: AsyncResolver::tokio(config, options),
7676
cache_txt: LruCache::with_capacity(capacity),
7777
cache_mx: LruCache::with_capacity(capacity),
7878
cache_ipv4: LruCache::with_capacity(capacity),
@@ -91,7 +91,7 @@ impl Resolver {
9191
ptr_capacity: usize,
9292
) -> Result<Self, ResolveError> {
9393
Ok(Self {
94-
resolver: AsyncResolver::tokio(config, options)?,
94+
resolver: AsyncResolver::tokio(config, options),
9595
cache_txt: LruCache::with_capacity(txt_capacity),
9696
cache_mx: LruCache::with_capacity(mx_capacity),
9797
cache_ipv4: LruCache::with_capacity(ipv4_capacity),
@@ -196,10 +196,10 @@ impl Resolver {
196196
}
197197

198198
let ipv4_lookup = self.resolver.ipv4_lookup(key.as_ref()).await?;
199-
let ips = ipv4_lookup
199+
let ips: Vec<Ipv4Addr> = ipv4_lookup
200200
.as_lookup()
201201
.record_iter()
202-
.filter_map(|r| (*r.data()?.as_a()?).into())
202+
.filter_map(|r| r.data()?.as_a()?.0.into())
203203
.collect::<Vec<_>>();
204204

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

231231
Ok(self
@@ -325,7 +325,7 @@ impl Resolver {
325325
match self.resolver.lookup_ip(key.as_ref()).await {
326326
Ok(result) => Ok(result.as_lookup().record_iter().any(|r| {
327327
r.data().map_or(false, |d| {
328-
matches!(d.to_record_type(), RecordType::A | RecordType::AAAA)
328+
matches!(d.record_type(), RecordType::A | RecordType::AAAA)
329329
})
330330
})),
331331
Err(err) => {

src/report/arf/parse.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
use std::borrow::Cow;
1212

13-
use mail_parser::{parsers::MessageStream, HeaderValue, Message, MimeHeaders, PartType};
13+
use mail_parser::{parsers::MessageStream, HeaderValue, MessageParser, MimeHeaders, PartType};
1414

1515
use crate::{
1616
common::headers::HeaderIterator,
@@ -19,7 +19,9 @@ use crate::{
1919

2020
impl<'x> Feedback<'x> {
2121
pub fn parse_rfc5322(message: &'x [u8]) -> Result<Self, Error> {
22-
let message = Message::parse(message).ok_or(Error::MailParseError)?;
22+
let message = MessageParser::new()
23+
.parse(message)
24+
.ok_or(Error::MailParseError)?;
2325
let mut feedback = None;
2426
let mut included_message = None;
2527
let mut included_headers = None;

src/report/dmarc/parse.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use std::net::IpAddr;
1313
use std::str::FromStr;
1414

1515
use flate2::read::GzDecoder;
16-
use mail_parser::{Message, MimeHeaders, PartType};
16+
use mail_parser::{MessageParser, MimeHeaders, PartType};
1717
use quick_xml::events::{BytesStart, Event};
1818
use quick_xml::reader::Reader;
1919

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

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

3234
for part in &message.parts {

src/report/tlsrpt/parse.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
use std::io::{Cursor, Read};
1212

1313
use flate2::read::GzDecoder;
14-
use mail_parser::{Message, MimeHeaders, PartType};
14+
use mail_parser::{MessageParser, MimeHeaders, PartType};
1515
use zip::ZipArchive;
1616

1717
use crate::report::Error;
@@ -24,7 +24,9 @@ impl TlsReport {
2424
}
2525

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

3032
for part in &message.parts {

0 commit comments

Comments
 (0)