Bläddra i källkod

Spam and ham filtering for multiple users

Bob Mottram 9 år sedan
förälder
incheckning
bc8a29b94b
1 ändrade filer med 40 tillägg och 30 borttagningar
  1. 40
    30
      src/freedombone

+ 40
- 30
src/freedombone Visa fil

@@ -6333,44 +6333,54 @@ function spam_filtering {
6333 6333
   chown $MY_USERNAME:$MY_USERNAME /home/$MY_USERNAME/.procmailrc
6334 6334
   # filtering scripts
6335 6335
   echo '#!/bin/bash' > /usr/bin/filterspam
6336
-  echo 'USERNAME=$1' >> /usr/bin/filterspam
6337
-  echo 'MAILDIR=/home/$USERNAME/Maildir/.learn-spam' >> /usr/bin/filterspam
6338
-  echo 'if [ ! -d "$MAILDIR" ]; then' >> /usr/bin/filterspam
6339
-  echo '    exit' >> /usr/bin/filterspam
6340
-  echo 'fi' >> /usr/bin/filterspam
6341
-  echo 'for f in `ls $MAILDIR/cur`' >> /usr/bin/filterspam
6342
-  echo 'do' >> /usr/bin/filterspam
6343
-  echo '    spamc -L spam < "$MAILDIR/cur/$f" > /dev/null' >> /usr/bin/filterspam
6344
-  echo '    rm "$MAILDIR/cur/$f"' >> /usr/bin/filterspam
6345
-  echo 'done' >> /usr/bin/filterspam
6346
-  echo 'for f in `ls $MAILDIR/new`' >> /usr/bin/filterspam
6347
-  echo 'do' >> /usr/bin/filterspam
6348
-  echo '    spamc -L spam < "$MAILDIR/new/$f" > /dev/null' >> /usr/bin/filterspam
6349
-  echo '    rm "$MAILDIR/new/$f"' >> /usr/bin/filterspam
6336
+  echo 'for d in /home/*/ ; do' >> /usr/bin/filterspam
6337
+  echo '    USERNAME=$(echo "$d" | awk -F "/" "{print $3}")' >> /usr/bin/filterspam
6338
+  echo '    if [[ $USERNAME != "git" ]]; then' >> /usr/bin/filterspam
6339
+  echo '        MAILDIR=/home/$USERNAME/Maildir/.learn-spam' >> /usr/bin/filterspam
6340
+  echo '        if [ ! -d "$MAILDIR" ]; then' >> /usr/bin/filterspam
6341
+  echo '           exit' >> /usr/bin/filterspam
6342
+  echo '        fi' >> /usr/bin/filterspam
6343
+  echo '        for f in `ls $MAILDIR/cur`' >> /usr/bin/filterspam
6344
+  echo '        do' >> /usr/bin/filterspam
6345
+  echo '            spamc -L spam < "$MAILDIR/cur/$f" > /dev/null' >> /usr/bin/filterspam
6346
+  echo '            rm "$MAILDIR/cur/$f"' >> /usr/bin/filterspam
6347
+  echo '        done' >> /usr/bin/filterspam
6348
+  echo '        for f in `ls $MAILDIR/new`' >> /usr/bin/filterspam
6349
+  echo '        do' >> /usr/bin/filterspam
6350
+  echo '            spamc -L spam < "$MAILDIR/new/$f" > /dev/null' >> /usr/bin/filterspam
6351
+  echo '            rm "$MAILDIR/new/$f"' >> /usr/bin/filterspam
6352
+  echo '        done' >> /usr/bin/filterspam
6353
+  echo '    fi' >> /usr/bin/filterspam
6350 6354
   echo 'done' >> /usr/bin/filterspam
6355
+  echo 'exit 0' >> /usr/bin/filterspam
6351 6356
 
6352 6357
   echo '#!/bin/bash' > /usr/bin/filterham
6353
-  echo 'USERNAME=$1' >> /usr/bin/filterham
6354
-  echo 'MAILDIR=/home/$USERNAME/Maildir/.learn-ham' >> /usr/bin/filterham
6355
-  echo 'if [ ! -d "$MAILDIR" ]; then' >> /usr/bin/filterham
6356
-  echo '    exit' >> /usr/bin/filterham
6357
-  echo 'fi' >> /usr/bin/filterham
6358
-  echo 'for f in `ls $MAILDIR/cur`' >> /usr/bin/filterham
6359
-  echo 'do' >> /usr/bin/filterham
6360
-  echo '    spamc -L ham < "$MAILDIR/cur/$f" > /dev/null' >> /usr/bin/filterham
6361
-  echo '    rm "$MAILDIR/cur/$f"' >> /usr/bin/filterham
6362
-  echo 'done' >> /usr/bin/filterham
6363
-  echo 'for f in `ls $MAILDIR/new`' >> /usr/bin/filterham
6364
-  echo 'do' >> /usr/bin/filterham
6365
-  echo '    spamc -L ham < "$MAILDIR/new/$f" > /dev/null' >> /usr/bin/filterham
6366
-  echo '    rm "$MAILDIR/new/$f"' >> /usr/bin/filterham
6358
+  echo 'for d in /home/*/ ; do' >> /usr/bin/filterham
6359
+  echo '    USERNAME=$(echo "$d" | awk -F "/" "{print $3}")' >> /usr/bin/filterham
6360
+  echo '    if [[ $USERNAME != "git" ]]; then' >> /usr/bin/filterham
6361
+  echo '        MAILDIR=/home/$USERNAME/Maildir/.learn-ham' >> /usr/bin/filterham
6362
+  echo '        if [ ! -d "$MAILDIR" ]; then' >> /usr/bin/filterham
6363
+  echo '            exit' >> /usr/bin/filterham
6364
+  echo '        fi' >> /usr/bin/filterham
6365
+  echo '        for f in `ls $MAILDIR/cur`' >> /usr/bin/filterham
6366
+  echo '        do' >> /usr/bin/filterham
6367
+  echo '            spamc -L ham < "$MAILDIR/cur/$f" > /dev/null' >> /usr/bin/filterham
6368
+  echo '            rm "$MAILDIR/cur/$f"' >> /usr/bin/filterham
6369
+  echo '        done' >> /usr/bin/filterham
6370
+  echo '        for f in `ls $MAILDIR/new`' >> /usr/bin/filterham
6371
+  echo '        do' >> /usr/bin/filterham
6372
+  echo '            spamc -L ham < "$MAILDIR/new/$f" > /dev/null' >> /usr/bin/filterham
6373
+  echo '            rm "$MAILDIR/new/$f"' >> /usr/bin/filterham
6374
+  echo '        done' >> /usr/bin/filterham
6375
+  echo '    fi' >> /usr/bin/filterham
6367 6376
   echo 'done' >> /usr/bin/filterham
6377
+  echo 'exit 0' >> /usr/bin/filterham
6368 6378
 
6369 6379
   if ! grep -q "filterspam" /etc/crontab; then
6370
-    echo "*/3 * * * * root /usr/bin/timeout 120 /usr/bin/filterspam $MY_USERNAME" >> /etc/crontab
6380
+    echo "*/3 * * * * root /usr/bin/timeout 120 /usr/bin/filterspam" >> /etc/crontab
6371 6381
   fi
6372 6382
   if ! grep -q "filterham" /etc/crontab; then
6373
-    echo "*/3 * * * * root /usr/bin/timeout 120 /usr/bin/filterham $MY_USERNAME" >> /etc/crontab
6383
+    echo "*/3 * * * * root /usr/bin/timeout 120 /usr/bin/filterham" >> /etc/crontab
6374 6384
   fi
6375 6385
   chmod 655 /usr/bin/filterspam /usr/bin/filterham
6376 6386
   sed -i 's/# use_bayes 1/use_bayes 1/g' /etc/mail/spamassassin/local.cf