Expand description
A library for building smtp servers.
The library supplies a parser and SMTP state machine. The user of the library
supplies I/O code and a Handler
implementation for controlling SMTP sessions.
The code using the library, sends
lines received to the Session.process_line()
method. The user also supplies a
Handler
implementation that makes decisions on whether to accept or reject email
messages. After consulting the Handler
the Session.process_line()
function will
return a response that can be sent back to the email client.
§Pseudo Code
ⓘ
// Create a handler which will control the SMTP session
let hander = create_handler();
// Create a SMTP session when a new client connects
let session = SessionBuilder::new("mailserver_name").build(client_ip, handler);
// Read a line from the client
let line = read_line(tcp_connection);
// Send the line to the session
let res = session.process(line);
// Act on the response
match res.action {
Action::Reply => {
write_response(tcp_connection, &res)?;
}
Action::Close => {
write_response(tcp_connection, &res)?;
close(tcp_connection);
}
Action::NoReply => (), // No response needed
}
Re-exports§
Modules§
- response
- Response contains a selection of SMTP responses for use in handlers.
Structs§
- Session
- A single smtp session connected to a single client
- Session
Builder - Builds an smtp
Session
Enums§
- Auth
Mechanism - Supported authentication mechanisms
Traits§
- Handler
- A
Handler
makes decisions about incoming mail commands.