Dovecot „FETCH BODY[] for mailbox INBOX UID 1 got too little data“

Es kann passieren, dass man in Dovecot zwar zlib glaubt zu aktivieren, dies aber nicht im Bereich „protocol imap“ und nicht mit der „imap_zlib“-Einstellung tut, was dann dazu führt, dass mit der folgenden Fehlermeldung Mailboxen nicht abgerufen werden können:

Oct 13 16:16:08 hostname dovecot: imap(user): Error: read(/data/vmail/user/mdbox/storage/m.339): FETCH BODY[] for mailbox INBOX UID 505 got too little data: 2864 vs 6789

Mutmaßlich deshalb, weil der Server die Nachricht verschlüsselt schickt, dies aber nicht entsprechend announciert. Es muss, zur Lösung des Problems, das Plugin im Bereich „protocol imap {}“, bevorzugt in der Datei 20-imap.conf, wie folgt angegeben werden:

protocol imap {
 mail_plugins = $mail_plugins imap_zlib
}

So, wie hier beschrieben.

Mittels LaTeX generierte PDF-Dateien optimieren

Hin und wieder mache ich mir LaTeX, das auf dem Textsatzsystem TeX basierende Softwarepaket, zunutze. Meistens für Bewerbungen, Kündigungen und seltener für Publikationen sowie andere Arbeiten. Jedoch sind die PDF-Dateien, welche LaTeX generiert, meist sehr groß. Und damit meine ich eine 5-seitige Bewerbung mit fast nur Text, maximal 2 unterschiedlichen Schriftarten und 3 unterschiedlichen Farben mit einer Größe von etwa 425 Kilobyte.

Auf der Suche nach Optimierungsmöglichkeiten fand ich diese Diskussion. Dort wurde ein Skript gepostet, welches mithilfe von GhostScript eingegebene PDF-Dateien optimiert und dazu auch anzeigt, wie viel Platz eingespart werden konnte.

Leider ist dieses Skript nicht dafür ausgelegt, PDF-Dateien mit Leerzeichen und Sonderzeichen im Dateinamen zu verarbeiten. Daher habe ich kleinere Anpassungen vorgenommen und mir erlaubt, das angepasste Skript auf GitHub zur Verfügung zu stellen.

Aufgerufen wird das Skript dann wie folgt:

./optpdf.sh datei.pdf

Ein Beispiel für alle auf „.pdf“ endenden Dateien des aktuellen und aller Unterverzeichnisse:

find /verzeichnis -name "*.pdf" -exec ./optpdf.sh {} \;

ACHTUNG! Die PDF-Dateien werden dabei überschrieben. Es empfiehlt sich also, vorher eine Sicherung zu erstellen.

Es existieren weitere Tools um PDF-Dateien weiter zu optimieren, beispielsweise pdfopt, welches PDF-Dateien linearisiert und durch interne Verweise Zugriffszeiten auf Seiten von PDF-Dokumenten verbessert.

Check_MK MRPE-Checks am Beispiel eines OpenVPN-Nagios-Plugins

Mithilfe des NRPE, des Nagios Remote Plugin Executors, ist es mit wenig Aufwand möglich, in völlig unterschiedlichen Skriptsprachen geschriebene Skripte leicht an Nagios und Nagios-basierte Applikationen anzubinden.

Für Check_MK gilt dies ebenfalls, mit dem Unterschied, dass es sich hierbei um MRPE, den „MK’s Remote Pugin Executor“ handelt – der Name ist geändert, die Funktionsweise bleibt identisch.

So wird der MRPE beispielhaft eingerichtet

/etc/check_mk/mrpe.cfg:

OVPN_clients /usr/lib/nagios/plugins/check_openvpn -H localhost -p 2194 -n -t 5
OVPN_client_names /usr/lib/nagios/plugins/check_openvpn -H localhost -p 2194 -c -t 5

Check_MK MRPE-Checks am Beispiel eines OpenVPN-Nagios-Plugins weiterlesen

Building and installing the latest version of the „network-manager-libreswan“-plugin on Ubuntu 17.10

Currently, in Ubuntu, there is only a NetworkManager-plugin for strongSwan only in combination with IKEv2. There exists an alternative plugin, which supports the management of IPsec-connections which require IKEv1. This plugin did not make it into the official Ubuntu-repository yet – a feature-request for including the network-manager-libreswan-plugin as an installable package is pending.

The following steps will guide you to get the recent version of the plugin to work in Ubuntu, in this case, 17.10:

apt-get install intltool libnl-3-dev libgtk-3-dev libnma-dev libsecret-1-dev libnm-gtk-dev libnm-glib-vpn-dev git 

git clone -b 1.2.6 https://git.gnome.org/browse/network-manager-libreswan

cd network-manager-libreswan

./autogen.sh

make && make install 

mv /usr/local/etc/NetworkManager/VPN/nm-libreswan-service.name /etc/NetworkManager/VPN/

If this information is not up-to-date anymore or not working in your specific case, please just leave me a comment.

Mit ncat/socat einen lokalen Port auf einen anderen lokalen Port weiterleiten

Es kann passieren, dass man einen bestimmten Port, lokal auf einen anderen Port umleiten muss. Meist, wenn man es mit Software zu tun hat, die nicht auf mehrere Ports und/oder IPs binden kann.

Hilfreich ist dann „ncat“. (jedoch nicht netcat oder nc!)

ncat -k -l 10.10.10.10 24 -c "nc 10.10.10.10 2003" &

Kein netcat oder nc deshalb, weil es dort unter Umständen, also z. B. bei der Benutzung für LMTP, zum Abschalten des Sockets kommt.[1]

tcp        0      0 10.10.10.10:24          0.0.0.0:*               LISTEN      909/ncat

Wenn es trotz keepalive-Funktion zu abbrüchen kommt, wäre die nächste Möglichkeit „socat“.

socat TCP-LISTEN:24,fork,range=10.10.10.10/32 TCP:10.10.10.10:2003,shut-none

Quelle

Dateien aus mehreren Quellen herunterladen mit aria2

Kürzlich wollte ich eine größere Datei runterladen, welche via HTTP von mehreren Quellen verfügbar ist. Dabei suchte ich eine bequeme Möglichkeit, aus mehreren langsamen Quellen zeitgleich herunterzuladen um so den Download insgesamt zu beschleunigen.

Einen bequemen Lösungsansatz liefert hier „aria2“, ein Tool, welches als Argument beliebig viele Quellen akzeptiert und eine Datei anschießend von allen angegebenen Quellen zeitgleich herunterläd.

Somit kam ich statt einmal 50 KB/s auf dreimal etwa 50 KB/s, was zwar noch immer nicht viel ist, aber schonmal etwas mehr.

Der entsprechende Befehl für die Kommandozeile lautet so:

aria2c.exe -j 1 http://quelle1.de/datei.zip http://quelle2.com/datei.zip [...]

Unter Linux ist das Tool nach Installation ebenso verwendbar:

aria2c -j 1 http://quelle1.de/datei.zip http://quelle2.com/datei.zip [...]

Das Tool ist auf GitHub verfügbar.