#whoami

Einige kennen warscheinlich die Geniusfunktion von iTunes die anhand eines Songs eine Playlist mit ähnlichen Liedern erstellt. So etwas ist auch für mpd in Verbindung mit last.fm möglich. Einfach eine neue Datei mit den Namen generator.sh erstellen und das folgende Script hineinkopieren.

#!/bin/bash                                                                                   
ARTIST="$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$1")"
LIMIT=$2
API_KEY='b25b959554ed76058ac220b7b2e0a026'
URL='http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar'

IFS_BAK=$IFS
IFS="
"
for SIMARTIST in `curl ${URL}\&artist=${ARTIST}\&api_key=$API_KEY\&limit=$LIMIT 2> /dev/null | grep -e '<name>.*</name>' | sed 's/.*<name>\(.*\)<\/name>/\1/g'`; do
    for SONG in `mpc search artist $SIMARTIST`; do
        echo $SONG
    done
done

IFS=$IFS_BAK

Das Script dann einfach mit bash generator.sh "artist_name" anzahl > playlist.m3u ausführen. Dabei ist "artist_name" durch den Namen des gewünschten Künstlers zu ersetzen und "anzahl" gibt an wieviele ähnliche Künstler in der Playlist enthalten sein sollen. Die dabei erstellte playlist.m3u kann man jetzt ganz einfach in das Playlistverzeichnis von MPD verschieben.

Aber was macht das Script eigentlich?

Eigentlich ganz einfach. Es fragt bei der last.fm API nach ähnlichen Künstlern zu den angebenen dann schaut das Script ob diese in der eigenen Bibliothek vorhanden sind und gibt die passenden Lieder aus.

Flattr this

Tags: bash, mpd, music.

Da mein Blogeintrag zu diesen Thema leider beim Blogupdate verloren gegangen ist hier eine neue Version.

Vorraussetzungen

In diesen Eintrag wird nicht die Arch Linux Installation erklären auch wird eine gewisse Grundkenntnis von Linuxtools vorrausgesetzt.

Festplatte vorbereiten

Damit man von einer verschlüsselten Festplatte booten kann benötigt sie einen kleinen unverschlüsselten Bereich auf dem der Kernel liegt. Aus diesen Grund sollte zu Beginn die Partitionierunge der Platte etwa so aussehen:

/dev/sda1 - 100MB - 200MB
/dev/sda2 - Der Rest der Festplatte

Damit ein Angreifer keine Rückschlüsse über die Länge der verschlüsselten Daten ziehen kann muss die Festplatte einmal mit Zufallswerten überschrieben werden. Am besten Funktioniert das von der Installationscd mit den Befehl:

# shred -v -n 1 /dev/sda2

Festplatte verschlüsseln

Um die Festplatte verschlüsseln zu können müssen die benötigen Kernelmodule dafür geladen werden.

# modprobe dm-crypt
# modprobe aes-i586

Nun kann man sda2 auch gleich verschlüsseln.

# cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2

Für weitere Verschlüsselungsarten schaue man sich bitte die Dokumentation von cryptsetup an.

Nach der Eingabe des Befehls wird man aufgefordern ein Passwort zu wählen dies sollte möglichst lang(mehr als 16 Zeichen) und kompliziert sein.

Nachdem cryptsetup beendet ist muss die verschlüsselte HDD gleich eingebunden werden:

# cryptsetup luksOpen /dev/sda2 lvm

In /dev/mapper erscheint nun die Gerätedatei lvm.

LVM einrichten

Der Logical Volume Manager sorgt dafür das man mehrere virtuelle Partitionen auf einer einzelnen realen Partition anlegen kann. Bevor man Beginnt sollte man sich also ein Partitionslayout überlegen. Ich selbst verwende folgendes:

/ -> 12 GB
swap -> 1,5*RAM
/home -> Rest

Um nun das LVM einzurichten muss man erstmal eine Volumegroup einrichten.

# pvcreate /dev/mapper/lvm
# vgcreate main /dev/mapper/lvm

In der eben erstellten Volume Group werden jetzt die virtuellen Partitionen angelegt:

# lvcreate -L 12GB -n root main
# lvcreate -L 3GB -n swap main
# lvcreate -l 100%FREE -n home main

/arch/setup

Nun kann durch den Aufruf von /arch/setup mit der Installation begonnen werden, dabei sind folgende Änderungen gegenüber der Installation auf ein normales System zu beachten.

