rspamd_client/protocol/
scan.rs1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Serialize, Deserialize)]
6pub struct RspamdScanReply {
7 #[serde(default)]
9 pub is_skipped: bool,
10 #[serde(default)]
12 pub score: f64,
13 #[serde(default)]
15 pub required_score: f64,
16 #[serde(default)]
18 pub action: String,
19 #[serde(default)]
21 pub thresholds: HashMap<String, f64>,
22 #[serde(default)]
24 pub symbols: HashMap<String, Symbol>,
25 #[serde(default)]
27 pub messages: HashMap<String, String>,
28 #[serde(default)]
30 pub urls: Vec<String>,
31 #[serde(default)]
33 pub emails: Vec<String>,
34 #[serde(rename = "message-id", default)]
36 pub message_id: String,
37 #[serde(default)]
39 pub time_real: f64,
40 #[serde(default)]
42 pub milter: Option<Milter>,
43 #[serde(default)]
44 pub filename: String,
46 #[serde(default)]
47 pub scan_time: f64,
48 #[serde(skip)]
51 pub rewritten_body: Option<Vec<u8>>,
52}
53
54#[derive(Debug, Serialize, Deserialize)]
56pub struct Symbol {
57 #[serde(default)]
58 pub name: String,
59 #[serde(default)]
60 pub score: f64,
61 #[serde(default)]
62 pub metric_score: f64,
63 #[serde(default)]
64 pub description: Option<String>,
65 #[serde(default)]
66 pub options: Option<Vec<String>>,
67}
68
69#[derive(Debug, Serialize, Deserialize)]
71pub struct Milter {
72 #[serde(default)]
73 pub add_headers: HashMap<String, MailHeader>,
74 #[serde(default)]
75 pub remove_headers: HashMap<String, i32>,
76}
77
78#[derive(Debug, Serialize, Deserialize)]
80pub struct MailHeader {
81 #[serde(default)]
82 pub value: String,
83 #[serde(default)]
84 pub order: i32,
85}