I’m looking for a simple sendmail replacement to receive local mail, such as from cron and service failures and forward it to on to a real SMTP server.
I have used msmtpd
successfully but thought I’d ask if folks have other solutions they like.
I’m looking for a simple sendmail replacement to receive local mail, such as from cron and service failures and forward it to on to a real SMTP server.
I have used msmtpd
successfully but thought I’d ask if folks have other solutions they like.
msmtp
never failed me@vegetaaaaaaa
After testing ssmtp, nullmailer, and msmtp for relay-only outgoing mail on Fedora #Linux. Here’s my final report:
- ssmtp is packaged for Fedora and I got it working, but the Ansible role I found for it had been abandoned by the author because ssmtp itself is unmaintained.
- nullmailer might have worked, but is not packaged for Fedora.
- msmtp worked. I used this Ansible role, after patching it to work on Fedora: https://github.com/chriswayg/ansible-msmtp-mailer
The one problem with msmtp is that it doesn’t rewrite headers, like “From: root / To: root”. These are not required for SMTP, but they are required by some mail providers who will reject email that doesn’t have an “@” sign in these headers. The author or msmtp has said he does not plan to add this feature.
I worked around the issue with my own sendmail wrapper that rewrites local addresses in From and To headers before passing the message to msmtp. Someone else posted such a script in this bug report:
https://github.com/marlam/msmtp/issues/98
You can definitely replace senders with correct mail addresses for relaying through SMTP servers that expect them (this is what I do):
# /etc/msmtprc account default ... host smtp.gmail.com auto_from on auth on user myaddress password hunter2 # Replace local recipients with addresses in the aliases file aliases /etc/aliases
# /etc/aliases mailer-daemon: postmaster postmaster: root nobody: root hostmaster: root usenet: root news: root webmaster: root www: root ftp: root abuse: root noc: root security: root root: default www-data: root default: myaddress@gmail.com
(the only thing I changed from the defaults in the aliases file is adding the last line)
This makes it so all/most system accounts susceptible to send mail are aliased to root, and root in turn is aliased to my email address (which is the one configured in
host/user/password
in msmtprc)Edit: I think it’s actually the
auto_from
option which interests you. Check the msmtp manpageIn the issue I linked, the msmtp author makes a distinction with changing the envelope recipient, which msmtp can do, with rewriting the email headers like “To”, which msmtp does not do.
Oh I didn’t know that, good to know!
The proposed one-line wrapper looks like a nice solution