MySQL Dump auf der Konsole einspielen

Wenn man auf einem Server eine bestehende MySQL Datenbank einspielen möchte, so kann man natürlich auf Softwarepakete wie phpMyAdmin zurückgreifen. Problematisch wird das ganze immer dann, wenn die einzuspielende Datenbank größer ist oder auf dem Server kein Webserver mit installiertem PHP vorhanden ist.

Für solche Fälle gibt es die MySQL Kommandozeile („mysql“). Existiert die Datenbank noch nicht, so sollte im ersten Schritt mittels „mysql“ eine Datenbank und ein Nutzer erstellt werden:

mysql> CREATE DATABASE datenbankname;
mysql> GRANT ALL PRIVILEGES ON datenbankname.* TO nutzername@localhost IDENTIFIED BY 'geheim';
mysql> quit

Anschließend kann der Dump in die neu angelegte Datenbank eingespielt werden:

mysql -u root -p<Passwort> datenbankname < dump.sql

Alternativ kann die Datenbank anstatt mit „root“ auch mit dem neu angelegten Nutzer importiert werden.

PHP, Curl und GD

Seit einigen Tagen läuft diese Webseite auf einer Nginx Instanz mit einer entsprechenden PHP Konfiguration. Bei der minimalen Installation fehlen dabei einige Bibliotheken, welche von entsprechenden PHP Anwendungen benötigt werden. Konkret handelt es sich dabei um „curl“ und „gd“. Um diese auf einem Ubuntusystem nachzurüsten genügt es die Pakete „php5-curl“ und „php5-gd“ zu installieren:

sudo apt-get install php5-curl php5-gd

Im Falle von Nginx müssen dabei keine Änderungen an der Konfiguration vorgenommen werden. Nginx wird bei der Paketinstallation automatisch neugestartet.

Mailpile

Es gibt einige Webmail Clients unter freier Lizenz, wie z.B. Roundcube und SquirrelMail. Allerdings wird man feststellen, das die Auswahl nicht sonderlich groß ist. Ein neuer Stern am Webmail-Himmel ist Mailpile welches unter http://www.mailpile.is/ zu finden ist.

mailpile.is

mailpile.is

Mailpile orientiert sich dabei vom Interface her an Google Mail, was man auf den ersten Blick erkennt. Es bietet dabei natürlich Dinge wie eine Suche, verschiedene Importfunktionen, Tag-Support, eine Kontaktverwaltung und soll eine integrierte PGP Verschlüsselung und Signierung enthalten. Dadurch wird das ganze Paket wesentlich interessanter, da eine eingebaute Verschlüsslung, die Anwendung für Jedermann enorm vereinfacht.

Für das Hosting benötigt man einen Pythonstack, so das es sich nicht für das normale LAMP Webhosting Paket eignet (es sei denn das P steht für Python). Das ist schade, da dadurch sicherlich der Kreis der Benutzer eingeschränkt ist. Mailpile ist freie Software und steht unter der AGPL. Der Quelltext ist auf Github zu finden. Im Moment wird auf Indiegogo Geld für die weitere Entwicklung des Clients gesammelt. Wem das Projekt also zusagt, sollte die Brieftasche zücken.

Probleme beim Ändern des Passwortes unter ownCloud

Wer unter der aktuellen Version von ownCloud (5.0.7) versucht das Passwort des angemeldeten Nutzers zu ändern, kann durchaus mit der Meldung:

Class 'OCA\Encryption\Util' not found at /www/htdocs/owncloud/settings/ajax/changepassword.php#31

beglückt werden. Der Fehler tritt immer dann auf wenn die App „Encryption“ nicht aktiv ist und man das Passwort ändern möchte. Um den Fehler zu umgehen gibt es zwei Möglichkeiten. Die erste Möglichkeit ist die Aktivierung der entsprechenden App um anschließend das Passwort zu ändern. Die zweite Möglichkeit ist es den Patch welcher im Bugreport verlinkt ist, in die eigene ownCloud Version zu integrieren. Danach klappt es mit dem Passwortwechsel.

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.