spamassassin 2.55 + confixx 3.1.2

sollte ich die spam funktion bei confixx nochmal aus und wieder an schalten ?

Ich nutze übrigens IMAP und das geht auch ganz gut soweit auch mit Unterordnern, daran kann es aber nicht liegen oder geht der spamfilter nur mit pop ?
 
ein tail /var/log/mail bringt mir jetzt folgendes:
Code:
Nov  6 14:52:26 h3381 spamd[21433]: connection from localhost [127.0.0.1] at port 46189 
Nov  6 14:52:26 h3381 spamd[24040]: Still running as root: user not specified with -u, not found, or set to root.  Fall back to nobody. 
Nov  6 14:52:26 h3381 spamd[24040]: processing message <01c701ad$42b11520$6c822ecf@deborahwoodson> for web3p6:65534. 
Nov  6 14:52:26 h3381 spamd[24040]: Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/vendor_perl/5.8.1/Mail/SpamAssassin/NoMailAudit.pm line 184. 
Nov  6 14:52:26 h3381 spamd[24040]: Use of uninitialized value in split at /usr/lib/perl5/site_perl/5.8.1/Mail/SpamAssassin/PerMsgStatus.pm line 873. 
Nov  6 14:52:26 h3381 spamd[24040]: Use of uninitialized value in pattern match (m//) at /usr/lib/perl5/site_perl/5.8.1/Mail/SpamAssassin/PerMsgStatus.pm line 880. 
Nov  6 14:52:26 h3381 spamd[24040]: Use of uninitialized value in concatenation (.) or string at /usr/lib/perl5/site_perl/5.8.1/Mail/SpamAssassin/PerMsgStatus.pm line 954. 
Nov  6 14:52:26 h3381 spamd[24040]: clean message (0.0/2.0) for web3p6:65534 in 0.6 seconds, 3489 bytes. 
Nov  6 14:52:26 h3381 postfix/local[24036]: 10533390402: to=<xxxxx@xxxxx.serverkompetenz.net>, orig_to=<xxxx@xxxxxx.de>, relay=local, delay=1, status=sent ("|/usr/bin/procmail")
Nov  6 14:52:27 h3381 postfix/smtpd[24032]: disconnect from unknown[195.39.6.30]
 
so habe gerade mal clamAv installiert, und der funktioniert wunderbar er schreibt auch ordentlich in den Header rein. Warum macht das mein toller SA blos nicht ?
 
So liebe gemeinde es gibt wieder neuigkeiten.
Jetzt schreib er in den E-Mail Header volgendes rein

X-Spam-Checker-Version: SpamAssassin 3.1.7 (2006-10-05) on xxxx.serverkompetenz.net
X-Spam-Level:
X-Spam-Status: No, score=-100.0 required=2.0 tests=ADVANCE_FEE_1, USER_IN_ALL_SPAM_TO autolearn=ham version=3.1.7

warum schreibt er aber in den Header nicht "SPAM" rein ?
 
So ertsmal einen schönen Guten Morgen an alle Frühaufsteher :)

hier ist mein Zwischenbericht:

SA funktioniert.

Ich habe folgendes gemacht:

1. SA 2.55 über yast Deinstalliert SA über cpanp wieder deinstalliert
2. SA 3.1.7 und ClamAV aus dem iNet gesaugt (die Quellen)
3. ClamAV nach folgender Anleitung (von Yakima) installiert
https://serversupportforum.de/threads/suse-clamav-postfix.718/ funktioniert wunderbar
4. SA 3.1.7 via cpan (cpan <enter> i MAIL::SpamAssassin) installiert
5. /etc/procmail angepasst
Code:
DROPPRIVS=yes
LOGFILE=/var/log/procmail
VERBOSE=ON
SHELL=/bin/sh

######
:0fw: spamassassin.lock
* < 256000
| spamc -f

:0
* ^^rom[ ]
{
LOG="*** Dropped F off From_ header! Fixing up. "

#Antivirus#
:0 fhw
| sed -e '1s/^/F/'
}
:0fw

| /usr/local/bin/clamassassin

6. - als erstes /root/confixx/admin/admin.pl ausführen und Spamassassin aktivieren
- danach /root/confixx/confixx_counterscript.pl -ft -fm
ausführen 2 bis 3 mal, damit auch die daten in die local.cf geschrieben werden.
danach /etc/mail/spamassassin/local.cf angepasst und überprüft ob confixx auch richtig die sachen eingetragen hat (die local.cf sollte danach so aus sehen)

