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

Oliver Rau oliver.rau at koeln.de
Fr Mär 2 15:49:40 CET 2007


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

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=${2##*@}

### 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" )
         $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...
         $ALTERMIME --input=in.$$ \
                    --xheader="$COPYRIGHT_HEADER" || \
                    { echo Message content rejected; exit $EX_UNAVAILABLE; }
         ;;
esac

### back to postfix...
$SENDMAIL -t -i "$@" <in.$$

### ...and bye
exit $?

master.cf
----------------------------------------------------------
smtp      inet  n       -       n       -       -       smtpd
		-o content_filter=discl:
pickup    fifo  n       -       n       60      1       pickup
		-o content_filter=lmtp:127.0.0.1:10030
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
local     unix  -       n       n       -       8       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
maildrop  unix  -       n       n       -       -       pipe
   flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
uucp      unix  -       n       n       -       -       pipe
   flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail 
($recipient)
ifmail    unix  -       n       n       -       -       pipe
   flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
   flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop 
-f$sender $recipient
scalemail-backend unix	-	n	n	-	2	pipe
   flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store 
${nexthop} ${user} ${extension}
127.0.0.1:10030     inet  n      n      n      -      20     spawn
		user=kluser   argv=/opt/kav/5.5/kav4mailservers/bin/smtpscanner
127.0.0.1:10031    inet  n      -      n      -      -      smtpd
	 -o content_filter=
	 -o local_recipient_maps=
	 -o relay_recipient_maps=
	 -o smtpd_restriction_classes=
	 -o smtpd_client_restrictions=
	 -o smtpd_helo_restrictions=
	 -o smtpd_sender_restrictions=
      -o smtpd_recipient_restrictions=permit_mynetworks,reject
	 -o mynetworks=127.0.0.0/8
	 -o strict_rfc821_envelopes=yes
	 -o smtpd_error_sleep_time=0
	 -o smtpd_soft_error_limit=1001
	 -o smtpd_hard_error_limit=1000
discl     unix  -     n       n       -   -   pipe
    flags=Rq user=discl argv=/etc/postfix/disclaimer -f ${sender} -- 
${recipient}

----------------------------------------------------------
main.cf:
...
content_filter = lmtp:127.0.0.1:10030
...


Kai Fürstenberg schrieb:
> Jim Knuth schrieb:
> 
>>Heute (02.03.2007/00:08 Uhr) schrieb Oliver Rau,
>>
>>
>>>hallo zusammen,
>>
>>>die klammerung hat nichts gebracht (die idee hatte ich auch schon); ich
>>>habe einfach die if-abfrage rausgenommen (zurueck zum original) und
>>>siehe da, der disclaimer haengt an der email, siehe source der mail.
>>>nach den abschliessenden tests poste ich morgen die komplette conf zum
>>>topic...

>>
>>ich verfolge das hier schon ne Weile ;) Hängt dann an jeder Mail
>>son Ding dran? Oder kann man das nur für Domain X machen und der
>>Rest (virtuelle Domains auf dem Server) bleibt ohne?
nein, nur an mails, die von den definierten domains kommen

> Sollte vielleicht noch(mal) anmerken: In der Version die ich zuletzt mal 
> verwendet habe (irgendein 0.3.7-Development) wurde der Disclaimer nicht 
> korrekt eingefügt, wenn die Mail sowohl einen Rein-Text-Teil, als auch 
> einen HTML-Teil, als auch ein Attachment enthält. In diesem speziellen 
> Fall wurde in den HTML-Teil kein Disclaimer eingefügt, jedoch im 
> Text-Teil. Die anderen Kombinationen aus Text, HTML und Attachment 
> funktionieren.
verwende auch die letzte dev-version, habe soweit alle -so denke ich ;-) 
- moeglichkeiten durchgespielt und es hat funktioniert.
ein daemlicher outlook will mir zwar noch weissmachen, dass 'unnuetze 
zeilenumbrueche' von ihm entfernt werden muessen, aber das ist dann wohl 
nur noch kosmetischer kram.
> 
> Kai
freundliche gruesse
oliver



Mehr Informationen über die Mailingliste Postfixbuch-users