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
73
74
75
76
77
78
//! 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
//! -------
//!
//!  ```no_run
//! 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::default();
//!     let mut milter = MilterBuilder::new(&mut handler)
//!         .set_protocol(protocol)
//!         .build();
//!
//!     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.

// Set proper hmtl root for docs.rs
#![doc(html_root_url = "https://docs.rs/rmilter/0.1.0")]

#[macro_use]
extern crate bitflags;

#[macro_use]
extern crate lazy_static;

pub mod accept_reject_action;
pub mod message_handler;
pub mod milter;
pub mod milter_builder;
pub mod milter_error;
pub mod milter_message;