mod http; mod mail; mod smtp; use clap::Parser; #[derive(Parser, Debug)] #[clap(author, version, about, long_about = None)] struct Args { #[clap(short, long, value_parser, default_value = "7777")] http_port: u16, #[clap(short, long, value_parser, default_value = "7778")] smtp_port: u16, } #[tokio::main] async fn main() { let args = Args::parse(); tracing_subscriber::fmt::init(); let mailbox = mail::Mailbox::new(); smtp::server(mailbox.clone(), args.smtp_port).await.unwrap(); http::server(mailbox.clone(), args.http_port).await.unwrap(); tokio::signal::ctrl_c() .await .expect("failed to listen for event"); }