#!/bin/sh for FILE in $* ; do if [ -z "`echo $FILE | grep '\.request$'`" ] && [ -z "`echo $FILE | grep '\.result$'`" ] ; then echo $FILE MAIL_FROM=`cat ${FILE} | formail -xReturn-Path: | perl -p -e 's/.*?<(\S*?)>\s*/$1/'` RECEIVED=`cat ${FILE} | formail -xReceived` IP=`echo ${RECEIVED} | perl -n -e 'print($1) if (/^\s*from \S+ \(\[(\d+\.\d+\.\d+\.\d+)\]/)'` [ -z "$IP" ] && IP="127.0.0.1" EHLO=`echo ${RECEIVED} | perl -n -e 'print($2 ? $2 : $1) if (/^\s*from (\S+) \(\[\d+\.\d+\.\d+\.\d+\](?: helo=(\S+?))?\)/)'` [ -z "$EHLO" ] && EHLO="localhost" QUEUE_ID=`echo ${RECEIVED} | perl -n -e 'print($1) if (/^\s*from \S+ \(\[(\d+\.\d+\.\d+\.\d+)\]/)'` [ -z "$QUEUE_ID" ] && QUEUE_ID="1Pldp5-00051m-A5" RCPT_TO=`echo ${RECEIVED} | perl -n -e 'print($1) if (/^.*?for ]+)>?;?/)'` [ -z "${RCPT_TO}" ] && RCPT_TO=`cat ${FILE} | formail -xTo: | perl -p -e 's/.*?<(\S+?)>\s*/$1/;s/^.*,].*$//gs'` [ -z "${RCPT_TO}" ] && RCPT_TO=`cat ${FILE} | formail -xCc: | perl -p -e 's/.*?<(\S+?)>\s*/$1/;s/^.*,].*$//gs'` [ -z "${RCPT_TO}" ] && RCPT_TO=root@`hostname` SIZE=`stat $FILE | awk '{print $8}'` ( \ echo -e "SYMBOLS RSPAMC/1.1\r" ; \ echo -e "Content-length: $SIZE\r" ; \ echo -e "Queue-Id: $QUEUE_ID\r" ; \ echo -e "From: $MAIL_FROM\r" ; \ echo -e "Recipient-Number: 1\r" ; \ echo -e "Rcpt: $RCPT_TO\r" ; \ echo -e "Helo: $EHLO\r" ; \ echo -e "IP: $IP\r" ; \ echo -e "\r" ; \ cat $FILE ; \ ) > $FILE.request nc localhost 11333 < $FILE.request > $FILE.result fi done