Spamassassin 3.1.1 ignoriert local.cf

Montesuma

New Member
Hallo,

ich benutze Suse 10.1 mit Spamassassin 3.1.1 und Confixx 3.2.1
Ich habe im Confixx user_prefs eingegeben, die jedoch vom Spamassassing nicht angenommen werden. Confixx hat in die local.cf eingetragen, daß users_prefs aus der SQL datenbank gelesen werden sollen.

In der Datenbank ist auch eine Zeile, wo ich z.B. den required_score von 5.0 auf 6.0 (des einzigen posftfachusers) gestellt habe - die ankommenden Emails an dieses Postfach zeigen immer noch an, daß der required_score 5.0 wäre.

Dann habe ich den required_score manuell in der local.cf geändert, die Emails zeigen immer noch 5.0 an.

Dann habe ich den gesamten Server nach der Phrase 5.0 gesucht und endlich die Datei gefunden, die mit immer 5.0 daraus macht: /usr/share/spamassassin/misc.cf
Wenn ich in dieser Datei den required _score ändere, dann kommen die Emails auch endlich mit diesem geänderten Wert an.

Aber wie bringe ich ihn dazu, daß er die auch noch die user_prefs aus der Datenbank annimmt, die in der local.cf drinnen stehen? Die Logfiles bringen keine Fehlermeldungen. Ich tuh auch brav zwischen jedem test den spamd dienst neu starten.

Ich habe mal die gesamte Datenbankabfrage aus der local.cf in die misc.cf kopiert, hat leider nichts gebracht :D

Warum ignoriert er einfach meine local.cf? :confused:

Code:
required_score  5.3
rewrite_header subject  *****SPAM*****
report_safe     1
add_header spam Report _REPORT_
use_bayes       1
bayes_auto_learn        1
skip_rbl_checks 0
use_razor2      1
use_dcc         1
use_pyzor       1
ok_languages    all
ok_locales       all
# END OF CUSTOM INCLUSION
# START CONFIXX GENERATED SECTION
allow_user_rules 1
user_scores_dsn                 DBI:mysql:confixx:localhost;mysql_socket=/var/lib/mysql/mysql.sock
user_scores_sql_username        confixx
user_scores_sql_password        xxxxxxxxx
user_scores_sql_custom_query SELECT preference, value FROM spampref WHERE (username = _USERNAME_ OR username = '@GLOBAL') AND server_id='xxxxxxxxxxxxxxxxxxxxxxxxxxxx' ORDER BY username ASC
 
Bei der Installation gibt es scheinbar die Möglichkeit die Pfade der Konfigurationsdateien umzubiegen. Gibt es irgendwo nach der Installation die Möglichkeit die bei der Installation verwendeten Pfade auszulesen oder sogar nachträglich zu ändern?
 
Hallo Montesuma,

ich habe das selbe Problem mit der local.cf. Konnte bis dato auch noch keine Lösung dazu finden.

Ich habe ein RootDS Starter von S4Y mit Suse9.3. Spamassassin scheint so vernünftig zu laufen, bis auf das kein autolearn=no|yes|failed in den Header von Spam-Mails setzt, obwohl in der /usr/share/spamassassin/10_misc.cf

PHP:
add_header all Status "_YESNO_, score=_SCORE_ required=_REQD_ tests=_TESTS_ autolearn=_AUTOLEARN_ version=_VERSION_"

eingetragen ist.

sa-learn --dump magic -D bringt mir folgende Ausagbe:

