Server IP : 80.241.246.6 / Your IP : 216.73.216.129 Web Server : Apache/2.4.25 (Debian) System : Linux kharagauli 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64 User : www-data ( 33) PHP Version : 7.0.33-0+deb9u12 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/doc/socat/examples/ |
Upload File : |
#! /bin/sh # source: mail.sh # Copyright Gerhard Rieger 2001-2009 # 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