kolab_smtp_access_policy exit status 1

Wer einen Kolabserver auf einem Ubuntuserver hochzieht, wird aktuell irgendwann (beim Versand oder Empfang von Mails) auf den Fehler „kolab_smtp_access_policy exit status 1“ stoßen. Alle Maßnahmen das logging aufzudrehen, greifen ins leere und man ist verzweifeln …

In diesem Fall sollte man doch einfach das script per hand aufrufen. Wichtig dabei, postfix verwendet pyhton2.7…

python2.7 /usr/lib/postfix/kolab_smtp_access_policy

Mit hoher Warscheinlichkeit kann das Module pymysql nicht geladen werden. Einfach das Modul nachinstallieren und schon kann es mit dem Mail-Empfang losgehen.

apt-get install python-pymysql

kolab_smtp_access_policy debugen

Ich betreibe seit ein paar Tagen eine Kolab-Server und bin dabei über die ein oder andere Baustelle gestolpert. Am meisten probleme hat mit die kolab_smtp_access_policy bereitet.

Diese wird vom postfix aufgerufen um zu prüfen ob eine Mail angenommen werden darf. Bei kolab_smtp_access_policy handelt es sich um ein Python Script, das ohne weiteres schwer von der Console aufgerufen werden kann.

Leider logt das Script standartmäßig nichts. Um das Logging zuzuschalten muss man unter /etc/postfix/master.conf dem scritpaufruf parameter mitgeben.

recipient_policy_incoming unix  -       n       n       -       -       spawn
    user=kolab-n argv=/usr/lib/postfix/kolab_smtp_access_policy --verify-recipient --allow-unauthenticated -l debug -d 9

Das „-l debug -d 9“ sorgt dafür, dass das Logfile /var/log/kolab/pykolab.log gefüllt wird. Jetzt kann man mit der Fehlersuche beginnen…

EdgeMax router retten …

Ich hatte die vergangene Woche relativ viel Pech und ich beide meiner EdgeMax-Router (EdgeMax Lire und EdgeMax 5PoE) in einen zustand gebracht, in dem sie nicht mehr ordentlich booteten. Beide Zustände waren selbst verschuldet: Bei einem Router hab ich scheinbar einen wichtigen BootSkript modifiziert, so dass in einem bestimmten Zustand ein Booten nicht mehr möglich war. Bei dem anderen Router hab ich wohl durch „ungünstiges“ Reseten das FileSystem geschrottet.

Es stehen nun zwei Varianten für das Recovery zur Verfügung.

  1. Recovery System vie TFTP booten und Fehler beheben
  2. Router aufschrauben, USB Stick ausbauen, Stick an anderem System mounten und die Reperatur starten

Alles setzt auf dem EdgeMax RecoveryKit auf. Will man via TFTP sein system retten, geht man nach dieser Anleitung vor: https://community.ubnt.com/t5/EdgeMAX/EdgeMax-rescue-kit-now-you-can-reinstall-EdgeOS-from-scratch/td-p/514857

In meinem fall musste ich jedoch nicht alles neu installieren. Wenn man das Rettungs-OS hoch gefahren hat, ist unter /root/w das overlay gemounted. Hat man im EdgeOS irgendein Script oder Config File geändert, taucht es hier auf. Löscht man es, hat man wieder die original Version. Im Zweifelsfall kann man einfach alle Änderungen in einen Sicherungs-Ordner verschieben und von Scratch starten …

Eine andere Hausnummer war der IO Defect. Hier musste ich erst mal den Stick ausbauen und testen. Nach mehrfachen „badblock“ Durchläufen war klar, dass es nur das FileSystem zerschossen hatte. Da nach den Durchlauf von Badblock die PartionsTabelle zerstört wurde muss ich komplett vom scratch aufsetzten.

Mit folgendem script habe ich angefangen: https://github.com/vyos/emrk/blob/master/bin/emrk-reinstall.

Da ich keine Risiko eingehen wollte, habe ich alle befehle einzeln per hand ausgeführt, man kann aber auch einfach die variablen korrekt setzten und das Skript im ganzen ausführen. Anschließend Stick wieder einbauen router hochfahren und neu konfigurieren…

