Msmtp
msmtp is a basic email sender client. It is easy to configure but lacks some features like queuing when offline.
Installation
A minimal configuration to relay mails through an external mail server coud look like this
programs.msmtp = {
enable = true;
accounts.default = {
host = "example.org";
from = "hello@example.org";
user = "hello@example.org";
password = "mypassword123";
};
};
In this case msmtp will try to deliver mails through the smtp server example.org
on port 25
. user
and password
are used for normal plaintext authentication.
This configuration will automatically set msmtp as the default mail delivery client on your system by overwriting the sendmail
binary. To test mail delivery issue following command:
# sendmail john.doe@mail.com
Subject: Test Send Mail
Hello World
control d (this key combination of control key and d will finish the email.)
A mail with the subject Test Send Mail will be send to the recipient john.doe@mail.com including the body text Hello World.
Configuration
Further configuration options for msmtp can be found here.
TLS connections
programs.msmtp = {
enable = true;
accounts = {
default = {
auth = true;
tls = true;
# try setting `tls_starttls` to `false` if sendmail hangs
from = "<from address here>";
host = "<hostname here>";
user = "<username here>";
passwordeval = "cat /secrets/smtp_password.txt";
};
};
};
Note that msmtp has no daemon and runs as the invoking user. If using passwordeval
, the file must be readable by any user that wishes to send mail.
Aliases
Example:
programs.msmtp.defaults = {
aliases = "/etc/aliases";
};
environment.etc = {
"aliases" = {
text = ''
root: me@example.com
'';
mode = "0644";
};
};