PHP:
debug: SpamAssassin version 3.0.4
debug: Score set 0 chosen.
debug: running in taint mode? yes
debug: Running in taint mode, removing unsafe env vars, and resetting PATH
debug: PATH included '/sbin', keeping.
debug: PATH included '/usr/sbin', keeping.
debug: PATH included '/usr/local/sbin', keeping.
debug: PATH included '/root/bin', keeping.
debug: PATH included '/usr/local/bin', keeping.
debug: PATH included '/usr/bin', keeping.
debug: PATH included '/usr/X11R6/bin', keeping.
debug: PATH included '/bin', keeping.
debug: PATH included '/usr/games', keeping.
debug: PATH included '/opt/gnome/bin', keeping.
debug: Final PATH set to: /sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/b
in:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome/bin
debug: using "/etc/mail/spamassassin/init.pre" for site rules init.pre
debug: config: read file /etc/mail/spamassassin/init.pre
debug: using "/usr/share/spamassassin" for default rules dir
debug: config: read file /usr/share/spamassassin/10_misc.cf
debug: config: read file /usr/share/spamassassin/20_anti_ratware.cf
debug: config: read file /usr/share/spamassassin/20_body_tests.cf
debug: config: read file /usr/share/spamassassin/20_compensate.cf
debug: config: read file /usr/share/spamassassin/20_dnsbl_tests.cf
debug: config: read file /usr/share/spamassassin/20_drugs.cf
debug: config: read file /usr/share/spamassassin/20_fake_helo_tests.cf
debug: config: read file /usr/share/spamassassin/20_head_tests.cf
debug: config: read file /usr/share/spamassassin/20_html_tests.cf
debug: config: read file /usr/share/spamassassin/20_meta_tests.cf
debug: config: read file /usr/share/spamassassin/20_phrases.cf
debug: config: read file /usr/share/spamassassin/20_porn.cf
debug: config: read file /usr/share/spamassassin/20_ratware.cf
debug: config: read file /usr/share/spamassassin/20_uri_tests.cf
debug: config: read file /usr/share/spamassassin/23_bayes.cf
debug: config: read file /usr/share/spamassassin/25_body_tests_es.cf
debug: config: read file /usr/share/spamassassin/25_hashcash.cf
debug: config: read file /usr/share/spamassassin/25_spf.cf
debug: config: read file /usr/share/spamassassin/25_uribl.cf
debug: config: read file /usr/share/spamassassin/30_text_de.cf
debug: config: read file /usr/share/spamassassin/30_text_fr.cf
debug: config: read file /usr/share/spamassassin/30_text_nl.cf
debug: config: read file /usr/share/spamassassin/30_text_pl.cf
debug: config: read file /usr/share/spamassassin/50_scores.cf
debug: config: read file /usr/share/spamassassin/60_whitelist.cf
debug: using "/etc/mail/spamassassin" for site rules dir
debug: config: read file /etc/mail/spamassassin/local.cf
debug: using "/root/.spamassassin/user_prefs" for user prefs file
debug: config: read file /root/.spamassassin/user_prefs
debug: plugin: loading Mail::SpamAssassin::Plugin::URIDNSBL from @INC
debug: plugin: registered Mail::SpamAssassin::Plugin::URIDNSBL=HASH(0x85beb34)
debug: plugin: loading Mail::SpamAssassin::Plugin::Hashcash from @INC
debug: plugin: registered Mail::SpamAssassin::Plugin::Hashcash=HASH(0x8c96aac)
debug: plugin: loading Mail::SpamAssassin::Plugin::SPF from @INC
debug: plugin: registered Mail::SpamAssassin::Plugin::SPF=HASH(0x8c72828)
debug: plugin: Mail::SpamAssassin::Plugin::URIDNSBL=HASH(0x85beb34) implements '
parse_config'
debug: plugin: Mail::SpamAssassin::Plugin::Hashcash=HASH(0x8c96aac) implements '
parse_config'
debug: bayes: 19930 tie-ing to DB file R/O /var/spool/spamassassin/bayes_toks
debug: bayes: 19930 tie-ing to DB file R/O /var/spool/spamassassin/bayes_seen
debug: bayes: found bayes db version 3
debug: Score set 2 chosen.
0.000          0          3          0  non-token data: bayes db version
0.000          0      13622          0  non-token data: nspam
0.000          0       9724          0  non-token data: nham
0.000          0     137308          0  non-token data: ntokens
0.000          0 1170350572          0  non-token data: oldest atime
0.000          0 1170617766          0  non-token data: newest atime
0.000          0 1170618404          0  non-token data: last journal sync atime
0.000          0 1170617809          0  non-token data: last expiry atime
0.000          0     172800          0  non-token data: last expire atime delta
0.000          0      38307          0  non-token data: last expire reduction co
unt

Sagt mir einfach welche Informationen für euch noch von nutzen sind und ich liefere diese nach. Ich hoffe jemand kennt dieses Problem!?

Vielen Dank
starr
 
In einem anderen Forum habe die Lösung gefunden: Die rechte der local.cf waren nicht für den daemon auf lesbar oder ausführbar gesetzt.