Änderungen bei LVM

Wer wie ich regelmäßig einen Raid 1 (Mirror) mit LVM aufbaut/betreibt, wird seit neusten (zu mindestens wenn er auf den aktuellen Ubuntu LTS setzt) in folgendes Problem laufen. Der bisher gültige Befehl führt nicht mehr zum gewünschten Ergebnis:

lvconvert -m 1 volumeGroup/logicalVolume  --corelog
  Insufficient free space: 1 extents needed, but only 0 available

Das ganze liegt daran, dass sich die art wie LVM jetzt einen Raid aufbaut wohl geändert haben soll. Ich bin da nicht tiefer hinabgestiegen. Schlussendlich muss man einfach noch den Typ mit angeben, dann klappt es wieder.

lvconvert -m 1 volumeGroup/logicalVolume  --corelog --type mirror
  volumeGroup/logicalVolume: Converted: 0,0%
  ...
  volumeGroup/logicalVolume: Converted: 100,0%

Script beim Resume in Ubuntu Xenial (16.05)

Die Xenial Server Distribution deployed standardmäßig keine pm-utils mehr. Selbst wenn man diese nachinstalliert ziehen die Script-Hooks nur wenn man direkt die Kommandos aufruft. Bei Calls über d-bus werden die nicht ausgelöst. Will man systemweit scriptes bei einem Suspend oder Resume aufrufen muss man ein skript (service) in den systemd einhängen.

Die Service Datei muss unter /etc/systemd/system liegen und auf .service enden. Der Inhalt muss ungefähr so aussehen um nach jedem „aufwachen“ einen Skript auszuführen.

[Unit]
Description=Run start_my_connection
After=suspend.target
After=hibernate.target
After=hybrid-sleep.target

[Service]
ExecStart=/path/to/script/file

[Install]
WantedBy=suspend.target
WantedBy=hibernate.target
WantedBy=hybrid-sleep.target

Lightroom und CMYK Softproof

Seit Lightroom 6.0 werden CMYK ICC Profile unterstütz. Bei meinen Versuchen die SAAL-Digital ICC Profile für eine SoftProof zu laden schlugen jedoch alle fehl. Die Profile werden einfach nicht zur Auswahl gestellt.

Ich weiß nicht ob es an Lightroom oder Windows liegt, aber CMYK Profile aus den „default“-Profile-Pool (Windows/System32/spool/drivers/color/) werden nicht geladen. Adobe Lightroom scheint aber noch einen anderen Ordner zu nutzen:

AppData/Roaming/Adobe/Lightroom/Color Profiles/

Alle darin abgelegten Profile werden gesondert in der ProfilAuswahl beim SoftProof angezeigt und können geladen werden. Blöd nur, das man sie nicht brauchbar filtern kann, aber das wird Adobe sicher mit dem nächsten kostenpflichtigen Update lösen …

CineS2 Treiber „OnTheFly“ laden

Wer wie ich eine CineS2 6.5 im einsatz hat, ist unter Ubuntu ein bisschen gekniffen. Der Treiber wird noch nicht mit dem offizjellen Kernel ausgeliefert. Das führt dazu das man leider auf einem Produktivsystem etwas selber bauen muss. Besonders nach einem Kernel Update nerft das ganze, da man den Treiber im laufenden Betrieb überschreiben muss.

Als erstes brauch man git. Via git clone oder gut pull von https://github.com/DigitalDevices/dddvb die neusten Sourcen downloaden.

Erst mal den alten Treiber „entladen“ (fals man noch weitere DVB-Karten hat müssen deren Treiber auch entladen werden)

sudo rmmod ddbridge
sudo rmmod dvb_core
sudo rmmod cxd2099 

anschließend geht es ans bauen

make clean
make -j 8
sudo make install

Treiber wieder laden …

depmod -a
modprobe ddbridge

So geht es auch ohne Neustart …

Kodi und „fehlende“ Visualisierung

