Using sendmail over SSH

relaysendmailssh

I have a SSH access to the server with working sendmail provided by my hoster.
I want to configure my local sendmail to use remote server as a relay. How can I do that? Is it posiible at all?

Note: I can write script to run something like ssh user@host sendmail ... but it seems to me like there is a better solution.

Best Answer

  • Prepare SSH

    Locally, create a new SSH key without password. In these examples, it will be located at /etc/mail/ssh-sendmail-key and owned by the MAILUSER user. Change MAILUSER to whatever Unix account your local system uses: postfix, sendmail, mail, ... Using root or nobody is not recommended.

    # ssh-keygen -f /etc/mail/ssh-sendmail-key -N ""
    # chown MAILUSER /etc/mail/ssh-sendmail-key{,.pub}
    

    Append the contents of /etc/mail/ssh-sendmail-key.pub to the server's authorized_keys file:

    ssh-rsa AAAA....
    

    Postfix

    Create a ssh transport in master.cf:

    ssh    unix    -       n       n       -       -       pipe
        user=MAILUSER argv=/usr/bin/ssh -i /etc/mail/ssh-sendmail-key myhostserver /usr/sbin/sendmail -i $recipient
    

    In main.cf, add:

    default_transport = ssh
    

    Exim

    Router:

    ssh:
        driver = manualroute
        domains = ! +local_domains
        transport = ssh
        route_list = * foo
    

    Transport:

    ssh:
        driver = pipe
        user = MAILUSER
        command = /usr/bin/ssh -i /etc/mail/ssh-sendmail-key myhostserver /usr/sbin/sendmail -i $RECIPIENT
    
  • Related Question