The milter library provides Rust bindings to libmilter, the sendmail mail filter API.
This library serves the creation of milters: mail filtering applications that can be integrated with mail servers such as [Postfix].
WORK IN PROGRESS – not yet released, feedback on API welcome
This crate requires the milter C library (libmilter) to be available.
On Debian and Ubuntu, install the package libmilter-dev
.
If your distribution does not provide pkg-config metadata for libmilter, try using the provided milter.pc file when executing the build:
PKG_CONFIG_PATH=. cargo build
The integration tests of this crate use the third-party miltertest
utility to
exercise the test milters. This program can be found among the OpenDKIM
command-line tools.
On Debian and Ubuntu, install either the miltertest
or the opendkim-tools
package (only required when working on the milter crate itself).
Include [libc] in addition to milter in Cargo.toml
:
toml
[dependencies]
milter = "0.1"
libc = "0.2"
Here’s a simple milter application that logs client IP addresses:
```rust use milter::{on_connect, Context, Milter, Status}; use std::net::SocketAddr;
fn handleconnect(
_: Context<()>,
_: &str,
socketaddr: Option
Status::Continue
}
fn main() { Milter::new("unix:/run/ipmilter.sock") .name("IPMilter") .onconnect(connectcallback) .run() .expect("milter execution failed"); } ```
Refer to the [API documentation] for complete usage instructions.
Copyright © 2020 David Bürgin
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.