Schlagwort: Linux

E-Mail Postfach mit imapfilter (vor)sortieren

Seit einiger Zeit verwende ich das IMAP Protokoll, um meine E-Mails auf meiner Workstation, meinem Laptop sowie meinem Smartphone abrufen zu können. Das IMAP Protokoll bietet den Vorteil Ordner zu erstellen und die Mails so zu Sortieren.

Allerdings störte ich mich zunehmend daran, die Mails selber in die Ordner abzulegen, ich wollte dies automatisieren.
Zunächst verwendete ich die Filterfunktion von Mozilla Thunderbird, allerdings wurde es mir auf Dauer zu mühsam, die neuen Filterregeln jeweils auf der Workstation wie auch auf dem Laptop einzutragen. Auf dem Smartphone gab es eine solche Möglichkeit erst gar nicht.
So suchte ich nach einer Lösung, die unabhängig vom Endgerät die E-Mails (vor)sortieren würde.

Durch einen Blog Artikel stiess ich auf das Linux-Programm imapfilter, welches ich auf meinem Homeserver regelmässig ausführen kann.

Imapfilter sortiert E-Mails verschiedener E-Mailkonten ausgehend von einer einfachen Konfigurationsdatei.
Glücklicherweise ist imapfilter in den Ubuntu Quellen enthalten und lässt sich einfach via

sudo apt-get install imapfilter

installieren.

Die Konfigurationsdatei basiert auf der Skriptsprache LUA, diese Sprache ist sehr intuitiv und somit sind einfache Filterregeln schnell realisiert.
Mit einer Konfigurationsdatei können mehrere E-Mailaccounts sortiert werden, sogar ein Account übergreifendes verschieben oder kopieren von E-Mails ist möglich.
Anbei eine Beispielkonfiguration:
sample-config.lua

—————
— Options —
—————
options.timeout = 20
options.subscribe = true

—————-
— Accounts —
—————-

account1 = IMAP {
server = ‚imap.bluewin.ch‘,
username = ‚username‘,
password = ‚password‘,
}

account2 = IMAP {
server = ‚mail.unibe.ch‘,
username = ‚username‘,
password = ‚password‘,
ssl = ’ssl3′,
}

—————–
— Mail rules —
—————–

— Twitter
messages = account1.INBOX:contain_from(‚postmaster.twitter.com‘)
account1.INBOX:move_messages(account1[‚Twitter‘], messages)

— EBay
messages = account1.INBOX:contain_from(‚reply.ebay.ch‘)
account1.INBOX:move_messages(account1[‚eBay – Ricardo‘], messages)

messages = account1.INBOX:contain_from(‚ebay.ch‘)
account1.INBOX:move_messages(account1[‚eBay – Ricardo‘], messages)

— Ricardo
messages = account1.INBOX:contain_from(‚ricardo.ch‘)
account1.INBOX:move_messages(account1[‚eBay – Ricardo‘], messages)
— Facebook
messages = account1.INBOX:contain_from(‚facebookmail.com‘)
account1.INBOX:move_messages(account1[‚Facebook‘], messages)
— Partyguide
messages = account1.INBOX:contain_from(‚partyguide.ch‘)
account1.INBOX:move_messages(account1[‚Partyguide‘], messages)

————————–
— Push to Uni Mailbox —
————————–

— Mails from students.unibe.ch
messages = account1.INBOX:contain_from(’students.unibe.ch‘)
account1.INBOX:move_messages(account2[‚INBOX‘], messages)

— SUB
messages = account1.INBOX:contain_from(’sub.unibe.ch‘)
account1.INBOX:move_messages(account2[‚INBOX/SUB‘], messages)

————————
— Mail rules Uni BE —
————————

— ILIAS
messages = account2.INBOX:contain_field(‚Received‘, ‚curtis.unibe.ch‘)
account2.INBOX:move_messages(account2[‚INBOX/Ilias‘], messages)

— Imatrikulationsdienst (IMD)
messages = account2.INBOX:contain_from( ‚info@imd.unibe.ch‘)
account2.INBOX:move_messages(account2[‚INBOX/IMD‘], messages)

