#!/bin/sh
#
# dspam-deliver
#
# Script de entrega de correo con dspam para instalarse
# en los archivos de entrega .qmail
#
# Copyright (c) 2009 - 2010  Felipe Eduardo Sanchez Diaz Duran
# Todos los derechos reservados
#
# 24sep2010a
#

####### Configuracion #######

# Directorio temporal
TMPDIR=/var/tmp/dspam-deliver

# Ruta a dspam
DSPAM=/usr/bin/dspam

# Ruta a maildir
MAILDIRBIN=/usr/bin/maildir

# Ruta a vdeliver
VDELIVER=/usr/bin/vdeliver

#############################


VIRTUALDELIVER=1
# "-L" indica entrega local con maildir
if [ "$1" = "-L" ]; then
   VIRTUALDELIVER=0
   shift
fi


# Primero un archivo temporal
TMPFILE=`mktemp $TMPDIR/dspam-deliver.XXXXXX` || exit 111

# Exportamos todas las variables que qmail-local crea para nosotros
# porque vdeliver necesita varias de ellas

export SENDER  NEWSENDER RECIPIENT USER HOME HOST LOCAL EXT HOST2 HOST3 HOST4 EXT2 EXT3 EXT4 DEFAULT DTLINE RPLINE UFLINE

# Procesamos con dspam

if [ "$VIRTUALDELIVER" = "1" ]; then
   $DSPAM --client --user $EXT@$HOST --deliver=innocent,spam --stdout > $TMPFILE
else
   $DSPAM --client --deliver=innocent,spam --stdout > $TMPFILE
fi


if [ $? -ne 0 ]; then

   # Un error en el procesamiento de dspam causa que entreguemos
   # normalmente el correo. Salimos con 0 para indicarle a qmail-local
   # que continue con la siguiente linea de .qmail que suponemos que
   # es algo como "| /usr/local/bin/vdeliver" o tal vez "./Maildir/"
   #
   # Normalmente saldriamos con 99 para indicarle a qmail-local
   # que ignore el resto del archivo .qmail porque aqui en el script
   # ya habriamos entregado el mensaje procesado con dspam.

   rm -f "$TMPFILE"
   echo "Error en procesamiento de dspam, continuando con instrucciones por default"
   exit 0
fi

# Entreguemos el mensaje
RETVAL=0
if [ "$VIRTUALDELIVER" = "1" ]; then
   cat $TMPFILE | /usr/bin/dos2unix -U | /usr/bin/filepipe $VDELIVER 
   RETVAL=$?
else
   cat $TMPFILE | /usr/bin/dos2unix -U | $MAILDIRBIN $HOME/Maildir/
   RETVAL=$?
fi

   rm -f "$TMPFILE"

if [ $RETVAL -gt 0 ]; then
   exit $RETVAL
else
   exit 99
fi