ich habe mal testweise

Code:
chmod 777 local.cf
gemacht.

Die required_score Variable wird nun übernommen, doch wird immer noch die SQL Datenbank ignoriert.

Ich kann mich zumindest mit den hinterlegten SQL logindaten der local.cf über phpmyadmin einloggen und die tabelle anschauen. Diese variablen werden beim scannen der email immer noch nicht berücksichtigt. Die Abfrage und die Felder in der MySQL Datenbank stimmen überein. Wie könnte ich weiter eingrenzen?
 
Hallo,

habe festegestellt, dass die amavis.conf einige Einstellungen des SA überschreibt und hier liegt mein Problem.

Wie kann ich beide voneinander sauber trennen?

Hat hier jemand Erfahrung?

Vielen Dank
starr
 
Mein stand ist, daß sich Spamassassin scheinbar nicht auf die Mysql Datenbank connecten kann. Ich finde jedoch nirgends irgendwelche Fehler in den Logdateien. Spamd ist jedoch mit -x gestartet, er sollte es also tun.
 
Jetzt bin ich total verwirrt:

ich habe per /etc/init.d/spamd stop den Daemon Dienst gestoppt und nochmals über Outlook eine Email versendet. Sie kommt trotzdem mit einem X-Spam SpamAssassin 3.1.1 Eintrag an.

Wenn ich dabei per "top" die tasks anschause, dann sehe ich, daß beim empfangen und verarbeiten der Email ein Task Namens Spamassassin kurz erscheint und danach wieder verschwindet.

Also scheint der Spamd gar keine Rolle zu spielen. Warum? In den /etc/postfix config files finde ich keinen einzigen Pfad zu Spamassassin. Wie ist denn Postfix mit Spamassassin verlinkt? Wie kommt er auf die Idee die Mails über Spamassassin laufen zu lassen?
 
Ich habe die Ursache gefunden. Im Postfix wurde nicht definiert, daß Spamc geladen werden muss. Auch irgendeinem Grund wird dann immer spamassassin gestartet und nicht spamc selbst.

Und aus irgendeinem anderen Grund ignoriert spamassassin alle SQL anfragen, jedoch spamd nicht. Darüber gibt es scheinbar keine Docu. Wenn doch, bitte einen Link zu mir.

Mit spamd wird nun sauber auf die SQL daten zugegriffen.



Jedoch:
Spamd fragt richtig an. Die SQL Datenbank gibt auch die Werte zurück, die drinnen stehen (z.B. required_score 7.1). Die Logfiles sagen nach einer Email übertragung das hier aus:
Code:
 spamd[4786]:
Feb  8 17:00:58 hotel672 spamd[4786]: spamd: result: .  0 -  scantime=1.6,size=4734,user=web0p1,uid=0,required_score=7.1,rhost=localhost,raddr=127.0.0.1,rport=22228,mid=<20070208160056.9360F15C81CE@hotel672.server4you.de>,autolearn=ham
Scheint sowei zu stimmen.

Als Email bekomme ich jedoch das hier als Header:
Code:
X-Spam-Status: Yes, score=2.3 required=5.1 tests=AWL,HTML_MESSAGE,
	MISSING_SUBJECT,MSGID_FROM_MTA_ID autolearn=no version=3.1.7
Da steht auf einmal required 5.1, das ist der Wert, der in der local.cf steht. Warum sind die logfiles und die Email Header unterschiedlich? Der ganze Server auf jeden Fall wurde neu gestartet, um Cache zu verhindern.
 
Im einen steht auch "autolearn=ham" und im anderen "autolearn=no".
Ich schätze, Du hast den falschen Eintrag im Logfile gefunden.

huschi.
 
Die Einträge sind richtig. Auch die header Einstellungen sind unterschiedlich, im SQL ist es "*****!SPAM!***** und ankommen tut "*****SPAM*****"

Als ob der von Spamd ausgewertete Inhalt nicht in die Email eingebaut wird. Ich könnte mir vorstellen, daß ich Postfix soweit gebracht habe, daß er spamassassin und spamd gleichzeitig beliefert.

Hier mal die master.cf:
Code:
#
# Postfix master process configuration file.  For details on the format
# of the file, see the Postfix master(5) manual page.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd   -o content_filter=spamassassin

