A simple and secure SMTP-client daemon.
A typical scenario of using rusmtp
is with clients like NeoMutt
, where you
do not store your passwords unencrypted, but you still wish to get all the
benefits of using NeoMutt
.
A typical installation would be as follows:
- Add
set sendmail="/PATH/TO/rusmtp"
in muttrc. - Using GnuGP, encrypt your password and save the encrypted password.
- Add
passwordeval=gpg --quiet --no-tty --decrypt /PATH/TO/ENCRYPTED-PASSWORD.gpg
to rusmtprc for each account. - Add the password to decrypt the encrypted password in gpg-agent, to avoid entering the password upon starting the deamon.
- Make rusmtpd to startup upon boot.
At its current state, the builtin SMTP client only supports ESMTP and only supports LOGIN (i.e. it uses username and password to authenticate the connection).
rusmtp
is written in rust, and it can be built with cargo
, to build it simply
run cargo build --release
and have the daemon built for the host architecture.
Minimum supported version of rust is 1.28.0.
- base64 = "0.10"
- dirs = "1.0"
- docopt = "1.0"
- fs2 = "0.4"
- log = "0.4"
- log4rs = "0.8"
- native-tls = "0.2"
- rand = "0.5"
- ring = "0.13"
- rust-ini = "0.13"
- serde = "1.0"
- serde_derive = "1.0"
- lazy_static = "1.2"
- regex = "1"
One way to recompute the above list, please run the following command chain
for build in */Cargo.toml; do \
cat $build |\
rq -T -t 'at "[dependencies]"'; \
done |\
grep -v '^path = "../' |\
grep -v '^\[' |\
grep -v '^$' |\
sort -u
- Download the latest release
here, extract it and run
sudo ./install
, it copies the executables to/usr/local/bin/{rusmtpc,rusmtpd}
- Update the
~/.rusmtprc
file to match your preferences, for example the passwordeval setting can be:passwordeval=gpg --quiet --no-tty --decrypt /PATH/TO/ENCRYPTED-PASSWORD.gpg
- Update your email-client configuration to use
/usr/local/bin/rusmtpc
for sending emails. - Make the
/usr/local/bin/rusmtpd
daemon to run on startup.