/usr/share/doc/socat
#! /bin/sh # source: mail.sh # Copyright Gerhard Rieger and contributors (see file CHANGES) # Published under the GNU General Public License V.2, see file COPYING #set -vx # This is an example for a shell script that can be fed to socat with exec. # Its clue is that it does not use stdin/stdout for communication with socat, # so you may feed the mail message via stdin to the script. The message should # contain appropriate mail headers without continuation lines. # socat establishes the connection to the SMTP server; the script performs the # SMTP dialog and afterwards transfers the message body to the server. # Lines with only a dot are not permitted - use two dots as escape. # This script supports multiline answers from server, but not much more yet. # Usage: cat message.txt |socat exec:"mail.sh target@domain.com",fdin=3,fdout=4 tcp:mail.relay.org:25,crlf while [ "$1" ]; do case "$1" in -f) shift; mailfrom="$1"; shift;; *) break;; esac done rcptto="$1" [ -z "$1" ] && rcptto="root@loopback" #server=$(expr "$rcptto" : '[^@]*@\(.*\)') [ -z "$mailfrom" ] && mailfrom="$USER@$(hostname)" # this function waits for a complete server message, checks if its status # is in the permitted range (terminates session if not), and returns. mail_chat () { local cmd="$1" local errlevel="$2"; [ -z "$errlevel" ] && errlevel=300 if [ "$cmd" ]; then echo "> $cmd" >&2; fi if [ -n "$cmd" ]; then echo "$cmd" >&4; fi while read status message <&3; ( case "$status" in [0-9][0-9][0-9]-*) exit 0;; [0-9][0-9][0-9]*) exit 1;; *) exit 1;; esac ) do :; done if [ -z "$status" ]; then echo smtp connection failed >&2; exit; fi echo "< $status $message" >&2 if [ "$status" -ge "$errlevel" ]; then echo $message >&2 echo "QUIT" >&4; exit 1 fi } # expect server greeting mail_chat mail_chat "HELO $(hostname)" mail_chat "MAIL FROM: $mailfrom" mail_chat "RCPT TO: $rcptto" mail_chat "DATA" 400 while read l; do echo "$l" >&4; done mail_chat "." mail_chat "QUIT" exit 0
.
Edit
..
Edit
BUGREPORTS
Edit
CHANGES
Edit
COPYING
Edit
COPYING.OpenSSL
Edit
DEVELOPMENT
Edit
EXAMPLES
Edit
FAQ
Edit
PORTING
Edit
README
Edit
SECURITY
Edit
daemon.sh
Edit
ftp.sh
Edit
gatherinfo.sh
Edit
mail.sh
Edit
proxy.sh
Edit
proxyecho.sh
Edit
readline-test.sh
Edit
readline.sh
Edit
socat_buildscript_for_android.sh
Edit
socks4a-echo.sh
Edit
socks4echo.sh
Edit
test.sh
Edit