[Postfixbuch-users] Vacation auf dem Mailrelay

dast dast at phpaction.de
Mi Jan 18 15:40:44 CET 2006


Hallo Thomas,

Thomas schrieb:

>Dass wäre auch mal interessant für mich.
>Wäre nett wenn Du mir das mal zusenden könntest.
>Frontend wird am Ende sowieso ein eigenes programmiert, wäre also nicht 
>das Problem.
>  
>
Das Grund-Script, aus dem der ganze Filter entstanden ist, ist anbei, du 
musst nur die Datenbank-Funktionalität einbauen bzw es nach Deinen 
wünschen umbauen.

Es überprüft den Absender und versendet eine Mail wenn der Absender ein 
bestimmter ist.

Die Datenbank Funktionalität als Shell-script einzubauen sollte kein 
Problem sein.
Wir verwenden hierzu selbst ein kleines PHP Script, was Dir aber ohne 
die gebrauchten Klassen nichts nützen dürfte.
Das PHP Script bekommt nur Absender, Mail-Datei-Pfad und empfänger 
übergeben und enscheidet dann was zu tun ist.


in der master.cf:

smtp      inet    n    -    n    -    -    smtpd
    -o content_filter=posfilter:dummy
    -o receive_override_options=no_address_mappings
posfilter    unix  -       n       n       -       10      pipe
    flags=Rq user=filter argv=/etc/postfix/filter/scriptname.sh -f 
${sender} -- ${recipient}



das shell-script:

#!/bin/bash

LOGFILE="/etc/postfix/filter/mail.log"

SENDMAIL="/usr/sbin/sendmail -i"
SENDMAIL_PARAM="$1 $2 $3"
SENDMAIL_PARAM_ALL="$@"
MAIL_FROM="$2"  # $2
shift
shift
shift
MAIL_TO="$@" # $4 to end, thanx to Ralf

# Exit codes from <sysexits.h>
EX_TEMPFAIL=75
EX_UNAVAILABLE=69


MAIL_SEARCH_TO="testAcc at phpaction.de"
MAIL_SEARCH_TO_RESPONDER="From: $MAIL_TO\nTo: $MAIL_FROM\nSubject: Out 
of Office\n\nHallo,\n\nbla bla  nicht online.\n\nIhre Nachricht kann 
nicht gelesen werden.\n\nIn dringenden Fragen ....\n\nMit freundlichen 
Grüssen,\n..."


#create tempfile
TMP_original=`mktemp -p /tmp` || { echo $TMP_original does not exist; 
exit $EX_TEMPFAIL; }
                   
#backup mail to tempfile
cat > $TMP_original || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }

#deliver mail to homedir or query-created-outgoing-mails via smtp (bcc's)
$SENDMAIL $SENDMAIL_PARAM_ALL < $TMP_original

#log delivering
echo -e 
$(date)"\tpos:mailfilter\tACTION\tDELIVERD\t$MAIL_TO\t<=\t$MAIL_FROM" >> 
$LOGFILE


#check for action
echo $MAIL_TO | grep -q -i "$MAIL_SEARCH_TO"
if [ $? -eq 0 ];
then
echo -e "$MAIL_SEARCH_TO_RESPONDER"  | $SENDMAIL -f $MAIL_SEARCH_TO -- 
$MAIL_FROM
echo -e 
$(date)"\tpos:mailfilter\tACTION\tRESP\t\t$MAIL_SEARCH_TO\t=>\t$MAIL_FROM\t(because 
mail incoming for '$MAIL_TO')" >> $LOGFILE
fi

rm $TMP_original
                         
exit 0


Grüsse,
Daniel.




Mehr Informationen über die Mailingliste Postfixbuch-users