use std::path::PathBuf;
use mda::{Email, EmailRegex, Result, DeliveryDurability};
fn main() -> Result<()> {
let root = PathBuf::from("/tmp/my-personal-mail-96f29eb6375cfa37");
let mut email = Email::from_stdin()?;
if let Ok(new_email) = email.filter(&["/usr/bin/bogofilter", "-ep"]) {
email = new_email;
}
email.set_delivery_durability(DeliveryDurability::FileSyncOnly);
let from = email.header_field("From").unwrap_or("");
let bogosity = email.header_field("X-Bogosity").unwrap_or("");
if bogosity.contains("Spam, tests=bogofilter") ||
from.contains("@banneddomain.com") {
email.deliver_to_maildir(root.join("spam"))?;
return Ok(());
}
let cc = email.header_field("Cc").unwrap_or("");
let to = email.header_field("To").unwrap_or("");
if to.contains("myworkemail@example.com") ||
cc.contains("myworkemail@example.com") {
if email.body().search("URGENCY RATING: (CRITICAL|URGENT)")? {
email.deliver_to_maildir(root.join("inbox/myemail/urgent"))?;
} else {
email.deliver_to_maildir(root.join("inbox/myemail/normal"))?;
}
return Ok(());
}
email.deliver_to_maildir(root.join("inbox/unsorted"))?;
Ok(())
}