Schlagwort: server

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.

SoftwareRAID unter Ubuntu 10.04 SE

Diese Tage wollte ich unseren Familien Fileserver vom langsam ein bisschen angestaubten Kubuntu 8.04 LTS auf die neuste Long Term Support Version Ubuntu 10.04 Server upgraden. In der Hoffnung das ganze sei innerhalb einer Stunde erledigt, startete ich das Unterfangen, doch leider rechnete ich nicht mit Komplikationen beim Installieren des SoftwareRAID.

Bisher war die Festplatten Konfiguration wie folgt:
2 x 400 GB Samsung SATA II Disks.
Software RAID 1 (Mirror) unter Kubuntu 8.04
3 Partitionen:

  • System Partition 15 GB: Mountpoint /
  • Swap Partition 2 GB
  • Daten Partition ~ 383GB: Mountpoint /srv

Der Plan war die bestehende RAID Konfiguration zu übernehmen und nur die System Partition zu formatieren und das neue Betriebssystem zu installieren.

Doch weit gefehlt, die Installationsroutine von Ubuntu 10.04 SE lief zwar wie gewünscht durch, doch nach dem Neustart hatte man bereits die erste Fehlermeldung betreffend des RAIDs. Trotzdem lies sich das System booten und ich entschloss mich zu einem Systemupdate, von welchem ich eine Verbesserung des Zustandes erhoffte.
Diese Entscheidung allerdings war fatal, nach dem obligaten Neustarten beim Updaten von Kernelpakete, bootete das System nicht mehr.

Nach einigen weiteren misslungenen Installationsversuchen, entschied ich mich eine zusätzliche Festplatte für das Betriebssystem einzubauen und in Zukunft nur noch die Datenfestplatten im SoftwareRAID-Verbund zu betreiben.
Nach der Neuinstallation auf die Systemfestplatte sollten die Datenfestplatten neu partitioniert werden, zu einem SoftwareRAID verbund zusammengefügt werden und anschliessend das zuvor gemachte Backup zurück gespielt werden.

Nach dem ich endlich ein lauffähiges, mit allen Sicherheitsupdates versehenes System aufgesetzt hatte, konnte ich mich an die Neu-Konfiguration der Datenfestplatten machen.

Dazu bin ich nach dem ubuntuuser Wikiartikel über Software-RAID vorgegangen.

Allerdings erhielte ich beim erstellen des RAID Arrays immer folgenden Fehler, den ich mir nicht erklären konnte.

user@server:/$ sudo mdadm –create –verbose /dev/md0 –auto=yes –level=1 –raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: Cannot open /dev/sdb1: Device or resource busy
mdadm: Cannot open /dev/sdc1: Device or resource busy
mdadm: create aborted

Obwohl die Partitionen nicht gemounted waren und problemlos unter sudo fdisk -l angezeigt wurden, konnte nicht darauf zugegriffen werden.

Ein cat /proc/partitions lieferte dann des Rätsels Lösung.
Zusätzlich zu den in fdisk sichtbaren Partitionen wurden zwei Partitionen: dm-0 und dm-1 angezeigt.

Nach einigen Recherchen fand ich heraus, dass der Device-Mapper für diese Partitionen / Geräte verantwortlich war.
Aus einem unerfindlichen Grund erkannte der RAID-Device-Mapper, den per Jumper deaktivierten onBoard fake-RAID Controller und erstellte ein RAID-Array-Set, welches die beiden Festplatten blockierte.

Durch das deinstallieren des Paketes dmraid via

sudo apt-get remove dmraid

und anschliessendem Neustarten des Systems, wurden die Devices nun endlich freigegeben und der SoftwareRAID konnte korrekt installiert werden.

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