#submission inet n      -       n       -       -       smtpd
#       -o smtpd_etrn_restrictions=reject
#       -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps    inet  n       -       n       -       -       smtpd -o smtpd_tls_wrappermode=yes
#  -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission   inet    n       -       n       -       -       smtpd
#  -o smtpd_etrn_restrictions=reject
#  -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
#tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
smtp      unix  -       -       n       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       n       -       -       smtp
        -o fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
#localhost:10025 inet   n       -       n       -       -       smtpd -o content_filter=
scache    unix  -       -       n       -       1       scache
spamassassin    unix  -       n       n       -       -       pipe
             flags=Rq user=nobody argv=/usr/bin/filter.sh -oi -f ${sender} ${recipient}

#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
cyrus     unix  -       n       n       -       -       pipe
  user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
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=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
procmail  unix  -       n       n       -       -       pipe
  flags=R user=nobody argv=/usr/bin/procmail -t -m /etc/procmailrc ${sender} ${recipient}
tlsmgr    unix  -       -       n       1000?   1       tlsmgr


Wie kann ich prüfen, ob inet vielleicht noch spamassassin zusätzlich startet? Wie gesagt, bevor ich -o content_filter=spamassassin
in die erste Zeile eingebaut habe, wirde immer spamassassin statt spamc gestartet, vielleicht bleibt das noch irgendwie drinnen?!?

laut master.cf gehts ja weiter im filter.sh, hier der Auszug:
Code:
#!/bin/sh

# filter.sh
#
# This script redirects mail flagged as spam to a separate account
# You must first create a user account named "spamvac" to hold the flagged mail

SENDMAIL="/usr/sbin/sendmail -i"
SPAMASSASSIN=/usr/bin/spamc
COMMAND="$SENDMAIL $@"
USER=`echo $COMMAND | awk '{ print $NF }' | sed 's/@.*$//'`
NEW_COMMAND=`echo $COMMAND | awk '{ gsub($NF, "spamvac"); print }'`

# Exit codes from <sysexits.h>
EX_TEMPFAIL=75
EX_UNAVAILABLE=69

umask 077

OUTPUT="`mktemp /tmp/mailfilter.XXXXXXXXXX`"

if [ "$?" != 0 ]; then
    /usr/bin/logger -s -p mail.warning -t filter "Unable to create temporary file."
        exit $EX_TEMPFAIL
        fi

        # Clean up when done or when aborting.
        trap "rm -f $OUTPUT" EXIT SIGTERM

        $SPAMASSASSIN -x -E -u $USER > $OUTPUT
        return="$?"
        if [ "$return" == 1 ]; then
            $NEW_COMMAND < $OUTPUT
                exit $?
                elif [ "$return" != 0 ]; then
                    /usr/bin/logger -s -p mail.warning -t filter "Temporary SpamAssassin failure (spamc return $return)"
                        exit $EX_TEMPFAIL
                        fi

                        $SENDMAIL "$@" < $OUTPUT
                        exit $?


                        hotel672:/usr/bin #

Dieses war nötig, damit an spamc der Postfachname richtig übergeben wurde.
 
Bei 1000 verschiedenen Test habe ich noch folgendes herausgefunden:

Wenn ich in der SQL Tabelle eine Blacklist eintrage, dann werden die Emails aus der Blacklist auch blockiert, trotzdem wir der Header und die requred_score Variable aus der local.cf verwendet, und die der user_prefs in der SQL Tabelle ignoriert. Also irgendwie ganz komisch vermischt.

Ich dachte zuerst, daß die Einstellungen in der config.cf vorrang hätten und habe den header und das required_score ausdokumentiert, aber auch dann wird nicht der Wert aus der SQL Tabelle angezeigt, sondern dann ist der Wert auf einmal wieder standard, also "5.0" und "*****SPAM*****"
 
Fehler gefunden:

Nachdem ich Postfix den Spamc starten liesse, haben zwei Tasks versucht die Email zu bearbeiten. Einmal Spamc, gestartet von Postfix und einmal Spamassissn, gestartet über die procmailrc.

Spamassassin nimmt keine SQL Anfragen wahr, es darf also nur über Spamc/Spamd gehen. Ich habe den Eintrag in der procmailrc von Spamassassain auf spamc geändert und schon sind alle Fehler weg.
 
Back
Top