7 releases
0.5.1 | May 6, 2024 |
---|---|
0.5.0 | Sep 12, 2023 |
0.5.0-alpha.1 | Jul 12, 2023 |
0.4.1 | May 10, 2022 |
0.4.0-alpha.3 | Jan 20, 2022 |
#48 in Email
428 downloads per month
Used in 18 crates
(via viaspf)
90KB
2.5K
SLoC
viaspf-record
The viaspf-record library contains a data model and parser for SPF records. SPF records are described in the Sender Policy Framework specification, version 1 (RFC 7208).
The data structures in this library constitute a complete and faithful encoding of the ABNF in RFC 7208, section 12. Extensive checking ensures correctness and conformance with the specification.
This library is used in viaspf, where you can find a complete implementation of SPF, including APIs for performing SPF queries. The viaspf-record library is a stand-alone product and could also be used in other projects.
The minimum supported Rust version is 1.65.0.
Usage
This is a Rust library. Include viaspf-record in Cargo.toml
as usual.
The struct SpfRecord
represents a syntactically valid SPF record. An
SpfRecord
can be constructed programmatically or parsed from a string.
use std::net::Ipv4Addr;
use viaspf_record::*;
let spf_record = "v=spf1 mx ip4:12.34.56.78/24 -all".parse();
assert_eq!(
spf_record,
Ok(SpfRecord {
terms: vec![
Term::Directive(Directive {
qualifier: None,
mechanism: Mechanism::Mx(Mx {
domain_spec: None,
prefix_len: None,
}),
}),
Term::Directive(Directive {
qualifier: None,
mechanism: Mechanism::Ip4(Ip4 {
addr: Ipv4Addr::new(12, 34, 56, 78),
prefix_len: Some(Ip4CidrLength::new(24).unwrap()),
}),
}),
Term::Directive(Directive {
qualifier: Some(Qualifier::Fail),
mechanism: Mechanism::All,
}),
],
})
);
Refer to the API documentation for details.
Licence
Copyright © 2020–2024 David Bürgin
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.