[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