-
-
Notifications
You must be signed in to change notification settings - Fork 29
Description
Introduction
Hi! I love this project idea and really appreciate the dedication to modern security standards (such as DKIM support) as well as mail-send
's RFC compliance. The current feature set would serve as a fantastic base for a security-oriented Rust-written mail client if that is something Stalwart Labs would be interested in pursuing.
The final component of mail-send
that would make it a serious security contender (in terms of client features) to the likes of ProtonMail and Tutanota would be support for OpenPGP, the open standard for email encryption.
Proposal
Standards
mail-send
could implement OpenPGP support by following these Internet Message Format standards:
There are two strong libraries that have implemented RFC 4880: rpgp and sequoia.
*Comparison of OpenPGP vs. PGP/MIME and a table of major email client support for them
Implementation
The loading of a public PGP key could be done in a similar syntax to the implementation of DKIM in this crate:
// Set up DKIM signer
let pgp_key = PGP::from_pkcs1_asc_file("./key.asc")
.unwrap()
^ I'm not very familiar with PGP so not sure if any other inputs besides the file path should be provided
// Build a encrypted text message with a single attachment
let message = MessageBuilder::new()
.from(("John Doe", "john@example.com"))
.to("jane@example.com")
.subject("Howdy!")
.text_body("These pretzels are making me thirsty.")
.binary_attachment("image/png", "pretzels.png", [1, 2, 3, 4].as_ref())
.pgp_encrypt(pgp_key);
Interested to hear your thoughts! Let me know if this issue would be better suited at mail-builder
.