1#![doc = include_str!("../README.md")]
8#![warn(missing_docs)]
9
10#[cfg(not(feature = "dns-doh"))]
11pub(crate) use std::time::{Instant, SystemTime};
12#[cfg(feature = "dns-doh")]
13pub(crate) use web_time::{Instant, SystemTime};
14
15#[cfg(feature = "arc")]
16pub mod arc;
17pub mod auth_results;
18mod authenticator;
19pub mod crypto;
20pub mod dkim;
21pub mod dkim2;
22pub mod dmarc;
23pub mod dns;
24mod error;
25pub mod headers;
26mod heap;
27pub mod iprev;
28pub mod message;
29pub mod mta_sts;
30pub(crate) mod parse;
31pub(crate) mod sampling;
32pub(crate) mod scan;
33pub mod signer;
34pub mod spf;
35#[cfg(any(feature = "test", fuzzing))]
36#[doc(hidden)]
37pub mod testing;
38pub(crate) mod utf8;
39
40#[cfg(all(feature = "dns-hickory", feature = "dns-doh"))]
41compile_error!(
42 "features `dns-hickory` and `dns-doh` are mutually exclusive; enable only one DNS backend"
43);
44#[cfg(not(any(feature = "dns-hickory", feature = "dns-doh")))]
45compile_error!("a DNS backend is required; enable feature `dns-hickory` or `dns-doh`");
46
47#[cfg(not(feature = "dns-doh"))]
48pub use hickory_resolver;
49
50#[cfg(feature = "arc")]
51pub use arc::{ArcOutput, ArcResult};
52pub use auth_results::{AuthenticationResults, ReceivedSpf};
53pub use authenticator::MessageAuthenticator;
54pub use dkim::{DkimOutput, DkimResult};
55pub use dkim2::{Dkim2Output, Dkim2Result};
56pub use dmarc::{DmarcOutput, DmarcResult};
57pub use dns::{
58 DnsCache, DnssecStatus, IpLookupStrategy, Mx, Negative, NoCache, Parameters, RecordSet,
59 ResolverCache, TxtRecord,
60};
61pub use error::{DnsError, Error, Result};
62pub use iprev::{IprevOutput, IprevResult};
63pub use message::AuthenticatedMessage;
64pub use spf::{SpfOutput, SpfResult};