[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