Mails von anderen Postfächern einsammeln

Seit einiger Zeit möchte ich gerne von Diensten wie Google Mail und Co. wegkommen. Dazu tragen mittlerweile auch die Enthüllungen aller PRISM und Tempora bei. Ein Feature welches sich bei Google Mail als sehr praktisch erwiesen hat, ist das Einsammeln von der Mails anderer Mailkonten. Nun ist es nicht so das es sich bei diesem Feature um Magie handelt, so das es Nahe lag das ganze in PHP nachzubauen:

<?php
  //Licensed under AGPL
  //by seeseekey

  //Configuration
  //Accounts to collect
  $collectAccounts[""]["server"]="{mail.example.org/novalidate-cert}INBOX";
  $collectAccounts[""]["username"]="user";
  $collectAccounts[""]["passwort"]="secret";

  $collectAccounts[""]["server"]="{mail.example.org/novalidate-cert}INBOX";
  $collectAccounts[""]["username"]="user";
  $collectAccounts[""]["passwort"]="secret";

  //Target server
  $targetServer = "{mail.example.org/ssl/novalidate-cert}";
  $targetUsername = "user";
  $targetPassword = "secret";

  //Operate
  $mboxTarget = imap_open($targetServer, $targetUsername, $targetPassword) or die ("Failed with error: " . imap_last_error());

  //Quellpostfächer öffnen
  while (list($key,$value) = each($collectAccounts))
  {
    $mboxSource = imap_open($value["server"], $value["username"], $value["passwort"]) or die ("Failed with error: ".imap_last_error());
    $mailboxInformation = imap_check($mboxSource);
    $overviewSourceMailBox = imap_fetch_overview($mboxSource, "1:{$mailboxInformation->Nmsgs}", 0);

    //Create folder
    imap_createmailbox($mboxTarget, imap_utf7_encode("$targetServer$key"));

    foreach ($overviewSourceMailBox as $overview)
    {
      $message = imap_fetchheader($mboxSource, $overview->msgno) . imap_body($mboxSource, $overview->msgno);

      if(!imap_append($mboxTarget, mb_convert_encoding("$targetServer$key" . "" . "", "UTF7-IMAP", "ISO-8859-1"), $message,""))
      {
        die ("Error: ". imap_last_error());
      }

      //Mark mail from source mailbox as deleted
      imap_delete($mboxSource, $overview->msgno);
      }

    //Delete all marked mails and close connection to source mailbox
    imap_expunge($mboxSource);
    imap_close($mboxSource);
  }

  imap_close($mboxTarget);
?>

In dem Skript gibt man dabei oben die Konten an von welchen eingesammelt werden soll. Daneben wird natürlich auch das Zielkonto definiert. Der erste Parameter von „$collectAccounts“ definiert dabei den Ordner in welchen die Mails im Zielkonto geschoben werden. Der Quellcode ist auf GitHub zu finden und steht unter der AGPL.

Popular Convention

Das schöne an zentralen Sammlungen ist das man sie relativ einfach auswerten kann. In diesem Fall geht es um die Auswertung der GitHub Repositories. Wie der Name „Popular Convention“ andeutet geht es darum aus den Quelltexten bestimmte Informationen über bevorzugte Konventionen wie z.B. Leerzeichen vs. Tabs zu extrahieren.

Popular Convention und Scala

Popular Convention und Scala

Das Ergebnis kann man sich auf der Webseite http://sideeffect.kr/popularconvention/ für die Sprachen Javascript, Java, Python und Scala anschauen. Die Software zur Auswertung ist dabei freie Software und steht unter der MIT Lizenz und kann unter https://github.com/outsideris/popularconvention bezogen werden.

Präsentationen im Browser

Es muss nicht immer Powerpoint oder LibreOffice Impress sein. Es geht auch einfacher (und schöner) wie impress.js beweist. Dabei handelt es sich um ein Framework basierend auf CSS3 Transforms welches sich für Präsentationen im Browser eignet.

Das impress.js Demo

Das impress.js Demo

Einen Eindruck der Fähigkeiten von impress.js kann man sich auf der entsprechenden Demoseite verschaffen. Das ganze ist dabei freie Software und unter der GPL sowie der MIT-Lizenz lizenziert. Der Quellcode ist auf Github unter https://github.com/bartaz/impress.js zu finden.

Owncloud als vollwertige Cloudlösung

Die freie Software ownCloud hat mittlerweile die Version 5.0.7 erreicht. Im Standardumfang gibt es dabei eine Lösung um Dateien zu synchronisieren, ein Adressbuch, einen Kalender, eine Aufgabenverwaltung und Funktionen für Musik und Bilder. Allerdings fehlen noch einige Dinge für den täglichen Bedarf. Dabei stellt sich natürlich die Frage welche dies sind. Aus meiner Sicht sollte ownCloud folgendes beherrschen:

  • Aufgaben
  • Kalender
  • Synchronisation
  • Mail
  • News Reader
  • Notizen

Einige der aufgezählten Anwendungen lassen sich dabei über das App Repository einspielen. Apps wie der News Reader und die Lesenzeichenverwaltung werden dabei mitgeliefert und müssen nur noch installiert werden. Viel interessanter ist es allerdings sich das ownCloud Repository auf GitHub anzuschauen. Dort finden sich unter anderem Apps für Notizen („Notes“) und Mail („Mail“), welche augenscheinlich offiziell unterstützt werden, was zu mindestens in der Zukunft das Paket abrunden sollte.

Daneben gibt es in der aktuellen Version die (wiedereingeführte) Möglichkeit die Dateien auf dem Server zu verschlüsseln. Allerdings befindet sich diese Funktion noch in der Testphase so das man hier besondere Vorsicht walten lassen sollte. Natürlich ist das meine Vorstellung davon, was man benötigt um eine vollwertige Lösung sein eigen zu nennen. Deshalb die Frage: Wofür nutzt ihr ownCloud und welche Dienste und Funktionen vermisst ihr?

Kryptografie leicht gemacht

Kryptografie ist meist schwer verdaulich. Allerdings muss das nicht so sein, wie das CrypTool beweist. Dabei handelt es sich genau genommen um drei Anwendungen namens „CrypTool 1“, „CrypTool 2“ und „JCrypTool“. Diese unterscheiden sich dabei ein wenig z.B. bei den Betriebssystemen auf welchen sie laufen. Mit dem besagten Tools ist es möglich die verschiedenen Verschlüsselungsalgorithmen auszuprobieren und durch die Tutorien eine Menge zum Thema zu lernen.

CrypTool 2

CrypTool 2

Die offizielle Seite ist dabei unter http://www.cryptool.org zu finden. Daneben gibt es noch eine Onlineversion unter http://www.cryptool-online.org in welcher Themen Chiffren, Kodierung und Kryptoanalyse besprochen werden. Die Tools selbst sind freie Software und stehen unter der „Apache License v2.0“.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/CrypTool