THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Script will call SpamAssassin spamc from CommuniGate. Since SA modifies the actual message, it must be re-delivered via the Submitted directory. Sneaky Header Tagging is used to prevent the message from being scanned again, and/or being caught in a loop is spamd fails.
Source code
...
No Format |
---|
#!/bin/sh |
...
################################################################################ |
...
# Script to call Spam Assassin from |
...
CommuniGate |
...
Pro Rules v1.1 Ed Fang # If you have any improvements, drop me a line at edfang@visi.net # Thanks for Stefan Seiz for the original template # # Script will call |
...
SpamAssassin |
...
spamc from |
...
CommuniGate |
...
. Since SA modifies # the actual message, it must be re-delivered via the Submitted directory. |
...
# Sneaky Header Tagging is used to prevent the message from being scanned # again, and/or being caught in a loop is spamd fails. # # DATA |
...
# Communigate Pro Rules # Any Recipient in |
...
*@domain.com # Message Size less than 32768 # Header Field is not X-Spam-Status |
...
* # # ACTION # Execute |
...
[STDERR |
...
] |
...
[FILE |
...
] |
...
[RETPATH |
...
] |
...
[RCPT |
...
] /var/CommuniGate/scanspam.sh # Discard # # You must discard the message as the script will re-submit the marked message through the # Submitted directory of |
...
CommuniGate |
...
. If you don't, you'll get every message # twice - once scanned, once clear through. (which is a good way to test # before actually discarding the message. Stalker has asked that messages # not be modified in the Queue directory, so it's just safer to play by their # rules. # # 1.1 - Changed to run using gawk. Highly advised as awk will occasionally # crap out with trememdously long html lines. # # Note: The global variables aren't used all over the place, so I'll clean that # up in a later version. I think there might be a more efficient awk script # so any other awk gurus out there might be able to give me a better awk # than the one I have (which skips everything until it matches Received # and then to the end of the file. # |
...
################################################################################ |
...
#### START user configurable variables |
...
# CGate base directory myCgate="/var/CommuniGate" myLogFile="/var/CommuniGate/spam-result.out" |
...
#### END user configurable variables |
...
#Comment out following two lines if you don't want to echo the passed variable info to #the spam-result.out file. myDate= |
...
`date +%Y-%m-%d\ %H:%M: |
...
%S` echo "Date $myDate " $@ >> $myLogFile |
...
#Get the fileid of the message file QueuePath=$2 NewFile= |
...
`basename $QueuePath`'.tmp' FinalFile=$NewFile'.sub' |
...
# Formulate return-path and Envelope-To addresses from command line args. # shift out the first 3 arguments, make sure one > to create a new file shift 3 |
...
# If you are using Spamprep, the following line should be commented out echo "Return-Path:" $1 > /var/CommuniGate/Submitted/$NewFile |
...
# If you are using Spamprep, the following line should be uncommented # ReturnPath=$1 |
...
# shift out 5 command arguments. and start appending shift 2 Envelope=$1 shift while |
...
[ $# -gt 0 |
...
] do |
...
. Envelope=$Envelope','$1 shift |
...
done |
...
# Formulate the envelope Header file. |
...
# If you are using Spamprep, the following line should be commented out echo "Envelope-To: " $Envelope >> $myCgate/Submitted/$NewFile |
...
# Append an X-Spam header in there. This is very important. Without this # tag, if spamc fails to call spamd, it will send the message back without # a tag and your message will fall into an UGLY loop. This alleviates that. |
...
# If you are using Spamprep, the following line should be commented out echo "X-Spam-Status: Scanner Called" >> $myCgate/Submitted/$NewFile |
...
# strip out CommuniGate stuff for SpamAssassin first # using awk, and then send to spamc. |
...
# If you are using Spamprep, the following line should be commented out gawk '/Received/, /\n/' $myCgate/$QueuePath | /usr/local/bin/spamc -d 127.0.0.1 -f >> /var/CommuniGate/Submitted/$NewFile |
...
# If you are using Spamprep, the following line should be uncommented #/var/CommuniGate/spam/spamprep "$myCgate/$QueuePath" "$ReturnPath" "$Envelope" | /usr/bin/spamc -d 127.0.0.1 -f >> "$myCgate/Submitted/$NewFile" |
...
#Now submit the file by renameing it to .sub mv /var/CommuniGate/Submitted/$NewFile /var/CommuniGate/Submitted/$FinalFile |
...
# done. exit 0; |
...
|