Im neuen Kodi Pakage,das über das PPA des XBMC/Kodi Team verteilt wird, sind die Visualisierungen in eigene Sub-Pakages ausgelagert. Will man also die Balken während des Abspielens von Musik, muss man erst mal die fehlenden Pakages nachinstallieren.

apt-get install kodi-visualization-spectrum
apt-get install kodi-visualization-projectm
apt-get install kodi-visualization-goom
apt-get install kodi-visualization-shadertoy
apt-get install kodi-visualization-waveform

Wenn man nun Kodi startet und die Visualisierungen auswählbar sind, aber nicht dargestellt werden muss man ins log schauen. Dort taucht dann folgende Meldung auf:

ADDON: Could not locate visualization.spectrum.so
...
ADDON: Could not locate visualization.projectm.so
...
ADDON: Could not locate visualization.goom.so

Die Addon-Pakages werden nicht mehr in den Kodi-Path entpackt, sondern nach „/usr/lib/x86_64-linux-gnu/addons“. Kodi selbst prüft diesen Pfad nicht. Nun kann man mit der Path-Variable rummspielen oder einfach ein Symbolik Link setzten …

ln -s /usr/lib/x86_64-linux-gnu/addons/* /usr/lib/kodi/addons/

Interface geht sporadisch down …

Frei nach dem Motto „wenn man nichts zu sagen hat, …“ ist es hier in letzter Zeit sehr ruhig gewesen. Meine IT zu Hause läuft einfach zu rund, es gibt nichts zu Berichten. Nun ja bis heute…

Seit geraumer Zeit läuft auf meinem StorageServer ein TV Headend. Das lief bis vor kurzem Problemlos. Nur seit ein paar wochen plagen mich kurze Verzögerungen/Aussetzer. Anfangs konnte ich das auf einen schlechten SAT Empfang schieben aber immer gehäufter traten folgende Fehlermeldungen in den Logs auf:

igb: eth0 NIC Link is Down
igb: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX

Das eth-Interface geht Down und kommt sofort wieder hoch. Fast alle Protokolle und Dienste (NFS, SAMBA,…) scheinen damit gut klar zu kommen nur TV Headend goutiert das mit einem Connection-Reset und am Client sieht man „negative Auswirkungen“.

Davon abgesehen, warum geht das Interface unmotiviert down. Kurze Analyse später, das passiert häufiger: 2-5 mal am Tag. Meine postulierte Verfügbarkeit von 99.999% war dahin. Es folgten 2 Wochen Fehlersuche:

  • Kabel tauschen
  • Interface tauschen
  • Verschiedene Switcheinstellung (Powersave) abgeschaltet…
  • div. Optionen testen
  • vieles mehr …

Dank des sporadischen Auftretens hieß es nach jeder Änderung Stunden warten …

Ein Switch Tausch brachte die nötigen Hinweis. Der eigentliche Switch konnte als Fehlerquelle ausgeschlossen werden, da der Fehler auf allen Ports auftrat aber immer nur, wenn an dem Port mein Server hing. Alle anderen Geräte wiesen diese Disconnects nicht auf. An dem „notfall“-Switch traten die Disconnects aber auch nicht auf, die OnBoard-Netzwerkkarten waren also auch nicht defekt.

Schnell nochmal alle Switch-Einstellungen kontrolliert und dann die kryptische Option IEEE802.3az gefunden. Google angeworfen und geflucht.

IEEE802.3az (oder Energy Efficient Ethernet/EEE) ist eine Powersaving-Option (die Sinnigerweise nicht unter Powersaving aufgeführt wurde …) bei der zwei Geräte untereinander aushandeln ob und wann sie ihre Transmitter am Interface abschalten. Das erklärte auch das Fehlerverhalten. Immer wenn ich einen Lasttest gefahren hab, trat das Problem nicht auf, da EEE nicht zugeschlagen hat. Erst wenn nur Sporadisch Bandbreite benötigt wurde, kam es zu Disconnects.

Der erste Versuch EEE vie ethtool abzuschalten brachte keine Besserung:

ethtool --set-eee eth0 eee off

Erst als am Switch EEE für den ServerPort abgeschaltet wurde verschwand das Problem.