— SUB
messages = account2.INBOX:contain_from(’sub.unibe.ch‘)
account2.INBOX:move_messages(account2[‚INBOX/SUB‘], messages)

— MSDNAA
messages = account2.INBOX:contain_from(‚billing@e-academy.com‘)
account2.INBOX:move_messages(account2[‚INBOX/MSDNAA – Software‘], messages)

— EPub
messages = account2.INBOX:contain_from(’support@epub.unibe.ch‘)
account2.INBOX:move_messages(account2[‚INBOX/ePub‘], messages)

Weitere Informationen zu den Konfigurationsparametern findet man unter:

  • http://imapfilter.hellug.gr/sample.config.lua.txt
  • http://imapfilter.hellug.gr/imapfilter_config.5.txt

Damit nun diese Konfiguration regelmässig ausgeführt wird, erstellt man sich einen Cronjob der das Skript in einem bestimmten Zeitabstand regelmässig aufruft.
Den Cronjob erstelle man folgendermassen:

sudo crontab -e

Anschliessend fügt man folgende Zeile an und speichert das ganze ab.

*/5 * * * * /usr/bin/imapfilter -c /path/to/config-example.lua > /dev/null 2>&1

Somit wird die Konfiguration alle 5 Minuten ausgeführt und allfällige Konsolenausgaben werden ins Datennirwana (/dev/null) weitergeleitet.

Zu guter Letzt muss man noch eine Option in Thunderbird aktivieren, damit man die bereits verschobenen neuen Mails angezeigt erhält, muss Thunderbird jeweils alle Ordner auf neue Mails prüfen anstatt nur des Posteinganges.

Im Menu Bearbeiten -> Einstellungen wählt man den Reiter Erweitert -> Allgemein anschliessend drückt man den Button Konfiguration bearbeiten.

Nun muss man nach der Einstellung:

mail.check_all_imap_folders_for_new

suchen und den Wert auf true setzen.

HTC Desire: Update auf Android 2.2 „Froyo“

 

Symbolbild HTC Desire mit Android 2.2 "Froyo" (Frozen Yoghourt)

Symbolbild Desire mit Android 2.2 „Froyo“ Quelle: http://www.mobilfunk-talk.de

Letztes Weekend hat HTC endlich Wort gehalten und das Update von Android 2.1 („Eclair“) auf Android 2.2 („Froyo“) in Europa veröffentlicht.

Das Update ist momentan nur für nicht gebrandete Handys verfügbar, die gebrandeten Versionen sollen nach ausgiebigen Tests im Zeitraum Ende August veröffentlicht werden.

Glücklicherweise bin ich im Besitz eines nicht gebrandeten Handys, da ich das Gerät ohne Handyabo gekauft habe.

Etwa um 14.30 Uhr war das Update dann endlich auf meinem Handy verfügbar.
Dabei handelte es sich um eine 90MB grosse Zip-Datei, welche alle Daten enthält.
Wichtig ist es, vor dem Software-Update 25MB Telefonspeicher frei zu machen.

Folgende Änderungen habe ich festgestellt:

  • Froyo ist kleiner als Eclaire, nach der Installation war etwa 10MB mehr Speicher vorhanden
  • WLAN Empfangsanzeige wurde verändert
  • Videos lassen sich jetzt auch in HD 720p (1280 x 720) aufnehmen
  • Neue Apps: WLAN-Hotspot, Taschenlampe, News und Wetter, Google Suche, Senden von App
  • Apps lassen sich nun auf die SD-Karte installieren bzw. verschieben
  • Das Kalender Widget, das Appmenü und die Google Galerie scrollen viel flüssiger
  • Die Einstellungswidgets haben Farbe bekommen
  • Anwendungen laden merklich schneller
  • Bilder im Telefonbuch synchronisieren sich jetzt mit Facebook
  • Kamera App hat neue Animationen beim Drehen des Handys erhalten
  • Installation von Apps läuft jetzt flüssig im Hintergrund, d.h. Telefon hängt sich nicht mehr auf beim Installieren
  • Lautstärke im Menü lässt sich jetzt einzeln für Klingelton, Medien, Wecker, Benachrichtigungen Regeln
  • Telefonsperre nun nicht mehr nur durch Muster, sondern auch durch PIN oder Passwort
  • Neuer Menüpunkt, welcher die Dauer der Inaktivität bis zur Sperre abfragt.
  • Kalender öffnet sich jetzt beim Klick auf das Widget verzögerungsfrei
  • Facebookgeburtstage werden im Kalender angezeigt
  • Neues Design der SMS App
  • Der Browser unterstützt nun Flash 10 vollständig

