[Postfixbuch-users] HOWTO: Autoresponder optimal aufsetzen?

Dennis Guhl lists at dguhl.org
Mi Feb 2 01:36:37 CET 2011


On Tue, Feb 01, 2011 at 07:02:26PM +0100, Michael Grimm wrote:
> Hi --

Moin

> Ich möchte so etwas Ähnliches wie echo(bei)tu(minus)berlin(punkt)de einrichten,
> d.h. einen Autoresponder. Mir fehlt aber schlichtweg die Erfahrung, überblicken
> zu können, an welcher Stelle ich diesen in meinem momentanen Setup am besten
> einzufügen soll.
> 
> Das Autoresponder-Script soll als Parameter relevante Headerinhalte und die
> erhaltene Mail empfangen können. Ich möchte alle smtp_recipient_restrictions
> bis einschließlich reject_unauth_destination durchlaufen haben, bevor die Mail
> an die Autoresponder-Adresse bouncen soll.

Da bietet sich eben das ursprüngliche Script der TU Berlin an. Im
Anhang findest Du meine aktuell bei werkelnde Version (die ich von
Ralf Hildebrandt vor ca. sechs bis acht Jahren bekam und immer mal an
Inkompatibilitäten angepasst habe).

> Nach meinem laienhaften Verständnis, könnte ich ein Autoresponder-Sript in einer
> check_recipient_access pcre-Tabelle ansprechen a la (http://www.postfix.org/access.5.html) ...
> 
> /echo at tld.example/	FILTER transport:destination

Sinnvoller ist es das über eine transport map zu erledigen:

# postconf -n | grep transport_maps
transport_maps = btree:/etc/postfix/transport
# cat /etc/postfix/transport
echo at dguhl.org  echo:

Dazu gibt es in der master.cf einen entsprechenden Eintrag:

# grep -A1 "^echo" /etc/postfix/master.cf
echo      unix   -       n       n       -       -       pipe
  flags=DRhu user=nobody argv=/usr/lib/postfix/mailecho 

Das Script 'sieht' folgendermaßen aus:

# ls -la /usr/lib/postfix/mailecho
-rwxr-xr-x 1 postfix postfix 1343 2011-02-02 00:12 /usr/lib/postfix/mailecho*

> ... wobei ich transport in master.cf definieren müßte a la (http://nefaria.com/project_index/autoresponse/) ...
> 
> transport unix - n n - - pipe
>      flags=Fq user=autoresponse argv=/usr/local/sbin/autoresponse -s ${sender} \
> 		-r ${recipient} -S ${sasl_username} -C ${client_address}
> 
> ... wobei mir unklar ist, wie ich destination zu benennen hätte?
> 
> Bevor ich das ausprobiere und eventuell etwas vermurkse, möchte ich ein paar
> Fragen an die Experten loswerden:
> 
> - Ginge das überhaupt, wie gerade beschreiben?
> - Gibt es bessere Ansätze, falls nicht?

Der oben gezeigte dürfte in diese Kategorie fallen ;)

Dennis
-------------- nächster Teil --------------
#!/bin/sh
#set -x

DATE=`/bin/date`

IN=/tmp/ECHO-INPUT.$$
OUT=/tmp/ECHO-OUTPUT.$$
PID=$$
rm -f $IN $OUT

cat > $IN

SUBJECT=`grep "^Subject: " $IN | head -1 | sed "s,^Subject: ,,"`
SENDER=`grep "^From: " $IN | head -1 | sed "s,^From: ,,"`
#SENDER=guhl at ikt.de

if [ "$SENDER" = "" ]
then
     /usr/bin/logger -t echo -i -p mail.info "< From=<>, ignored."
     rm $IN
     exit 0
else
     /usr/bin/logger -t echo -i -p mail.info "< From=<$SENDER>"
fi

echo "From: Mail Echo <echo at dguhl.org>" > $OUT
echo "Subject: Re: $SUBJECT" >> $OUT
echo "To: $SENDER" >> $OUT
echo >> $OUT
cat <<EOT >> $OUT
You have successfully reached the server

           DrHouse.leere.eu in Frankfurt, Germany

In case of problems please contact:
                                      Postmaster at dguhl.org

If you want to use this service for routine monitoring, you *MUST* ask
postmaster at dguhl.org for permission before doing so.

------ This is a copy of your message, including all the headers. ------

EOT

sed 's/^/> /' $IN >> $OUT
echo >> $OUT
echo "  Automagically brought (back) to you by" >> $OUT
echo "                                         dguhl.org Echo Processor" >> $OUT
 
# /usr/lib/sendmail -f"Echo-Daemon at TU-Berlin.DE" -t < $OUT
/usr/sbin/sendmail -t -f "" < $OUT
/usr/bin/logger -t echo -i -p mail.info ">   to=<$SENDER>"
rm -f $IN $OUT
exit 0


Mehr Informationen über die Mailingliste Postfixbuch-users