2个不稳定版本
0.2.0 | 2020年11月24日 |
---|---|
0.1.0 | 2020年9月29日 |
#315 in 电子邮件
42KB
676 行
rmilter
rmilter 是一个Rust crate,允许通过milter协议连接到sendmail或postfix等MTA服务。
这个库使用纯安全的Rust代码,不需要像libmilter这样的外部库。
特性
- 使用milter协议连接到MTA服务(目前仅支持IPv4/IPv6)
- 定义哪些消息应该被传输
- 自动解码
base64
和quoted-printable
值 - 使用Rust的类型系统来防止滥用milter协议
用法
这个crate在 crates.io 上,可以通过将 rmilter
添加到项目 Cargo.toml
中的依赖项来使用。
[dependencies]
rmilter = "0.1"
示例
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();
milter
.run("127.0.0.1:31337")
.expect("Failed to start milter");
}
状态
rmilter 可以用于连接到MTA服务并接收消息。也可以轻松地接受或拒绝邮件(使用AcceptRejectAction)。
目前,不支持操纵邮件的功能(如添加标题、收件人等),但在未来的版本中将会支持。
依赖项
~7MB
~180K SLoC