Anbei ein paar Screenshots von den wichtigsten Änderungen in Froyo.

APC USV Master / Slave Konfiguration

Nachdem wir immer wieder Probleme mit unseren USV-Anlagen (schwache Batterie und Probleme mit dem Netzkommando) an unseren zwei Servern hatten, haben wir uns entschlossen die alten eigentlich für den Desktopeinsatz vorgesehenen Geräte durch ein leistungsfähigeres Gerät für den Serverbetrieb zu ersetzen.
Da wir bereits zuvor unter ubuntu mit dem USV Dienst apcupsd sowie einer APC USV gearbeitet haben, lag der Entscheid nahe wieder ein Gerät vom Hersteller APC zu erwerben.

Nach kurzer Selektion entschieden wir uns für das Model APC smartUPS 1000.

 

APC Smart-UPS 1000

Quelle: http://www.apc.com

Da die USV nun für zwei Server zuständig ist, musste die Software, die das automatische Herunterfahren der Server bei längerem Stromausfall steuert, im Master/Slave Modus konfiguriert werden.
Die USV ist mit dem Masterserver durch ein serielles Kabel (RS-232) verbunden. Durch diese Verbindung lassen sich die wichtigsten Daten der USV auslesen.
Der Slave-Server bezieht seine Informationen vom Masterserver über eine Ethernet Verbindung.

Der apcupsd Dienst übernimmt je nach Konfiguration die Funktion des Master oder Slave Servers.
Zur Überwachung der expliziten Werte verwende ich das apcupsd-cgi Paket in Verbindung mit einem Apache Server.

Die Installation von apcupsd und apcupsd-cgi gestaltet sich unter ubuntu wie folgt:

  • Die Pakete befinden sich in den Quellen und lassen sich via:

    sudo apt-get install apcupsd apcupsd-cgi

    installieren

  • Das Konfigurationsfile unter /etc/apcupsd/apcupsd.conf gemäss folgenden Beispielen bearbeiten
  • Die Datei /etc/default/apcupsd öffnen und is_configured=yes einfügen/überschreiben
  • Dienst neu starten mit

    sudo /etc/init.d/apcupsd restart

  • Das Monitoring-Tool ist erreichbar über http://servername/usv/multimon.cgi
    Zuvor muss allerdings noch die Apache Konfiguration angepasst werden

# apc ups scripts
ScriptAlias /usv/ /usr/lib/cgi-bin/apcupsd/
<directory „/usr/lib/cgi-bin/apcupsd“>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</directory>

Master /etc/apcupsd/apcupsd.conf:

UPSNAME SchmidUSV
UPSCABLE smart
UPSTYPE apcsmart
DEVICE /dev/ttyS0
NOLOGINDIR /etc
ONBATTERYDELAY 6
BATTERYLEVEL 15
MINUTES 3
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 0.0.0.0
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0

Slave /etc/apcupsd/apcupsd.conf:

UPSNAME RadonUPS
UPSCABLE ether
UPSTYPE net
DEVICE 192.168.1.38:3551
LOCKFILE /var/lock
ONBATTERYDELAY 10
BATTERYLEVEL 20
MINUTES 3.5
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 127.0.0.1
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 10
NETTIME 10
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0

Must Have Android Apps

Nach einigen Tests und durchstöbern diverser Foren habe ich nun eine Liste meiner Must-Have-Apps für mein HTC Desire zusammen gestellt.
Die Liste ist geordnet nach Kategorie.
Fast alle Apps werden gratis angeboten.

GPS / Position / Sensoren
Compass
Navigon MobileNavigator
Wasserwaage
Sensor List

Netzwerk / Wireless
NetCounter
G-MoN

Kamera
BarcodeScanner

Musik
Shazam