Als Mountpoints wählt man die eben erstellen Partitionen aus. Das Dateisystem ist dabei frei wählbar. /boot muss auf /dev/sda1 angelegt werden.

An den Konfigurationsdateien müssen auch einige Änderungen vorgenommen werden.

/etc/rc.conf

USELVM=”yes”

/etc/mkinitcpio.conf

HOOKS="base udev autodetect pata scsi sata keymap encrypt lvm2 filesystems"

"encrypt" muss unbedingt vor lvm2 erscheinen und sollte die Tastatur noch einige zusätzliche Hooks benötigen so müssen diese vor "encrypt" erscheinen.

/boot/grub/menu.lst

Der Eintrag “cryptdevice=/dev/sda2:main” muss in die kernel Zeile der beiden Booteinträge eingetragen werden. Die fertige Zeile sollte in etwa so aussehen:

kernel /vmlinuz26 cryptdevice=/dev/sda2:main root=/dev/mapper/main-root ro

Der Bootloader selbst sollte auf /dev/sda installiert werden.

Nach Abschluss der Installation einfach neu starten.

Flattr this

DSPAM ist ein lernender, contentbasierter Spamfilter. Im Gegensatz zu Spam Assassin verwendet DSPAM keine statischen Regeln sondern verlässt sich voll und ganz auf den Bayes-Filter. Daher benötig DSPAM zu Beginn etwas Zeit(Lernphase) ehe er effektiv Spam filtert. In diesen Blog wird die Einbindung in ein bestehendes Postfixsetup erklärt auf einer ArchLinux Installation.

Benötigte Software

Fast alle Distributionen bieten bereits fertige Pakete für die Programme an.

Datenbank anlegen

# mysqladmin -u root -p create dspam
# mysql dspam < /var/lib/dspam/mysql/mysql_objects-4.1.sql
# mysql -u root -p
  mysql> grant all on dspam.* to dspam@localhost identified by 'ThisIsMyPassword';

Um die Datenbank sauber zu halten sollte man noch folgendes Script nach /etc/cron.daily kopieren.

#!/bin/bash
mysql -u dspam -p ThisIsMyPassword dspam < /var/lib/dspam/mysql/purge-4.1.sql

DSPAM konfigurieren

DSPAM wird mit der Datei /etc/dspam/dspam.conf konfiguriert. Um die eben erstellte Datenbank mit DSPAM zu benutzen müssen dort folgende Einträge erstellt/angepasst werden:

StorageDriver           /usr/lib/dspam/libmysql_drv.so
MySQLServer             /var/run/mysqld/mysqld.sock
MySQLUser               dspam
MySQLPass               ThisIsMyPassword
MySQLDb                 dspam
MySQLCompress           true
MySQLReconnect          true
MySQLConnectionCache    10

Damit Postfix eine Verbindung zu DSPAM aufbauen kann muss noch folgendes erstellt werden:

ServerDomainSocketPath  "/var/run/dspam/dspam.sock"

und damit DSPAM die klassifizierten Mails wieder an Postfix zurückgeben kann muss folgendes eingetragen werden:

DeliveryHost        127.0.0.1
DeliveryPort        10026
DeliveryIdent       mail.whoami.org.uk 
DeliveryProto       SMTP

Es ist auch möglich direkt von DSPAM einen MDA anzusprechen. Dies ist allerdings nicht Teil dieser Anleitung. Die anderen Einstellungen können nach den eigenen Präferenzen gewählt werden aber folgende sind zumindest Empfohlen.

TrainingMode toe
Feature noise
Feature whitelist
Feature tb=5
Algorithm graham burton
Tokenizer osb
PValue bcr

Sollte der Eintrag noch nicht vorhanden sein so muss auch noch

Trust dspam

eingetragen werden.

Eine Erklärung der weiteren Settings gibt es hier.

Postfix Einstellungen

Damit Postfix Mails an DSPAM weitereicht muss in /etc/postfix/master.cf folgende Zeile zum smtp service hinzugefügt werden:

-o content_filter=lmtp:unix:/var/run/dspam/dspam.sock

Damit Postfix von DSPAM klassifizierte Mails wieder annimmt musst in der gleichen Datei folgender Eintrag neu erstellt werden.

localhost:10026 inet  n -       n       -       -        smtpd
  -o content_filter=
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks=127.0.0.0/8
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8

Wenn später das umlernen von bereits bewerteten Mails via Mail möglich sein soll muss folgendes an das Ende der master.cf gesetzt werden:

