ssh_sendmail_instead_of_login_shell
This is an old revision of the document!
SSH session that runs sendmail instead of your login shell
What?
A wrapper for your local mail transfer agent (MTA) that initiates an SSH session when your SDF email address appears in the “From:” header.
Why?
You want to send email from your SDF address without running the risk that the receiving server will reject it due to a mismatch between the “From” header and your ISP's IP block, but …
- the low volume of your outgoing mail cannot justify the cost of a VPM/VHOST/MetaARPA membership, or
- your Internet connection has too high a latency to be running a full-screen editor within an SSH session.
Where?
a *BSD, Linux, or WSL environment with a client that generates MIME-formatted mail (as expected by sendmail-compatible MTAs such as msmtp)
How?
- Set up SSH public key authentication, if you have not already done so. This step can be omitted if you prefer to type your password for each outgoing mail.
- Save the wrapper script below somewhere in your $PATH. Change the value of $MTA to the mail transport agent that you would otherwise be using for outgoing mail, the value of $PATH if any of the commands live in non-standard locations, and of course all the hard-coded email addresses in the script.
- Configure your mail user agent (MUA) to call the wrapper script, rather than calling your MTA directly.
#!/usr/bin/env bash # # msmtp.wrap - bypass local in favor of remote sendmail, # if certain headers are found PATH=/bin:/usr/bin:/usr/local/bin Account0=me@sdf.org Account1=me@other-pubnix.net MTA=msmtp draft="$(mktemp -t sendmail.XXXXXX)" cat /dev/stdin > "$draft" sender="$(grep '^From:' "$draft" | head -n 1 | cut -d: -f2)" case "$sender" in *me@sdf.org* ) sendmail="ssh $Account0 sendmail -t" ;; *me@other-pubnix.net* ) sendmail="ssh $Account1 sendmail -t" ;; * ) sendmail="$MTA $*" ;; esac < "$draft" $sendmail; status=$? rm -f "$draft"; exit $status
ssh_sendmail_instead_of_login_shell.1668220761.txt.gz · Last modified: 2022/11/12 02:39 by jquah