1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//! rmilter
//! =======
//!
//! **rmilter** is a Rust crate that allows to connect to MTA services like sendmail or postfix using the milter protocol.
//!
//! This library uses pure safe Rust code and doesn't require external libraries like libmilter.
//!
//! Features
//! --------
//!
//! - Connect to MTA services using the milter protocol (IPv4/IPv6 only for now)
//! - Define which messages should be transferred
//! - Automatically decode `base64` and `quoted-printable` values
//! - Uses Rust's type system to prevent misusing the milter protocol
//!
//! Usage
//! -----
//!
//! This crate is [on crates.io](https://crates.io/crates/rmilter) and can be used by adding `rmilter` to your dependencies in your project's `Cargo.toml`.
//!
//! ```toml
//! [dependencies]
//! rmilter = "0.1"
//! ```
//!
//! Example
//! -------
//!
//! ```
//! use rmilter::accept_reject_action::AcceptRejectAction;
//! use rmilter::message_handler::MessageHandler;
//! use rmilter::milter_message::MilterProtocol;
//! use rmilter::milter_builder::MilterBuilder;
//!
//! struct MyMessageHandler {}
//!
//! impl MessageHandler for MyMessageHandler {
//! fn header(&mut self, name: &str, value: &str) -> AcceptRejectAction {
//! println!("name: {}, value: {}", name, value);
//! AcceptRejectAction::Continue
//! }
//! }
//!
//! fn main() {
//! let mut handler = MyMessageHandler {};
//! let protocol = MilterProtocol::new(false, false, false, false, false, false, false);
//! let mut milter = MilterBuilder::new(&mut handler)
//! .set_protocol(protocol)
//! .build();
//!
//! // Uncomment this to run the milter (not done here due to doc tests)
//! //milter
//! // .run("127.0.0.1:31337")
//! // .expect("Failed to start milter");
//! }
//! ```
//!
//! Status
//! ------
//!
//! **rmilter** can be used to connect to MTA services and receive messages. It is also possible to easily accept or reject a mail (using AcceptRejectAction).
//!
//! Currently, functionality for manipulating the mail (add header, recipients and so on) is not yet supported, but will be in a future release.
extern crate lazy_static;