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
      27 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
        7 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
          27 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
            27 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

    • Mark Stosberg
      link
      fedilink
      17 months ago

      @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