Social Networking / Messenger / Messaging
Seesmic
MSN Talk
SMS Popup

Daten- / Taskmanager
ASTRO FileManager
Advanced Task Killer

Officetools
Documents To Go
MoneyManager

Akku
BatteryTime Lite

SVN Webinterface Style ändern

Auf der Suche nach einer Möglichkeit den Style des SVN Webinterfaces zu ändern, bin ich auf die Seite reposstyle.com gestossen.

SVN Reposstyle

Quelle: reposstyle.com

Die Installation dieses Styles ist relativ einfach, der SVN Ordner muss jedoch über einen WebDAV Ordner via Apache Server erreichbar sein.

  1. Benötige Files von der Seite downloaden.
  2. Entpacken der Dateien in Ordner repos-web.
  3. Dateien ins Hauptverzeichnis des Webservers hochladen
  4. /etc/apache2/mods-enabled/dav_svn.conf anpassen:

    SVNIndexXSLT /repos-web/view/repos.xsl

    hinzufügen

  5. Damit die Versionshistory ausgelesen werden kann, muss in der Datei index.php im Verzeichnis /repos-web/open/log

    $repo = ‚@@Repository@@‘;

    zu

    $repo = ‚file:///path/to/svn/repo‘;

    geändert werden.

Markdown Files zu PDF konvertieren

Markdown ist eine sehr einfache „Markup“ Sprache, um Texte schnell und einfach zu formatieren. Mit einem entsprechenden Markdown Konverter kann man ein einfaches Markdown File in kurzer Zeit ins HTML Format konvertieren.

In der Vorlesung Programmieren 2 der Universität Bern erhalten wir wöchentlich unsere Programmiere Aufgaben in einem in Markdown geschriebenen File. In der Übungsstunde habe ich festgestellt, dass man mit TextMate eine schöne Vorschau generieren kann. Leider ist TextMate nur für den Mac verfügbar, so musste ich mich unter Linux eine andere Lösung finden.

Nach einigen Webrecherchen bin ich auf das Markup Konvertierungstool Pandoc gestossen, welches unter anderem auch das Markdown Format unterstützt.

Pandoc kann man unter Ubuntu via

sudo apt-get install pandoc

installieren.

Pandoc biete eine separates Skript, welches Markdown Dokumente in ein PDF File konvertieren kann (markdown2pdf).

Da mir beim ersten Versuch die PDF Ausgabe noch nicht gefallen hat, habe ich mich daran versucht die Ausgabe zu ändern. Glücklicherweise arbeitet das Skript mit pdflatex, somit war es möglich einen eigenen Latex Header zu erstellen und einzubinden.

Das Programm muss für einen alternativen Header mit folgenden Parametern aufgerufen werden:

markdown2pdf -C head.sty document.mdown -o document.pdf

Das Resultat lässt sich sehen, die Problemstellungen sind nun viel angenehmer zu lesen.

Anbei mein erstelltes Headerfile head.sty

\documentclass[a4paper,10pt,leqno]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{marvosym}

%Seitenlayout%
\usepackage{vmargin}
\setmarginsrb{2.0cm}{2.0cm}{2.0cm}{2.0cm}{0.6cm}{0.6cm}{0.6cm}{0.5cm}

%Schriftart%
\usepackage{mathptmx,charter,courier}
\usepackage[scaled]{helvet}

%Header %
\usepackage{fancyhdr}
\pagestyle{fancy} %eigener Seitenstil
\fancyhf{} %alle Kopf- und Fußzeilenfelder bereinigen
\fancyhead[L]{P2 problemset} %Kopfzeile links
\fancyhead[C]{} %zentrierte Kopfzeile
\fancyhead[R]{markdown2pdf} %Kopfzeile rechts
\renewcommand{\headrulewidth}{0.4pt} %obere Trennlinie
\fancyfoot[C]{\thepage} %Seitennummer
\renewcommand{\footrulewidth}{0.4pt} %untere Trennlinie

Giggle das praktische Git GUI

Auf der Suche nach einem GUI Programm mit dem man die Änderungen einzelner commits praktisch zurückverfolgen kann, bin ich auf das Gnome-Programm Giggle gestossen.

