[Postfixbuch-users] disclaimer in postfix mit kav und altermime
Kai Fürstenberg
kai_lists_postfixbuch at fuerstenberg.ws
Fr Mär 2 20:50:19 CET 2007
Oliver Rau schrieb:
> hallo zusammen,
>
> erstmal herzlichen dank an alle, die mir bei meinem problem geholfen
> haben, ich habe wieder was dazu und postfix noch mehr schaetzen gelernt :-)
>
> wie versprochen, hier die (vorlaeufig) finale version eines
> disclaimer-scripts und die dazugehoerige abgeaendert master.cf,
> vielleicht hilft es dem einen oder anderen...
>
> #!/bin/bash
>
> ### sender domains...
> SENDER_DOMAIN_1=systemlogistik.dpd.de
> SENDER_DOMAIN_2=depot108.dpd.de
> SENDER_DOMAIN_3=depot109.dpd.de
> SENDER_DOMAIN_4=depot180.dpd.de
> SENDER_DOMAIN_5=depot182.dpd.de
> SENDER_DOMAIN_6=depot184.dpd.de
> SENDER_DOMAIN_7=depot186.dpd.de
> SENDER_DOMAIN_8=depot187.dpd.de
[..]
> DOMAIN=${2##*@}
^^
Wieso "2"? Sender müsste doch eigentlich "1" sein, oder? Ansonsten unten
wieder ändern ;-)
> case "$DOMAIN" in
> "$SENDER_DOMAIN_1" | \
> "$SENDER_DOMAIN_2" | \
> "$SENDER_DOMAIN_3" | \
> "$SENDER_DOMAIN_4" | \
> "$SENDER_DOMAIN_5" | \
> "$SENDER_DOMAIN_6" | \
> "$SENDER_DOMAIN_7" | \
> "$SENDER_DOMAIN_8" )
Ich weiss nicht, ob das in der Bash so geht, aber wäre es nicht
einfacher, alles in ein Array zu schreiben und dann zu prüfen, ob der
String drinsteht? Das würde evtl. Erweiterungen oder Verkleinerungen
vereinfachen.
Etwa so (zumindest in PHP):
<?php
$domains = array ("systemlogistik.dpd.de" , "depot108.dpd.de" ,
"depot109.dpd.de" , "depot180.dpd.de" [..] );
if (in_array ($DOMAIN,$domains)) {
<<altermime disclaimer einfügen>>
}
else {
<<altermime header einfügen>>
}
?>
oder so ähnlich.
Dann zu unserem Problem:
Ergänz das Skript doch mal folgendermassen (sind nur ein paar echos):
#!/bin/bash
### sender domains...
SENDER_DOMAIN_1=systemlogistik.dpd.de
SENDER_DOMAIN_2=depot108.dpd.de
SENDER_DOMAIN_3=depot109.dpd.de
SENDER_DOMAIN_4=depot180.dpd.de
SENDER_DOMAIN_5=depot182.dpd.de
SENDER_DOMAIN_6=depot184.dpd.de
SENDER_DOMAIN_7=depot186.dpd.de
SENDER_DOMAIN_8=depot187.dpd.de
COPYRIGHT_HEADER="X-Copyrighted-Material: Please visit http://www.dpd.net"
INSPECT_DIR=/var/spool/discl
### where to find binaries...
SENDMAIL=/usr/sbin/sendmail
ALTERMIME=/usr/local/bin/altermime
### exit codes...
EX_TEMPFAIL=75
EX_UNAVAILABLE=69
### cleaning up...
trap "rm -f in.$$" 0 1 2 3 15
cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist ; exit $EX_TEMPFAIL; }
cat >in.$$ || { echo cannot save file; exit $EX_TEMPFAIL; }
### filter domain from sender...
DOMAIN=${1##*@}
echo "Absender $DOMAIN" >> /tmp/altermime.log
### just allowed domains receive disclaimer...
case "$DOMAIN" in
"$SENDER_DOMAIN_1" | \
"$SENDER_DOMAIN_2" | \
"$SENDER_DOMAIN_3" | \
"$SENDER_DOMAIN_4" | \
"$SENDER_DOMAIN_5" | \
"$SENDER_DOMAIN_6" | \
"$SENDER_DOMAIN_7" | \
"$SENDER_DOMAIN_8" )
echo "Disclaimer einfügen" >> /tmp/altermime.log
$ALTERMIME --input=in.$$ \
# --input=in.$$ >> /tmp/altermime.log \ ### nur fuer
debugging
--disclaimer=/etc/postfix/disclaimer.txt \
--disclaimer-html=/etc/postfix/disclaimer.html \
# --debug \ ### nur fuer debugging
--xheader="$COPYRIGHT_HEADER" || \
{ echo Message content rejected; exit
$EX_UNAVAILABLE; }
;;
*)
### all other get xheader...
echo "Disclaimer einfügen" >> /tmp/altermime.log
$ALTERMIME --input=in.$$ \
--xheader="$COPYRIGHT_HEADER" || \
{ echo Message content rejected; exit
$EX_UNAVAILABLE; }
;;
esac
### back to postfix...
$SENDMAIL -t -i "$@" <in.$$
### ...and bye
exit $?
Das debugging also ausschalten und ein paar Echo-Anweisungen rein.
Dann in /tmp/altermime.log nachsehen, was das skript macht.
Dass der Disclaimer eingefügt wird, wenn du die Abfrage rausnimmst, hast
du schon gesagt, somit funktioniert der Aufruf von altermime. Das
Problem liegt also an der Abfrage. Die Echos sollten eigentlich die
Ursache zeigen.
Kai
Mehr Informationen über die Mailingliste Postfixbuch-users