[Postfixbuch-users] disclaimer in postfix mit kav und altermime

Kai Fürstenberg kai_lists_postfixbuch at fuerstenberg.ws
Do Mär 1 22:31:02 CET 2007


Jan P. Kessler schrieb:
>> Das hier dürfte dein Hauptproblem sein:
>> if [ $DOMAIN == $SENDER_DOMAIN1 -o $DOMAIN == $SENDER_DOMAIN2 ];
>>
>> Das ist falsch. Muss heissen:
>> if [ ${DOMAIN} == ${SENDER_DOMAIN1} -o ${DOMAIN} == ${SENDER_DOMAIN2} ];
>>
>> Die {} sind wichtig, ansonsten versucht das Skript den String als
>> Kommando auszuführen, was dazu führt, dass die Strings niemals
>> übereinstimmen.
>>
>> Bsp.:
>> $ MYDIR=`dirname /usr/local/share/doc/foo/foo.txt`
>> $ echo $MYDIR
>> /usr/local/share/doc/foo
>>
>> $ MYDIR=`dirname /usr/local/share/doc/foo/foo.txt`
>> $ echo ${MYDIR}
>> dirname /usr/local/share/doc/foo/foo.txt
> 
> Nein, die {}-Klamerung dient der Shell nur dazu, Variablennamen vom Text
> zu unterscheiden.
> 
> # 0 jobs, root at outpost:~ # MYDIR=`dirname /usr/local/share/doc/foo/foo.txt`
> # 0 jobs, root at outpost:~ # echo $MYDIR
> /usr/local/share/doc/foo
> # 0 jobs, root at outpost:~ # echo ${MYDIR}
> /usr/local/share/doc/foo
> 
> Ist also identisch. Sinnvoll ist die {}-Klammerung z.B. bei folgendem
> Szenario:
> 
> # 0 jobs, root at outpost:~ # MYFILE=x.txt
> # 0 jobs, root at outpost:~ # echo "Copying $MYFILE $MYFILE_new"
> Copying x.txt
> # 0 jobs, root at outpost:~ # echo "Copying $MYFILE ${MYFILE}_new"
> Copying x.txt x.txt_new
> 
> Und nur dafür... 

Danke, wieder was dazugelernt.

Hab auch direkt mal was ausprobiert:
# MYDIR='dirname /etc/postfix/main.cf'
# echo $MYDIR
dirname /etc/postfix/main.cf
# echo ${MYDIR}
dirname /etc/postfix/main.cf
# MYDIR=`dirname /usr/local/share/doc/foo/foo.txt`
# echo $MYDIR
/usr/local/share/doc/foo
# echo ${MYDIR}
/usr/local/share/doc/foo

.. kommt also auch auf die Art der Anführungszeichen an ..


Hier nochmal das Skript (das interessiert mich jetzt auch ;-) ):
Ich habe das Skript mal getestet. Eigentlich müsste es funktionieren 
(zumindest im groben).

> #!/bin/bash
> 
> SENDER_DOMAIN1=systemlogistik.dpd.de
> SENDER_DOMAIN2=depot180.dpd.de
> COPYRIGHT_HEADER="X-Copyrighted-Material: Please visit 
> http://www.whatever.de"
^^^^
Wenn ich richtig gehe, muss hier lt. RFC ein Leerzeichen am Anfang 
stehen. Evt. falsche Darstellung wg Umbruch im ursprünglichen Posting?
> INSPECT_DIR=/var/spool/discl
> SENDMAIL=/usr/sbin/sendmail
> ALTERMIME=/usr/local/bin/altermime
> 
> EX_TEMPFAIL=75
> EX_UNAVAILABLE=69
> 
> # clean up ...
> trap "rm -f in.$$" 0 1 2 3 15
> 
> cd $INSPECT_DIR || { echo $INSPECT_DIR existiert nicht; exit $EX_TEMPFAIL; }
> 
> cat >in.$$ || { echo Kann eMail nicht speichern; exit $EX_TEMPFAIL; }
> 
> # domain aus uebergebenem Absender filtern:
> DOMAIN=${1##*@}
> 
> if [ $DOMAIN == $SENDER_DOMAIN1 -o $DOMAIN == $SENDER_DOMAIN2 ];
> then
> $ALTERMIME --input=in.$$ \
>             --input=in.$$ >> /tmp/altermime.log \
             ^^^^^^^^^^^^^^
2x --input?
>             --disclaimer=/etc/postfix/disclaimer.txt \
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Lesbar für User discl? Stimmt der Dateiname? Standardmäßig ist der 
Disclaimer ein NULL und wird nur geändert. Ich kann mir vorstellen, 
dass, wenn die Datei nicht lesbar ist, oder nicht gefunden wird, 
altermime ohne zu mucken weiterläuft und NULL als Disclaimer anhängt. 
Aber soweit reichen meine C-Kenntnisse nicht, um das wirklich rauszufinden.
>             --disclaimer-html=/etc/postfix/disclaimer.txt \
>             --debug \
>             --xheader="X-Copyrighted-Material: $COPYRIGHT_HEADER" || \
>             { echo Message content rejected; exit $EX_UNAVAILABLE; }
> else
> $ALTERMIME --input=in.$$ \
>             --xheader="X-Copyrighted-Material: $COPYRIGHT_HEADER" || \
>             { echo Message content rejected; exit $EX_UNAVAILABLE; }
> fi
> 
> $SENDMAIL -i "$@" <in.$$
> 
> exit $?



Mehr Informationen über die Mailingliste Postfixbuch-users