[−][src]Crate opensmtpd
Writing a filter for OpenSMTPD
The first step is to define an object (most of the time you want
a struct) the implements the Filter
trait. All of this
trait's methods have an empty default implementation, so you only
have to implement the ones that matters to you. For each method
you implement, you must use the [register
] macro in order to
ask OpenSMTPD to send you the corresponding events and filter
requests.
The second and last step is to call the run_filter
function
with a mutable reference of your filter object.
Examples
The following filter increments a variable every time a client disconnects.
use opensmtpd::{run_filter, Filter, ReportEntry}; use opensmtpd_derive::register; struct MyCounter { nb: u64, } impl Filter for MyCounter { #[register] fn on_report_link_disconnect(&mut self, _entry: &ReportEntry) { self.nb + 1; } } fn main() { let mut my_counter = MyCounter { nb: 0, }; run_filter(&mut my_counter); }
More examples can be found in the examples directory.
Structs
FilterEntry | |
ReportEntry | |
SmtpStatusCode | |
TimeVal |
Enums
Address | |
AuthResult | |
Event | |
FilterKind | |
FilterPhase | |
FilterResponse | |
MailResult | |
Method | |
SubSystem |
Traits
Filter |
Functions
return_data_line | |
run_filter |