Giggle bietet eine sehr simple und übersichtliche Oberfläche auf der sämtliche Commits in einem Repository sichtbar sind. Man kann diese einzelnen commits anwählen und die gemachten Änderungen sowohl im Textformat wie auch in der Dateistruktur zurückverfolgen.

 

Quelle: http://live.gnome.org/giggle

Giggle ist in den Quellen von (k)ubuntu enthalten und lässt sich leicht via

sudo apt-get install giggle

installieren.

PDF drucken mit Okular

Seit einiger Zeit hatte ich beim Vorlesungsfolien ausdrucke mit dem Druckerspeicher zu kämpfen, die Datenmenge war immer so gross, dass der Speicher bereits nach 1 – 2 Seite Folien mit einigen Grafiken zu klein war.
Die Druckaufträge konnten so nicht ausgeführt werden und es war jedes mal ein mühsames Unterfangen alle Folien einzeln zu drucken.

Nach einigen Tests stelle sich heraus, die Fehlerquelle muss der Adobe Reader sein, denn nur mit dem Adobe Reader wurden die Druckaufträge auf riesige Werte aufgebläht.
Alternativ dazu bietet sich unter Kubuntu der bereits in KDE integrierte PDF-Reader Okular an, welcher die Druckaufträge Speicher sparend ausführt.

Leider ist jedoch das Druckmenu für mehrseitigen Druck pro Blatt nicht so intuitiv wie beim Adobe Reader.
Nach mehreren Versuchen haben sich aber folgende Einstellungen bewährt:

  • 4 Seiten pro Blatt, Querformat: von unten nach oben, links nach rechts mit Duplex Printing: Long-Side
  • 6 Seiten pro Blatt, Hochformat: von unten nach oben, links nach rechts mit Duplex Printing: Long-Side

Gegebenen falls lassen sich auch die Seitenränder der einzelnen Folien drucken.

PDFs zusammenfügen

Zu Beginn des Semesters ist es immer wieder nötig die Vorlesungsfolien auszudrucken oder wenigstens so zusammen zu stellen, dass jede Vorlesung als einzelne PDF-Datei verfügbar ist.
Besonders kompliziert war es in diesem Semester im Fach Programmieren 2, da konnte man sich lediglich die PowerPoint Dateien herunterladen.

Grund genug also um Hand anzulegen und die Dateien selber ins praktische PDF Format zu konvertieren. Das zusammenfügen und sonstige manipulieren von PDFs unter Linux ist mit dem Tool pdftk sehr einfach durchführbar.

Der Workflow war wie folgt:

  1. Sämtliche .ppt Dateien öffnen und als PDF drucken.
  2. Sich ärgern dass alle Folien im Querformat gedruckt wurden, die PDF-Datei aber im Hochformat angezeigt wird.
  3. Gedruckte PDFs richtig nummeriert benennen, damit die Reihenfolge beim zusammenfügen stimmt.
  4. PDF Dateien mit pdfk zu einem File zusammenfügen.

    pdftk *.pdf output output_all.pdf

  5. Gesamtes PDF mit pdftk um 90° gegen Rechts drehen.

    pdftk output_all.pdf cat 1-endE output output_all_rotated.pdf

  6. Sich darüber freuen, dass die mühsame Arbeit endlich erledigt ist 😉

Kleine Linux Probleme

Heute hatte ich mit zwei kleinen Linux Probleme zu kämpfen, welche ich nicht ohne zu googlen lösen konnte.

Zum einen wollte ich die Verbindungsgeschwindigkeit meiner Netzwerkverbindung herausfinden, da dies seit KDE 4 nicht mehr im Netzwerkmanager angezeigt wird.
Anscheinend gibt es verschiedene Varianten, die einfachste war folgende:

sudo ethtool eth0

Zum andern wollte ich Anwendungen auf dem Server mit grafischer Oberfläche via ssh auf meinem Rechner starten.
Voraussetzung dafür ist, dass die Option X11Forwarding yes in der Konfigurationsdatei /etc/ssh/sshd_config gesetzt ist.
Zum benutzen des X11Forwarding muss die Verbindung mit dem Startparameter -X gestartet werden, also wie folgt:

ssh -X hostname