This is something that I had running, but had to revise because of upgrades. Basically I want to send off incoming mail in GroupWise 2018 to SpamAssassin for analysis.
In GW this is relatively easy, you define a third-party dir and then what you need to do is to have a process that does this:
A) Move files from the \send directory to the \third\send directory.
2) Move files from the \third\recieve directory to the \receive directory.
And
C) Move files from the \third\results directory to the \results directory.
An added twist is that the received files have a preamble that needs to be removed and put back after processing by sa.
I intitially did this as a script that was kicked off by cron every 2 minutes, but would using the watch command be a bette choice, ie watch -n 30 myscript.sh
I have added the script below. Feel free to suggest improvements or to shoot it down in flames. Bash is not my programming language of choice
[CODE]#!/bin/bash
INFILES=/media/nss/GWVOL/gw/gw6dom/wpgate/gwia/third/receive/*
TMPFILES=/tmp/sa/
OUTFILES=/media/nss/GWVOL/gw/gw6dom/wpgate/gwia/receive/
SENDIN=/media/nss/GWVOL/gw/gw6dom/wpgate/gwia/send/*
SENDOUT=/media/nss/GWVOL/gw/gw6dom/wpgate/gwia/third/send/
RESULTSIN=/media/nss/GWVOL/gw/gw6dom/wpgate/gwia/third/results/*
RESULTSOUT=/media/nss/GWVOL/gw/gw6dom/wpgate/gwia/results/
This makes an empty dir return nothing, instead of ‘*’
shopt -s nullglob
date +%Y-%m-%d_%H:%M:%S
for f in $INFILES
do
echo “Processing $f file…”
take action on each file. $f store current file name
get basename for temp files
fbname=$(basename “$f” | cut -d. -f1) (without ext)
fbname=$(basename “$f”)
Make a copy
cp $f $TMPFILES$fbname
Make a copy for GW XML header
sed -n -e ‘//,/<\/IaHead>/p’ $f > $TMPFILES$fbname.IaHead
Make a copy of SMTP stuff. Needs to be a case-insesitive match.
sed -n -e ‘/^MAIL FROM:/Ip’ $f > $TMPFILES$fbname.gwstuff
sed -n -e ‘/^RCPT TO:/Ip’ $f >> $TMPFILES$fbname.gwstuff
Make temp file with SMTP stuff removed
sed -e ‘/^RCPT TO:/I d’ $f > $TMPFILES$fbname.tmp
sed -e ‘/^MAIL FROM:/I d’ $TMPFILES$fbname.tmp > $TMPFILES$fbname.tmp2
Make a temp file with GW XML removed
sed -e ‘//,/<\/IaHead>/ d’ $TMPFILES$fbname.tmp2 > $TMPFILES$fbname.tmp3
spamassassin --cf “rewrite_header Subject SPAM(SCORE)” < $TMPFILES$fbname.tmp3 > $TMPFILES$fbname.tmp4
cat $TMPFILES$fbname.IaHead $TMPFILES$fbname.gwstuff $TMPFILES$fbname.tmp4 > $TMPFILES$fbname.tmp5
Push file to GW
echo “copying file”
echo “cp $TMPFILES$fbname.tmp5 $OUTFILES$fbname”
cp $TMPFILES$fbname.tmp5 $OUTFILES$fbname
echo “Removing $f file…”
rm $f
echo “Removing temporary files…”
rm $TMPFILES$fbname.tmp5
rm $TMPFILES$fbname.tmp4
rm $TMPFILES$fbname.tmp3
rm $TMPFILES$fbname.tmp2
rm $TMPFILES$fbname.tmp
rm $TMPFILES$fbname.gwstuff
rm $TMPFILES$fbname.IaHead
done
Take care of outgoing
for f in $SENDIN
do
echo “Moving send file $f …”
fbname=$(basename “$f”)
mv $f $SENDOUT$fbname
done
Take care of results
for f in $RESULTSIN
do
echo “Moving send file $f …”
fbname=$(basename “$f”)
mv $f $RESULTSOUT$fbname
done[/CODE]