molecules/remaster/mcs/mmt_scripts/deliver.sh
2011-03-17 17:47:59 -05:00

66 lines
2.7 KiB
Bash

#!/bin/sh
# Simple shell-based filter. It is meant to be invoked as follows:
# /path/to/script -f sender recipients...
#INSPECT_DIR="/var/spool/filter"
#DELIVER="/usr/libexec/dovecot/deliver"
#EMAILPUSH="/usr/local/mmt_scripts/emailpush.pl"
#SCHEDULEBE="/usr/local/mmt_scripts/schedulebe.py"
#LOGGER_FACILITY="mail"
#LOGGER_PRIORITY="info"
#LOGGER_PROGRAM_NAME="deliver.sh"
# Exit codes from <sysexits.h>
#EX_TEMPFAIL=75
#EX_UNAVAILABLE=69
source /usr/local/mmt_scripts/config.sh
if [ $? -ne 0 ]; then exit 75; fi
COMMAND=$(which echo); if [ $? -ne 0 ] || [ ! -x $COMMAND ]; then echo "echo command doesn't exist"; exit $EX_TEMPFAIL;fi
COMMAND=$(which cut); if [ $? -ne 0 ] || [ ! -x $COMMAND ]; then echo "cut command doesn't exist"; exit $EX_TEMPFAIL;fi
COMMAND=$(which cat); if [ $? -ne 0 ] || [ ! -x $COMMAND ]; then echo "cat command doesn't exist"; exit $EX_TEMPFAIL;fi
COMMAND=$(which egrep); if [ $? -ne 0 ] || [ ! -x $COMMAND ]; then echo "egrep command doesn't exist"; exit $EX_TEMPFAIL;fi
COMMAND=$(which grep); if [ $? -ne 0 ] || [ ! -x $COMMAND ]; then echo "grep command doesn't exist"; exit $EX_TEMPFAIL;fi
COMMAND=$(which logger); if [ $? -ne 0 ] || [ ! -x $COMMAND ]; then echo "logger command doesn't exist"; exit $EX_TEMPFAIL;fi
# Clean up when done or when aborting.
trap "rm -f in.$$" 0 1 2 3 15
# Start processing.
cd $INSPECT_DIR || {
echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
cat >in.$$ || {
echo Cannot save mail to file $UID; exit $EX_TEMPFAIL; }
LINE=$(egrep -m 1 "by.+with.+[0-9A-Fa-f]+$" in.$$)
HEX=$(echo $LINE | egrep -o " id [0-9A-Fa-f]+$" | cut -d " " -f 3)
if [ -z $HEX ]; then
LINE=$(egrep -m 1 "id [0-9A-Fa-f]+;.+" in.$$)
HEX=$(echo $LINE | egrep -o "id [0-9A-Fa-f]+" | cut -d " " -f 2)
fi
grep -P "^X-MW-Scheduler:\scalendar.myplace.edu$" in.$$
if [ $? -ne 0 ]; then
#SCHEDULEBE_OUT=$(cat in.$$ | $SCHEDULEBE -U $SCHEDULEBE_URL -u $SCHEDULEBE_USERNAME -p $SCHEDULEBE_PASSWORD)
SCHEDULEBE_OUT=$(cat in.$$ | $SCHEDULEBE -U $SCHEDULEBE_URL)
logger -t $LOGGER_PROGRAM_NAME -p $LOGGER_FACILITY.$LOGGER_PRIORITY "mail-id $HEX - schedulebe.py: $SCHEDULEBE_OUT"
fi
#EMAILPUSH_OUT=$($EMAILPUSH "$@" -h $EMAILPUSH_HOSTNAME -p $EMAILPUSH_PORTNO -P $EMAILPUSH_PREFIX)
#logger -t $LOGGER_PROGRAM_NAME -p $LOGGER_FACILITY.$LOGGER_PRIORITY "mail-id $HEX - emailpush.sh: $EMAILPUSH_OUT"
DELIVER_OUT=$($DELIVER "$@" <in.$$)
DELIVER_EXIT_STATUS=$?
if [ $DELIVER_EXIT_STATUS -eq 0 ]; then
logger -t $LOGGER_PROGRAM_NAME -p $LOGGER_FACILITY.$LOGGER_PRIORITY "mail-id $HEX - dovecot deliver: mail sent - exit status $DELIVER_EXIT_STATUS"
else
logger -t $LOGGER_PROGRAM_NAME -p $LOGGER_FACILITY.$LOGGER_PRIORITY "mail-id $HEX - dovecot deliver: error - exit status $DELIVER_EXIT_STATUS"
fi
exit $DELIVER_EXIT_STATUS