email_auth/bimi/types.rs
1/// BIMI DNS record.
2#[derive(Debug, Clone, PartialEq, Eq)]
3pub struct BimiRecord {
4 /// Version string, MUST be "BIMI1".
5 pub version: String,
6 /// l= tag: 1-2 HTTPS URIs for logo SVG.
7 pub logo_uris: Vec<String>,
8 /// a= tag: VMC authority evidence URI (HTTPS).
9 pub authority_uri: Option<String>,
10}
11
12/// BIMI-Selector header parsed fields.
13#[derive(Debug, Clone, PartialEq, Eq)]
14pub struct BimiSelectorHeader {
15 /// Version string, MUST be "BIMI1".
16 pub version: String,
17 /// Selector value (default: "default").
18 pub selector: String,
19}
20
21/// BIMI validation result status.
22#[derive(Debug, Clone, PartialEq, Eq)]
23pub enum BimiResult {
24 /// Validated successfully.
25 Pass,
26 /// No BIMI record found.
27 None,
28 /// Validation failure.
29 Fail { reason: String },
30 /// DNS or fetch failure.
31 TempError,
32 /// DMARC not eligible.
33 Skipped,
34 /// Domain published declination record.
35 Declined,
36}
37
38/// Complete BIMI validation result.
39#[derive(Debug, Clone, PartialEq, Eq)]
40pub struct BimiValidationResult {
41 pub result: BimiResult,
42 pub domain: String,
43 pub selector: String,
44 pub record: Option<BimiRecord>,
45}