So wie ich das verstanden habe is das so, der SA ist generell für den ganzen Server aktiviert, auch wenn der User eigentlich keinen Spamschutz in Confixx hat,.
Wenn dem so ist, gelten die Spam einstellungen in der local.cf z.B. required_score 5.0
Wenn der user aber Spamschutz in confix hat, gelten die werte die er in der Weboberfläche einstellt und in die Datenbank reinschreibt, deshalb habe ich den allgemeinen spamscor auf 20 Punkte hoch gesetzt, so das für alle, die keinen spamschutz aktiviert haben, die mails erst ab einem wert von 20 markiert werden.
Bitte beachtet aber, wenn ihr in der local.cf was verändert, müsst ihr den SA reloaden.
Ach noch was, wenn ich die local.cf geändert habt und danach noch mal das
confixx_counterscript ausführt, sind eure ganzen einstellungen in der local.cf wieder futsch!
Code:
################### CONFIXX SPAMASSASSIN CONFIG FILE #####################
# created at Tue Nov  7 08:31:17 2006
#
#            !!! Do not make any changes in this file !!!
# All your changes will be lost after the file is auto updated next time.
#
#   If you want to add here any custom directive, you should include it
#   to '/root/confixx/safe/spamassassin.inc' file. Its content will be automatically
#   included during the file is autoupdated.
##########################################################################

# START CUSTOM INCLUSION (see /root/confixx/safe/spamassassin.inc)

# SpamAssassin config file for version 3.x

# How many hits before a message is considered spam.
required_score           20.0

# Whether to change the subject of suspected spam
rewrite_header subject  *****SPAM*****

# Encapsulate spam in an attachment
report_safe             1

# Add report into headers
add_header spam Report _REPORT_

# Enable the Bayes system
use_bayes               1

# Enable Bayes auto-learning
bayes_auto_learn              1

# Enable or disable network checks
skip_rbl_checks         0
use_razor2              1
use_dcc                 1
use_pyzor               1

# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages            all

# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales              all

# END OF CUSTOM INCLUSION

# START CONFIXX GENERATED SECTION

all_spam_to                     *@*******.de
all_spam_to                     *@*******.de
all_spam_to                     *@*******.de
all_spam_to                     *@*******.de
all_spam_to                     *@*******.de
all_spam_to                     *@*******.de
all_spam_to                     *@*******.de

###

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        ********

user_scores_sql_custom_query SELECT preference, value FROM spampref WHERE (username = _USERNAME_ OR username = '@GLOBAL') AND server_id='*****************' ORDER BY username ASC

# END OF CONFIXX GENERATED SECTION

7. jetzt folgen die einstellungen für SA in der Weboberfläche von Confixx
- einloggen als ein user z.B. webXpX
- Spamfilter -> und dann auf "Für fortgeschrittene Benutzer" klicken

ich poste hier mal meine Einstellungen die ich da gemacht habe

Code:
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 
bayes_auto_learn_threshold_spam 
ok_languages de
report_safe 2
required_score 1.9
rewrite_header subject ****ACHTUNG SPAM****
use_auto_whitelist 1
use_bayes 1
use_dcc 1
use_pyzor 1
use_razor2 1
whitelist_from_rcvd *@*********.de *********.de
whitelist_from_rcvd *@*********.de *********.de
whitelist_from_rcvd *@*********.de *********.de
whitelist_from_rcvd *@*********.de *********.de

hier mal ein link, der die ganzen optionen recht gut beschreibt http://www.oreilly.de/german/freebooks/spamvirger/pdf/071-114.pdf

So das funktioniert auch recht gut bis auf die Sache mit den bayes und lernen.
Ich weis noch nicht, wie ich dem SA sage die E-Mail, die ich in Ordner XYZ z.B. Spam_lernen reinschiebe, die sollt du das nächte mal als Spam erkennen und z.B. die Mails die im Ordner "kein_spam" liegen, die sollst du das nächste mal als nicht Spam erkennen.

Hat einer von euch da eine ahnung wie ich das am besten umsetzten kann?

Auf diesem Wege möchte ich mich noch mal bei allen bedanken, die mir so gut geholfen haben und so viel gedult hatten.
Ein besonderer Dank geht an HUSCHI :)

LG s3993
 
Last edited by a moderator:
So da jetzt soweit erstmal alles läuft, wollte ich damit beginnen dem SA "gute" und "böse" e-mails lernen aber das funktioniert irgendwie nicht so richtig.

wenn ich
~:/#
Code:
spamassassin --lint
[15703] warn: config: failed to parse line, skipping: auto_learn 1
[15703] warn: config: failed to parse line, skipping: use_dcc 1
[15703] warn: config: failed to parse, now a plugin, skipping: ok_languages all
[15703] warn: lint: 2 issues detected, please rerun with debug enabled for more information

