#smtp-server #mail-server #smtp #server #tls

mailin-embedded

An SMTP server that can be embedded in other programs

15 unstable releases

0.8.3 Aug 31, 2024
0.8.2 Feb 10, 2024
0.8.1 May 20, 2023
0.7.1 Jun 6, 2022
0.2.1 Dec 28, 2018

#111 in Email

Download history 61/week @ 2024-08-17 82/week @ 2024-08-24 263/week @ 2024-08-31 90/week @ 2024-09-07 75/week @ 2024-09-14 83/week @ 2024-09-21 96/week @ 2024-09-28 62/week @ 2024-10-05 60/week @ 2024-10-12 51/week @ 2024-10-19 47/week @ 2024-10-26 91/week @ 2024-11-02 34/week @ 2024-11-09 21/week @ 2024-11-16 77/week @ 2024-11-23 80/week @ 2024-11-30

264 downloads per month
Used in 2 crates

MIT/Apache

88KB
2K SLoC

A SMTP server that can be embedded into another program

This library provides a simple embeddable SMTP server. The server uses blocking IO and a threadpool.

Examples

use mailin_embedded::{Server, SslConfig, Handler};

#[derive(Clone)]
struct MyHandler {}
impl Handler for MyHandler{}

let handler = MyHandler {};
let mut server = Server::new(handler);

server.with_name("example.com")
   .with_ssl(SslConfig::None)?
   .with_addr("127.0.0.1:25")?;
server.serve_forever();

SSL

The mailin-embedded library requires an SSL implementation. The SSL implementation is selected with a feature:

Using RustTLS (the default and recommended, so far no compatibility problems):

$ cargo build

Using OpenSSL (with Mozilla modern):

$ cargo build --features "ossl"

The SSL configuration for both of these libraries is quite strict and might not work with some older Email servers. However, until now, I have only seen problems with spammers and no problems with real email servers.

Using in Cargo.toml

mailin-embedded = "^0"

Dependencies

~1–10MB
~114K SLoC