Skip to main content

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}