Setting 'From' header for cron email using msmtp

I've got msmtp setup on Ubuntu 10.10 so that cron can send me emails. That works like a champ, for the most part.

However, emails coming to my gmail account show up as coming from (unknown sender), and the headers show:

From: root (Cron Daemon)

How can I set the From header to a valid email address?

I've just got msmtp symlinked as /usr/sbin/sendmail

The one possible solution I've found is here: http://tech.bluesmoon.info/2010/01/pretty-print-cron-emails.html

However, I'm curious if there's a simpler way.


I've found two solutions:

  • With msmtp 1.8.8 or later (appeared in Ubuntu 20.10), use the set_from_header on configuration setting, which can override the existing From: unlike the earlier add_missing_from_header which could only add it when missing
  • With earlier versions (e.g. Ubuntu 20.04),
    • remove the msmtp-mta package, now useless,
    • create a two-line script rewriting the header, e.g. /usr/local/bin/msmtp-pseudo-mta.bash
#!/bin/bash
# Workaround until mtmsp >= 1.8.8 in Ubuntu 20.10.
sed -e "s/From: root (Cron Daemon)/From: WHATEVER YOU LIKE/" | msmtp $BASH_ARGV
    • make it executable, e.g. chmod 755 /usr/local/bin/msmtp-pseudo-mta.bash
    • symlink it as sendmail:
sudo ln -s /usr/local/bin/msmtp-pseudo-mta.bash /usr/sbin/sendmail

Idea from: https://serverfault.com/a/441414/17379


No problem. Just configure it like mentioned in the manual: http://msmtp.sourceforge.net/doc/msmtp.html#Envelope_002dfrom-address

maildomain example.com

should add example.com to all mails without domain set.