Dovecot und Punkte im IMAP

Wenn man bei einen normal konfigurierten Dovecot einen IMAP-Ordner mit dem Namen „“ anlegt, wird man im Mailprogramm folgende Ordnerstruktur zu sehen bekommen:

test@example
    org

Der Grund ist darin zu finden, das der Punkt im Falle einer Maildir-Konfiguration standardmäßig als Trennzeichen eingerichtet ist. Möchte man trotzdem IMAP Ordner mit einem Punkt anlegen, so hilft das Dovecot-Plugin „Listescape“. Die Handhabung ist dabei denkbar einfach. In der „conf.d/20-imap.conf“ wird dazu die auskommentierte Zeile:

#mail_plugins =

durch

mail_plugins = listescape

ersetzt. Nun muss in der Datei „10-mail.conf“ im vordefinierten Namespace „inbox“ der Seperator neu definiert werden:

namespace inbox {
  # Namespace type: private, shared or public
  #type = private

  separator = /

  ...
}

Er darf hier nicht auf einen Punkt gesetzt werden, da das ganze sonst nicht funktioniert. Nach einem anschließenden:

service dovecot restart

können dann auch neue Ordner mit einem Punkt im Namen angelegt werden. Auf bestehende Ordner wirkt sich das ganze allerdings nicht aus. Diese müssen bei Bedarf neu angelegt werden.

WordPress mit Lastproblemen

In den letzten Tagen hatte ich mit einer WordPress Installation einige Probleme. Diese äußerten sich darin, das die Webseite bei jedem Aufruf hohe Last erzeugte. Im Laufe der Zeit wurde die Laste dabei immer größer. Irgendwann gab der Server nur noch einen HTTP 500 Error von sich. Im Backend äußerte sich das ganze mit einer weißen Seite, was im Normalfall auf zu wenig Speicher für PHP hinweist.

In diesem Fall lag das Problem an anderer Stelle. Beim Überprüfen der Datenbank stellte sich heraus das die Tabelle „wp_options“ enorm groß war. Im Normalfall ist diese Tabelle ein paar MiB groß. In meinem Fall war sie knapp 600 MiB groß und bestand aus über 500.000 Einträgen. Bei diesen Dimensionen wird klar, wohin die Performance verschwunden ist. Im konkreten Fall gab es viele „transient“ und „displayed_galleries“ Einträge. Letzte Einträge werden vom Plugin „NextGEN Gallery“ erzeugt. Die „transient“-Einträge enstehen durch Caches (unter anderem für den RSS-Feed). Möchte man die Datenbank bereinigen helfen folgende SQL Befehle:

DELETE FROM wp_options WHERE option_name LIKE ('_transient_%')
DELETE FROM wp_options WHERE option_name LIKE ('displayed_galleries%')

Anschließend sollte die Tabelle optimiert werden, damit der von den gelöschten Einträgen belegte Speicherplatz wieder freigegeben wird.

Update:
Mittlerweile gibt es auch einen entsprechenden Artikel im WordPress Forum.

Weitere Informationen gibt es unter:
http://www.staze.org/wordpress-_transient-buildup/

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.

Mittels „grep“ Ordner rekursiv durchsuchen

Wenn man sich im Terminal durch Konfigurationsdateien hangelt, kann es durchaus vorkommen das man eine bestimmte Zeichenkette in den Dateien eines Ordners und dessen Unterordnern sucht. Hierfür bietet sich eine Kombination von „find“ und „grep“ an:

find . -type f -exec grep -l 'suchbegriff' {} \;

Das „find“ Kommando ermittelt dabei alle Dateien und übergibt sie dann an „grep“. Als Ausgabe erhält man anschließend eine Liste der Dateien in welchen der gesuchte Begriff enthalten ist.

Basic Authentification unter Nginx einrichten

Auch im Webserver Nginx lässt sich „Basic Authentification“ einrichten. Dazu fügt man in der entsprechenden Konfigurationsdatei im Server folgenden Block hinzu:

location / {
    auth_basic           "Access denied";
    auth_basic_user_file /var/www/example.org/.htpasswd;
}

In dem definierten Ordner wird nun eine Datei mit dem Namen „.htpasswd“ angelegt“. Dieser Datei funktioniert dabei nach dem Schema „Nutzername:Passwort“. Mittels:

openssl passwd

kann dar Passworthash für die Datei erzeugt werden. Alternativ kann das ganze auch über das „htpasswd“ Tool, welches im „apache2-utils“-Paket enthalten ist, erstellt werden:

htpasswd .htpasswd seeseekey

Die „.htpasswd“-Datei könnte dann so aussehen:

seeseekey:ppWAv1Wkrq/jg

Nach dem Neustart des Servers mittels:

sudo service nginx restart

sollte die „Basic Authentification“ funktionieren.

Weitere Informationen gibt es unter:
http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html