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.

  • @markstosOP
    link
    English
    210 months ago

    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

    • @vegetaaaaaaa
      link
      English
      1
      edit-2
      10 months ago

      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: [email protected]
      

      (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 manpage

      • @markstosOP
        link
        English
        210 months ago

        In 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.

        • @vegetaaaaaaa
          link
          English
          210 months ago

          https://github.com/chriswayg/ansible-msmtp-mailer/issues/14 While msmtp has features to alter the envelope sender and recipient, it doesn’t alter the “To:” or “From:” message itself. When the Envelope doesn’t match these details, it can be considered spam

          Oh I didn’t know that, good to know!

          The proposed one-line wrapper looks like a nice solution