[Postfixbuch-users] Postfix und crm114

Sandy Drobic postfixbuch-users at japantest.homelinux.com
Mo Feb 5 22:54:25 CET 2007


Thomas Wegner wrote:
> Am Montag, den 05.02.2007, 21:14 +0100 schrieb Sandy Drobic:
> Hallo Sandy!
> 
>> Poste bitte noch mal den aktuellen Stand von:
>>   master.cf
> ----------------------------------------------
> #Eintraguer crm114
> localhost:smtp inet n -         n       -       -       smtpd -o
> smtpd_sender_restrictions= -o content_filter=crm114:dummy

Okay.

> # Interfaces to non-Postfix software. Be sure to examine the manual
> # pages of the non-Postfix software to find out what options it wants.
> ##incoming traffic with crm114 spamfilter
> crm114  unix    -       n       n       -       -       pipe
>   flags=Rq user=filter argv=/etc/postfix/crmfilter.sh -i -f ${sender}
> --${recipient}

Das hier sieht aber immer noch kaputt aus! Genau gesagt, der letzte
Eintrag muss -- leerzeichen ${recipient} sein:

crm114  unix    -       n       n       -       -       pipe
    flags=Rq user=filter argv=/etc/postfix/crmfilter.sh -i -f ${sender}
    -- ${recipient}


>>   postconf -n
> root at chef:/home/tommi # postconf -n
> alias_maps = hash:/etc/aliases
> append_dot_mydomain = no
> config_directory = /etc/postfix
> default_destination_concurrency_limit = 10
> default_privs = nobody
> default_transport = smtp
> fallback_transport = cyrus
> inet_interfaces = all
> local_destination_concurrency_limit = 2
> luser_relay = $root at chef.home
> mail_owner = postfix
> mailbox_transport = cyrus
> mydestination = $myhostname, $mydomain, localhost, localhost.$mydomain
> mydomain = home
> myhostname = chef.home
> mynetworks = 127.0.0.0/8 192.168.1.0/24
> myorigin = $myhostname
> notify_classes = bounce, delay, resource, software
> relayhost = [mail.teleos-web.de]
> smtp_generic_maps = hash:/etc/postfix/generic
> smtp_sasl_auth_enable = yes
> smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
> smtp_sasl_security_options = noanonymous
> smtpd_banner = $myhostname ESMTP
> 
>>   ls -l /etc/postfix/crmfilter.sh
> root at chef:/home/tommi # ls -l /etc/postfix/crmfilter.sh 
> -rwxr-xr-x 1 filter root 1044 2007-02-05 21:37 /etc/postfix/crmfilter.sh
> 
>>   ls -l /etc/ | grep postfix
> root at chef:/home/tommi # ls -l /etc | grep postfix
> drwxr-xr-x  3 root       root       4096 2007-02-05 21:53 postfix
> 
>>   /etc/postfix/crmfilter.sh
> --------------------------------------------
> #!/bin/sh
> #crmfilter by Dirk Datzert
> #erstellt von tommi am 01.02.2007
> #noch nicht getestet fï¿œr Ubuntu 06.10
> #Localize these.
> INSPECT_DIR=/var/spool/filter

Dies hier ist das Verzeichnis, in welches das Script gehen will, um dort
die Tempdateien abzulegen und crm114 über die Tempdateien drüberlaufen
lassen will.

Am besten, du änderst den Aufruf in master.cf auf
/var/spool/filter/crmfilter.sh um, schiebst das Script hier herein, und
wechselst den Besitzer auf filter:users um.

Existiert das Verzeichnis überhaupt?

> #genaendert gemss postfix-handbuch
> #SENDMAIL=/usr/sbin/sendmail
> SENDMAIL="usr/sbin/sendmail -G -i" #NEVER NEVER NEVER use "-t"
> CRM=/usr/bin/crm
> FILEPREFIX=/var/spool/crm/

Keine Ahnung, wofür das Verzeichnis ist, aber existiert das Verzeichnis?

> MAILFILTER=/usr/share/crm114/mailfilter.crm
> 
> #Exit codes from <sysexits.h>
> EX_TEMPFAIL=75
> EX_UNAVAILABLE=69
> 
> #Clean up when done or when aborting
> trap "rm -f in.$$ out.$$" 0 1 2 3 15
> 
> #Start processing
> cd $INSPECT_DIR || {echo $INSPECT_DIR does not exist; exit
> $EX_TEMPFAIL;}
> 
> (grep -iv ^X-CRM114 | cat >in.$$) {echo Cannot save mail to file; exit
> $EX_TEMPFAIL;}
> 
> #If CRM114 has a problem set output=input
> #$SENDMAIL "$@" <in.$$
> #exit $?
> out=in.$$
> 
> #Only mail under 1MB thru CRM114 (size in 512 byte-blocks)!!
> for crm in 'find . -name in.$$ -size -2048 -type f'; do $CRM
> --fileprefix=$FILEPREFIX $MAILFILTER <in.$$ >out.$$ || {echo CRM114
> failed; exit $EX_TEMPFAIL;}
> 
> out=out.$$
> done
> 
> $SENDMAIL "$@" <$out
> 
> exit $?
> -------------------------------------------------------------------
> 
>> Ich empfehle, ein eigenes Verzeichnis für den user filter zu erstellen und
>> dies als Homeverzeichnis einzurichten. Eine Loginshell braucht der user
>> filter nicht. 
> Das habe ich auch soweit gemacht. Das HomeVerzeichnis
> ist /var/spool/filter.
> root at chef:/home/tommi # ls -la /var/spool/filter
> insgesamt 8
> drwxr-x---  2 filter filter 4096 2007-02-01 16:49 .
> 
> 
>> Passe auch das Script an, dass es auf dieses Verzeichnis
>> zugreifen kann.
> ?? Wie. Über die Variable INSPECT_DIR? 

Verschiebe das Script mal dorthin und setze /var/spool/filter las
homeverzeichnis des users filter.

> 
>>  Das Script selbst muss dann auch auf /usr/sbin/sendmail
>> zugreifen können.
> Ich habe jetzt die Rechte auf sendmail so vergeben, dass der user filter
> sendmail auch ausführen darf.
> 
> Wenn der Rest passt (s. o.) kann ich das ja mal testen.
> 

Du kannst den ganzen Filterkrempel auch erst einmal außen vor lassen und
zusehen, dass das Filterscript über Pipe erst einmal richtig durchläuft.
Wenn das klappt, dann integriere den Aufruf von crm in das Script. Politik
der kleinen Schritte halt.

-- 
Sandy

Antworten bitte nur in die Mailingliste!
PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com



Mehr Informationen über die Mailingliste Postfixbuch-users