dspam-retrain unix -    n    n    -    -    pipe
  flags=Rhq user=dspam argv=/usr/bin/dspam --mode=toe --class=$nexthop --source=error --user ${sasl_username}

In der /etc/postfix/aliases sollten folgende beide Zeilen hinzugefügt werden:

ham: ham@meine.domain
spam: spam@meine.domain

In die /etc/postfix/transport muss folgendes eingetragen werden.

spam@meine.domain    dspam-retrain:spam
ham@meine.domain     dspam-retrain:innocent

Damit später keine nicht authentisierten Benutzer Mail an die ham/spam Adressen schicken können muss noch die Datei /etc/postfix/dspam_check_aliases mit folgenden Inhalt angelegt werden.

/^.*(spam|ham)@.*$/ REJECT

Jetzt sollte man nicht vergessen mit postmap die lookup Tables der 3 eben bearbeiteten Dateien neu zu erstellen.

In der /etc/postfix/main.cf sollte in den smtpd_recipient_restrictions nach permit_sasl_authenticated noch

check_recipient_access pcre:/etc/postfix/dspam_check_aliases

eingetragen werden.

Nach einen Neustart von Postfix und den Start von DSPAM sollte DSPAM jetzt Spam filtern.

Webinterface

Sollte man die Quarantänefunktion von DSPAM nutzen so muss das Webinterface eingerichtet werden um Mails die sich in Quarantäne befinden freischalten zu können.

Die Dateien für das Webinterface befinden sich unter /srv/http/dspam/cgi-bin/. Der httpd sollte so Eingerichtet werden das die cgi Datein als User dspam ausgeführt werden(z.b. mit Apaches suexec). Außerdem eine Authentisierung der User über htpasswd stattfinden. Weiter Informationen zum Webinterface finden man im Wiki von DSPAM

Flattr this

Tags: dspam, mail, postfix.
3rd February 2010GEZ-Forum

Die GEZ hat sich eine neue Website zugelegt. Außerdem wurde in Web 2.0 Manier eine Communityseite eingerichtet. Das witzige an dieser Seite sind die Öffnungszeiten. Ich frage mich wirklich manchmal wer diese Leute berät.

Flattr this

Tags: gez.
8th December 2009Virenscan durch Provider

Unsere Regierung plant zusammen mit den ISPs eine Beratungsstelle für Menschen mit infizierten Computern. Das klingt zuerst eigentlich ganz vernünftig aber um herauszufinden ob ein Rechner infiziert ist soll der Netzwerkverkehr von den Providern gescannt und ausgewertet werden desweiteren ist geplant infizierte Rechner dann beim Surfen auf eine bestimmte Seite umzuleiten die Tipps zum entfernen von Malware enthält.

Ich bin der Meinung das der Virenschutz nicht die Aufgabe der Provider ist und nicht sein darf. Die sollen einfach nur Pakete von A nach B leiten und nicht in diese hineinschauen und schon gar nicht deren Inhalte auswerten. Das kommt nur der Contentmafia entgegen die dann gleich fordern würde den Traffic nach "verdächtigen" P2P zu durchsuchen.

Flattr this

9th October 2009Bundeswehr und IPv6

79.228.162.514.264.337.593.543.950.336, soviele Addressen umfasst ein 32er IPv6 Block. Allerdings ist das der Bundeswehr noch zu wenig... Die wollen offentsichtlich von der RIPE noch viel mehr haben. Warscheinlich möchten die jeden Luftmolekül was je von einen Soldat eingeatmet wird eine eigene IP geben...

Flattr this

Tags: bundeswehr, ipv6.

Nachdem die italienische Sperrliste bei Wikileaks erschienen ist, habe ich mal nen kleines Programm geschrieben das analysiert wo die Server eigentlich stehen. Damit kann man leicht überprüfen ob unsere Politiker damit recht haben das solche Server nur in Timbuktu aufzufinden sind und somit nicht abschalbar.

Korea, Republic of : 1
France : 1
Belarus : 1
China : 1
Belize : 1
Netherlands : 44
United Kingdom : 9
Germany : 5
Georgia : 1
Canada : 3
Czech Republic : 2
Russian Federation : 10
Offline : 23
United States : 180
Japan : 1
N/A : 1
Sweden : 1
Spain : 3

Tja was soll ich sagen wie bereits bei den anderen Listen ist es so das die meisten Server in den USA und Europa stehen und somit sehr leicht abschaltbar wären. Aber nein lieber baut man eine unwirksame Zensurinfrastruktur auf und lässt die Seiten weiterhin online.

Flattr this