Ausführe kommt da die Warnung.

Wenn ich sa-leran --spam /home/mail/webXpX/Spam
sagt er mir folgendes:
Code:
Learned tokens from 1 message(s) (1 message(s) examined)
bayes: synced databases from journal in 0 seconds: 119 unique entries (119 total entries)
also scheint er es in die DB reinzuschreiben, aber wenn ich dann von dieser gerade als Spam bekannt gegebenen MAil mir noch mal ne Mail schicke, erkennt er die nicht als Spam.

Was kann ich denn noch machen.

Ich benutze folgendes Script, welches nicht von mir kommt, ich habe es nur soweit hin gehend abgeändert, das wenn ein neuer Nutzer angelegt wurde, und wenn das script läuft, werden gleich zwie Ordner angelegt für Spam und No-Spam, mit den entsprechenden User Rechten.

Code:
#!/bin/sh

DBPATH=/var/spool/spamassassin/bayes

##############################################################################
#       SPAM
##############################################################################

# Every user's .Junk folder is considered Spam.
SPAMFOLDER='Spam-lernen'

DOMAINS=/home/mail/*
for domain in $DOMAINS ; do
echo $domain > /tmp/user
INBOXES=$domain/$SPAMFOLDER

for inbox in $INBOXES ; do \

if [ ! -f $inbox ]
then
cd $domain
touch $inbox
USER=`cat /tmp/user | grep web | cut -c12-50`
GRUPPE='poponly'
chown $USER:$GRUPPE $inbox
rm /tmp/user
fi


        sa-learn --spam --no-sync --dbpath $DBPATH --showdots $inbox
        sa-learn --sync
done

done
##############################################################################
#       HAM
##############################################################################

HAMFOLDER='No-Spam-lernen'

DOMAINS1=/home/mail/*
for domain1 in $DOMAINS1 ; do

echo $domain1 > /tmp/user1

INBOXES1=$domain1/$HAMFOLDER

for inbox1 in $INBOXES1 ; do \

if [ ! -f $inbox1 ]
then
cd $domain1
touch $inbox1
USER1=`cat /tmp/user1 | grep web | cut -c12-50`
GRUPPE1='poponly'
chown $USER1:$GRUPPE1 $inbox1
rm /tmp/user1
fi


        sa-learn --ham --no-sync --dbpath $DBPATH --showdots $inbox1
        sa-learn --sync
done

done

Ich hoffe mir antwortet mal jemand, ich komme mir vor als ob ich hier selbstgespräche führe :)
 
aber wenn ich dann von dieser gerade als Spam bekannt gegebenen MAil mir noch mal ne Mail schicke, erkennt er die nicht als Spam.
Er lernt ja nicht die Email als solches sondern die Token. (siehe Bayesscher Filter)
Kurzfassung:
- Es werden also nur einzelne Wörter (Tokens) gerlernt.
- Der sa-learn berechnet die Worthäufigkeit von gelernten Spam-Mails.
- SA berechnet eine Durchschnittszahl über alle Wörter einer zu untersuchenden Email in Prozent.

Dazu muß man sich den Email-Header genau ansehen. Dort steht der Bayes-Wert.

PS: Du gibst Dir richtig viel Mühe mit Deinen Beiträgen. Ich hab nur leider nicht die Zeit ständig reinzuschauen.

huschi.
 
ok danke für die Antwort und die Erklärung.
Bekomme ich es irgendwie anderweitig hin, das ich SA per script E-Mailadressen lernen lassen kann, die in bestimmten Ordnern stehen?
 
danke für deine schnelle Antwort.
Das Hilft mir schon sehr weiter.

Ich stelle mir jetzt aber noch fogendes vor:

Das IMAP Konto schaut in etwa so aus.

IMAP Konto XYZ
|
|
Posteingang
|
|
Sent
|
|
Trash
|
|
SPAM----
| |
| |
| SPAM
| |
| |
| SPAM-lernen
| |
| |
| HAM-lernen
|
ORDNER XYZ


So schaut die Ordnerstruktur in etwa aus (Namen der Ordner sind mir gerade so eingefallen :) )

Jetzt möchte ich, das der User seine neuen Spam Mail in den Ordner SPAM-lernen verschiebt, und das dadurch auch gleich die E-Mail adresse mit geblockt wird.

Sollte mal eine e-Mail im Spam landen, die ken Spam ist, soll der user sie in den HAM-lernen Ordner verschieben, so das sie in zukunft nicht mehr als SPAM erkannt wird.

Ich hatte mal einen eisfair MAil server am laufen und da konnte man das so machen.
Die haben glaube ich auch nur SA verwendet.

Ich hoffe ich konnte mein Problem/Wunsch einigermaßen klar rüber bringen.
 
noch mal ne frage zu dem sa-leran
wie oder woran merke ich ob das lernen überhaupt funktioniert hat,
habe gerade (dank dem link von Huschi) zwei spam datein mit insgesamt 1200 Spams importiert.

Habe auch mal spamassassin -D bayes,learn,dns ausgeführt, dabei is folgendes rausgekommen

Code:
[18960] dbg: dns: is Net::DNS::Resolver available? yes
[18960] dbg: dns: Net::DNS version: 0.59

Was aber seltsam ist, das er nicht aufhört, soll heisen, ich muss das mit crtl + c beenden, mehr als das was da oben steht kamm auch nach 5 minuten nicht.
Ist das bedenklich oder ist das Verhalten normal ?
Sorry wenn ich hier so viele Fragen stelle.
 
Sorry ich schon wieder

Habe gerade versucht deine How To (https://serversupportforum.de/threads/sa-learn-per-email-fuettern.1897/)
zu testen aber wenn ich mit cpan DB_File installieren will kommt am ende das hier.

Code:
CPAN.pm: Going to build P/PM/PMQS/DB_File-1.814.tar.gz

Parsing config.in...
Looks Good.
Checking if your kit is complete...
Looks good
Writing Makefile for DB_File
cp DB_File.pm blib/lib/DB_File.pm
AutoSplitting blib/lib/DB_File.pm (blib/lib/auto/DB_File)
cc -c  -I/usr/local/BerkeleyDB/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -pipe   -DVERSION=\"1.814\" -DXS_VERSION=\"1.814\" -fPIC "-I/usr/lib/perl5/5.8.1/i586-linux-thread-multi/CORE"  -D_NOT_CORE  -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t   version.c
version.c:30:16: db.h: No such file or directory
make: *** [version.o] Error 1
  /usr/bin/make  -- NOT OK
Running make test
  Can't test without successful make
Running make install
  make had returned bad status, install seems impossible

Ich hab keinen schimmer was ich jetzt tun soll damit das funktioniert.
Muss ich eventuell mein Perl updaten, wenn ja, wie mache ich das am besten und vor allem läuft danach auch noch alles so wie vorher (Confixx u.s.w.)?

PS: ein perl -V gibt mir folgendes aus

Code:
Summary of my perl5 (revision 5.0 version 8 subversion 1) configuration:
  Platform:
    osname=linux, osvers=2.6.0-test3, archname=i586-linux-thread-multi
    uname='linux darkstar 2.6.0-test3 #1 smp tue sep 13 14:56:15 utc 2005 i686 i686 i386 gnulinux '
    config_args='-ds -e -Dprefix=/usr -Dvendorprefix=/usr -Dinstallusrbinperl -Dusethreads -Di_db -Di_dbm -Di_ndbm -Di_gdbm -Duseshrplib=true -Doptimize=-O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -pipe'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -pipe',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing'
    ccversion='', gccversion='3.3.1 (SuSE Linux)', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =''
    libpth=/lib /usr/lib /usr/local/lib
    libs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version='2.3.2'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic -Wl,-rpath,/usr/lib/perl5/5.8.1/i586-linux-thread-multi/CORE'
    cccdlflags='-fPIC', lddlflags='-shared'


Characteristics of this binary (from libperl):
  Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
  Locally applied patches:
        SPRINTF0 - fixes for sprintf formatting issues - CVE-2005-3962
  Built under linux
  Compiled at Dec 17 2005 03:22:19
  @INC:
    /usr/lib/perl5/5.8.1/i586-linux-thread-multi
    /usr/lib/perl5/5.8.1
    /usr/lib/perl5/site_perl/5.8.1/i586-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.1
    /usr/lib/perl5/site_perl
    /usr/lib/perl5/vendor_perl/5.8.1/i586-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.1
    /usr/lib/perl5/vendor_perl
 
Last edited by a moderator:
Jetzt möchte ich, das der User seine neuen Spam Mail in den Ordner SPAM-lernen verschiebt, und das dadurch auch gleich die E-Mail adresse mit geblockt wird.
Ich wiederhole: 'Du meinst bestimmt "Emails" und nicht "E-Mailadressen", oder?'
(Bitte auf Details achten, sonst reden wir an einander vorbei.)

Die "Spam/Ham lernen"-Verzeichnisse mußt Du regelmässig durch ein Script durchsuchen lassen und an sa-learn schicken.

spamassassin .....
Was aber seltsam ist, das er nicht aufhört, soll heisen, ich muss das mit crtl + c beenden
Dir sollte langsam klar sein, daß dieser Aufruf eine Email auf STDIN erwartet.

Code:
cc -c  -I/usr/local/BerkeleyDB/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -pipe   -DVERSION=\"1.814\" -DXS_VERSION=\"1.814\" -fPIC "-I/usr/lib/perl5/5.8.1/i586-linux-thread-multi/CORE"  -D_NOT_CORE  -DmDB_Prefix_t=size_t -DmDB_Hash_t=u_int32_t   version.c
version.c:30:16: db.h: No such file or directory
Dir fehlt das devel-Paket der BerkeleyDB.

huschi.
 
wenn ich die BerkleyDB installieren will, kommt folgendes.

Code:
CPAN Terminal> install BerkeleyDB

Installing BerkeleyDB
Could not find or check module 'Module::Signature' [THIS MAY BE A PROBLEM!] at /usr/lib/perl5/site_perl/5.8.1/CPANPLUS/Module/Signature.pm line 51
Running [/usr/bin/perl /usr/bin/cpanp-run-perl Makefile.PL ]...
Parsing config.in...
Looks Good.
Writing Makefile for BerkeleyDB
[ERROR] MAKE failed: Illegal seek cc -c  -I/usr/local/BerkeleyDB/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -pipe   -DVERSION=\"0.31\" -DXS_VERSION=\"0.31\" -fPIC "-I/usr/lib/perl5/5.8.1/i586-linux-thread-multi/CORE"   BerkeleyDB.c
BerkeleyDB.xs:68:16: db.h: No such file or directory
BerkeleyDB.xs:76:2: #error db.h is not for Berkeley DB at all.
BerkeleyDB.xs:215: error: parse error before "DB_ENV"
BerkeleyDB.xs:215: warning: no semicolon at end of struct or union
BerkeleyDB.xs:222: error: parse error before '}' token
BerkeleyDB.xs:222: warning: type defaults to `int' in declaration of `BerkeleyDB_ENV_type'
BerkeleyDB.xs:222: warning: data definition has no type or storage class
BerkeleyDB.xs:226: error: parse error before "DBTYPE"
BerkeleyDB.xs:226: warning: no semicolon at end of struct or union
BerkeleyDB.xs:229: error: parse error before '*' token
BerkeleyDB.xs:229: warning: type defaults to `int' in declaration of 
.
.
.
.
.
.
.
BerkeleyDB.xs: In function `boot_BerkeleyDB':
BerkeleyDB.xs:4250: error: `DB_VERSION_MAJOR' undeclared (first use in this function)
BerkeleyDB.xs:4251: error: `DB_VERSION_MINOR' undeclared (first use in this function)
BerkeleyDB.xs:4251: error: `DB_VERSION_PATCH' undeclared (first use in this function)
BerkeleyDB.xs:4265: error: `DBT' undeclared (first use in this function)
BerkeleyDB.xs:4266: error: request for member `data' in something not a structure or union
BerkeleyDB.xs:4267: error: request for member `size' in something not a structure or union
BerkeleyDB.xs:4267: error: `db_recno_t' undeclared (first use in this function)
BerkeleyDB.xs:4268: error: request for member `flags' in something not a structure or union
/usr/include/bits/mathinline.h: At top level:
BerkeleyDB.xs:926: warning: `btree_compare' defined but not used
BerkeleyDB.xs:975: warning: `dup_compare' defined but not used
BerkeleyDB.xs:1032: warning: `btree_prefix' defined but not used
BerkeleyDB.xs:1081: warning: `hash_cb' defined but not used
BerkeleyDB.xs:1277: warning: `db_errcall_cb' defined but not used
BerkeleyDB.xs:1345: warning: `GetKey' defined but not used
{standard input}: Assembler messages:
{standard input}:122: Error: symbol `status' is already defined
{standard input}:129: Error: symbol `RETVAL' is already defined
{standard input}:135: Error: symbol `RETVAL' is already defined
{standard input}:141: Error: symbol `RETVAL' is already defined
{standard input}:147: Error: symbol `RETVAL' is already defined


[ERROR] Unable to create a new distribution object for 'BerkeleyDB' -- cannot continue

*** Install log written to:
  /root/.cpanplus/install-logs/BerkeleyDB-1163000362.log

Error installing 'BerkeleyDB'
Problem installing one or more modules

Das ist nur ein kleiner Auszug aus dem log.
Irgend eine Idee ?
 
so ok habe jetzt mit yast Berkeley-dev installiert und siehe das jetzt konnte ich auch DB_File installieren.

Danke für deine Hilfe Huschi
 
So jetzt zu deiner Frage, nein ich meine nicht die Emails sondern ja ich meine die e-Mail Adressen.

Wie bekomme ich die denn in eine White bzw. Blackliste rein .
Oder besser gesagt wo stehen diese Listen denn überhaupt im System ?
 
so habe mir jetzt einen Schlachtplan gemacht:

Ich möchte es dem User ermöglichen, das er seine White und Blacklist gleich aus dem mail program raus mit mails füttern kann, sprich einfach die Mails in den dafür vordefinierten Ordner schieben.
Man kann die listen zwar auch in Confixx einstellen aber wie ich finde sehr umständlich. Ich hätte echt keine Lust, 50 e-Mail Adresse nacheinander einzugeben oder ihr etwa :) ?

So jetzt zu meiner vorgehens Weise:


1. Mittels Grep alle e-Mail absender Adressen aus dem SpamMailboxFile auslesen, das ist kein problem da diese "Ordner" ja nur ganz normale Files sind.

2. Da Confixx diese White und Blacklist einträge in der Datenbank speichert, müssen die jetzt gewonnen Adressen ja auch irgendwie in die Datenbank wieder rein :)

Jetzt wird es schon etwas schwieriger.

Da meine mailbox Hauptordner zum glück so heißen wie der User selbst, lese ich zu erst den Namen des Hauptordners aus und mache einen connect zur datenbank. Soweit so gut.
Jetzt wird überprüft ob die einzutragende Adresse schon existiert in einer der beiden Listen, wenn ja wird entweder ein Update SET gemacht oder der eintrag wird nicht berücksichtigt.
z.B. wenn ich die Mailadresse eurer Freundin in der Whiteliste drinn habt und euch jetzt aber wiedererwartend von ihr getrennt hat und sie euch auf grund dessen mit mails zu bomben tut, werdet ihr diese Adresse wohl so schnell wie möglich in eure blacklist verschieben d.h. es mus ein Update gemacht werden von white_list auf black_list.
Wenn sie abber schon in der Black_list drinn sein sollte, muss diese adresse einfach ignoriert werden.

Ich hoffe das ist einigermaßen verständlich rübergekommen.
Das mit der Freundin war nur ein Beispiel und war natürlich nicht auf irgendjemanden persönlich bezogen, mir ist aber gerade nix besseres eingefallen.

Soweit zur Theorie

Jetzt zur Umsetzung

mein Spamfile heißt Spam-lernen

die mails stehen da allle schön aneinander gereit drin sieh code

Code:
Message-ID: <017e01c7033a$6fdd7780$59c0cad2@wyggg>
From: "again page" <wpzhsouhuq@yahoo.com>
To: <dietmarschlesiger@web.de>
Subject: them father port far her
Date: Wed, 08 Nov 2006 05:33:12 -0800
MIME-Version: 1.0
Content-Type: multipart/related;
        boundary="----=_NextPart_000_017B_01C702F7.61BA3780"
X-Priority: 3

ist jetzt natürlich nur ein sehr sehr kleiner ausschnitt

als erstes habe ich mir überlegt alle e-Mailadressen der Absender rauszugrepen.

etwa so

Code:
cat /bla/bla/spam-lernen | grep From:

so das geht wunderbar aber das reicht noch nicht ganz, da das ganze jetzt so aus schaut

Code:
From: "Mariana Bowling" <deborahradio54@caldersantiques.com>
From: "Mariana Bowling" <deborahradio54@caldersantiques.com>
From: "Rosanne Wagner" <akstcglmechmnsdgs@glmech.com>
        *  2.5 FROM_LOCAL_NOVOWEL From: localpart has series of non-vowel letters
 2.5 FROM_LOCAL_NOVOWEL     From: localpart has series of non-vowel letters
From: "Rosanne Wagner" <akstcglmechmnsdgs@glmech.com>
From: "Nicole Punker" <iiopfohcgnj@aaafcu.com>
From: Eva Bullock <daletpnwc@hydroscape.com>
From: "Luke Doran" <Hudson_nibble@cotonella.com>
From: "Cheryl Aycock" <bri@garybrown.com>

so wie ihr seht is da noch ein haufen müll mit dabei also muss der suchfilter noch weiter verfeinert werden.
als erstes schreibe ich das Ergebnis in eine temp datei

Code:
cat /bla/bla/spammail | grep From: > /tmp/spam-lernen

danach ein erneutes egrep
Code:
cat /tmp/spammail | egrep [^*@*.*] | sed 's/<//g' | sed 's/>//g' | sed 's/"//g'

das Ergebnis schaut dann so aus

Code:
Chic Larson rumzalvfl@tstt.net.tt
Anjanette Moyer ypwkowvt@bredbandsbolaget.se
Anjanette Moyer ypwkowvt@bredbandsbolaget.se
Top SEO-news 23 seo-top-news23@gnu.com
Top SEO-news 23 seo-top-news23@gnu.com
Willa Delacruz though@in2net.co.nz
Willa Delacruz though@in2net.co.nz
Pharmacy with the best prices acaedegcabcf@carenton.com
Pharmacy with the best prices acaedegcabcf@carenton.com
Norma Hare deborahnbsudgdwqk@camping-wolfstein.com
Norma Hare deborahnbsudgdwqk@camping-wolfstein.com
accompany her ajzpmrjnptb@panstarexpress.com
accompany her ajzpmrjnptb@panstarexpress.com
Faizel Blandford cowachryse@dpc.net
Janina janina@webtransport.cc

schaut ja schon mal besser aus aber immer noch viel zu viel müll mit dabei, wir wollen ja nur die e-mailadressen haben

nächster versuch

basteln wir uns doch ein kleines script was mehrere Filter nacheinander laufen läst

script:

Code:
#!/bin/sh

cat /home/mail/webxpx/Spam-lernen | grep From: | grep @ | sed 's/From://g' | sed 's/<//g' | sed 's/>//g' | sed 's/"//g' | cut -c2-100 | awk '{print $3}' | grep @ > /tmp/spam
cat /home/mail/webxpx/Spam-lernen | grep From: | grep @ | sed 's/From://g' | sed 's/<//g' | sed 's/>//g' | sed 's/"//g' | cut -c2-100 | awk '{print $2}' | grep @ >> /tmp/spam

less /tmp/spam

das Ergebnis schaut dann so aus

Code:
deborasa1@campjames.com
deborasa1@campjames.com
deborahradio54@caldersantiques.com
deborahradio54@caldersantiques.com
akstcglmechmnsdgs@glmech.com
akstcglmechmnsdgs@glmech.com
iiopfohcgnj@aaafcu.com
daletpnwc@hydroscape.com
Hudson_nibble@cotonella.com
bri@garybrown.com
mithxr@sbcglobal.net
mithxr@sbcglobal.net
bhocvzf@grandenetworks.net
bhocvzf@grandenetworks.net
wpzhsouhuq@yahoo.com
wpzhsouhuq@yahoo.com

und genau das soll ja auch sein :)

obwohl eins is noch icht so schön, es tauchen teilweise doppelte emailadressen auf

ok also dann ebend so

Code:
#!/bin/sh

cat /home/mail/webxpx/Spam-lernen | grep From: | grep @ | sed 's/From://g' | sed 's/<//g' | sed 's/>//g' | sed 's/"//g' | cut -c2-100 | awk '{print $3}' | grep @ > /tmp/spam
cat /home/mail/webxpx/Spam-lernen | grep From: | grep @ | sed 's/From://g' | sed 's/<//g' | sed 's/>//g' | sed 's/"//g' | cut -c2-100 | awk '{print $2}' | grep @ >> /tmp/spam

touch /tmp/newlist; for i in $(cat /tmp/spam); do if [ $(grep -c $i /tmp/newlist) -eq 0 ]; then echo $i >> /tmp/newlist; fi; done; mv /tmp/newlist /tmp/spam

less /tmp/spam

Das Ergebnis schau dann so aus

Code:
ykhgmrohnl@cybercity.dk
yyyuu@floridaroof.com
vdctszgva@cbnyisc.com
yueyyeouao@ciudad.com.ar
my-Tabor@xtremespectrum.com
deborahskoyles@canda.sun.com
deborasa1@campjames.com
deborahradio54@caldersantiques.com
akstcglmechmnsdgs@glmech.com
iiopfohcgnj@aaafcu.com
daletpnwc@hydroscape.com
Hudson_nibble@cotonella.com
bri@garybrown.com
mithxr@sbcglobal.net
bhocvzf@grandenetworks.net
wpzhsouhuq@yahoo.com
aspenmae@mypupsik.com

Wie ihr sehen könnt, sind alle doppelten Einträge verschwunden :)

So ich mache erstmal schluss für heute, morgen gehts dann weiter.

Ich hoffe es besteht überhaupt intresse daran, das ich diesen Versuch hier dokumentiere.
Wenn nicht, dann sagt mir das bitte und ich höre auf hier weiter zu posten.
Wenn ihr einfachere Wege kennt, die zum gleichen ziel führen oder ihr einfachere Filtermechanismen kennt, dann last es mich bitte wissen.

So also dann bis Morgen
 
So ich konnte doch noch nicht so richtig aufhören, hab mal ein script umgebastelt, welches mir aus ALLEN user Ordnern den Spam ausliest und in einde Datei reinschreibt (Der name der datei setzt sich so zusammen: webXpX.spam oder webXpX.ham)

Code:
#!/bin/sh

DBPATH=/var/spool/spamassassin/bayes

##############################################################################
#       SPAM
##############################################################################

# Every user's .Junk folder is considered Spam.
SPAMFOLDER='Spam-lernen'

DOMAINS=/home/mail/*
for domain in $DOMAINS ; do
echo $domain > /tmp/user
INBOXES=$domain/$SPAMFOLDER

for inbox in $INBOXES ; do \

if [ ! -f $inbox ]
then
cd $domain
touch $inbox
USER=`cat /tmp/user | grep web | cut -c12-50`
GRUPPE='poponly'
chown $USER:$GRUPPE $inbox
rm /tmp/user
fi
cd $domain
USER=`cat /tmp/user | grep web | cut -c12-50`

if [ -f /tmp/spam ]
then
rm /tmp/spam
fi

cat $inbox | grep From: | grep @ | sed 's/From://g' | sed 's/<//g' | sed 's/>//g' | sed 's/"//g' | awk '{print $3}' | grep @ > /tmp/spam
cat $inbox | grep From: | grep @ | sed 's/From://g' | sed 's/<//g' | sed 's/>//g' | sed 's/"//g' |awk '{print $2}' | grep @ >> /tmp/spam

touch /tmp/newlist; for i in $(cat /tmp/spam); do if [ $(grep -c $i /tmp/newlist) -eq 0 ]; then echo $i >> /tmp/newlist; fi; done; mv /tmp/newlist /tmp/$USER.spam





    #    sa-learn --spam --no-sync --dbpath $DBPATH --showdots $inbox
     #   sa-learn --sync

done
done

rm /tmp/spam

rm /tmp/user
##############################################################################
#       HAM
##############################################################################

HAMFOLDER='No-Spam-lernen'

DOMAINS1=/home/mail/*
for domain1 in $DOMAINS1 ; do

echo $domain1 > /tmp/user1

INBOXES1=$domain1/$HAMFOLDER

for inbox1 in $INBOXES1 ; do \

if [ ! -f $inbox1 ]
then
cd $domain1
touch $inbox1
USER1=`cat /tmp/user1 | grep web | cut -c12-50`
GRUPPE1='poponly'
chown $USER1:$GRUPPE1 $inbox1
rm /tmp/user1
fi
cd $domain1
USER1=`cat /tmp/user1 | grep web | cut -c12-50`

cat $inbox1 | grep From: | grep @ | sed 's/From://g' | sed 's/<//g' | sed 's/>//g' | sed 's/"//g' | awk '{print $3}' | grep @ > /tmp/spam1
cat $inbox1 | grep From: | grep @ | sed 's/From://g' | sed 's/<//g' | sed 's/>//g' | sed 's/"//g' |awk '{print $2}' | grep @ >> /tmp/spam1

touch /tmp/newlist1; for i in $(cat /tmp/spam1); do if [ $(grep -c $i /tmp/newlist1) -eq 0 ]; then echo $i >> /tmp/newlist1; fi; done; mv /tmp/newlist1 /tmp/$USER1.ham


      #  sa-learn --ham --no-sync --dbpath $DBPATH --showdots $inbox1
       # sa-learn --sync
done


done

rm /tmp/user1
rm /tmp/spam1

für die cracks unter euch:

Ich wäre euch dankbar, wenn ihr den Qellcode mal etwas profihafter gestallten könntet, ich denke , das man das bestimmt noch mehr vereinfachen könnte aber ich mit meinem gefährlichen halbwissen weis es ebend nicht besser als so.

So und jetzt wirklich schluss für heute ;)
 
Nur mal so am Rande:
Du hast Dich jetzt hier auf ein Shell-Script festgelegt.
Aber in welcher Sprache willst Du dann die Datenbank-Abfragen/Updates machen?

Mein Tip:
Überlege Dir erst eine Scriptsprache, mit der Du alles in einem machen kannst (Perl, PHP, Python, tkl), dann paßt alles in ein Script.

huschi.
 
Back
Top