Kanboard und PHP 5.6

Vor ein paar Monaten hatte ich davon erzählt, worauf man achten muss, wenn man Roundcube mit PHP 5.6 betreiben will. Heute möchte ich einmal darauf eingehen, was es bedeutet, Kanboard unter PHP 5.6 zu betreiben.

Vorab: Wie der Name schon vermuten lässt, handelt es sich bei Kanboard um ein webbasiertes Kanban-Board. Damit ist es möglich, den Status von Aufgaben zu verfolgen. Die Verwendung von Kanban-Boards ist vielfältig - angefangen bei einfachen ToDo-Listen für die private Nutzung, über einfache Softwareentwicklungsprozesse bis hin zu ausgewachsenen Businessprozessen mit Freigaben lässt sich so einiges realisieren.

Kanboard Beispielübersichten Kanboard Beispielübersichten

Kanboard Beispielübersichten

Bisher habe ich als Kanban-Board das Produkt Atlassian Jira verwendet, das mit dem Plugin Greenhopper Jira Agile auch ein Kanban-Board anbot. Leider hat Atlassian sich dazu entschieden, Jira in drei getrennte Softwareprodukte aufzuspalten. Ihrer Meinung nach soll damit die User Experience verbessert werden, indem jede Variante spezifische Funktionen erhalten soll (Jira Software für Softwareentwicklungsprozesse, Jira Service-Desk für IT-Supportprozesse und Jira Core für Businessprozesse). Meiner Meinung nach versuchen sie damit, dreimal so viel Geld von ihren abhängigen Kunden abzugreifen, die bisher eine Lizenz für alle drei Nutzungsszenarien verwenden konnten.

Jedenfalls machte ich mich aufgrund dessen auf die Suche nach einem einfach handhabbaren Ersatz und wurde bei Kanboard fündig. Aufgrund seiner einfachen Struktur hat es leider ein paar fehlende Features, die jedoch im kleineren Nutzungsrahmen kein größeres Problem darstellen. Beispielsweise gibt es nur drei Rollen: Softwareadministrator (administriert Kanboard), Projektadministrator (legt neue Projekte an und administriert diese) und Projektmitglied (legt neue Tasks an und arbeitet diese ab). Jedes Projektmitglied kann beispielsweise jeden Task aus jedem Status in jeden Status versetzen und ebenso neue Tasks in jedem Status anlegen. Damit lassen sich beispielsweise keine Freigabeprozesse realisieren. Es wird wohl aber gerade an einem komplexeren Rollen-Rechte-Modell gearbeitet, sodass solche Dinge hoffentlich zukünftig ebenfalls abbildbar sind.

Aber kommen wir zum eigentlichen Problem: Kanboard ist in der Lage, E-Mail-Benachrichtigungen zu versenden. Dazu gibt es in der Konfigurationsdatei mehrere Parameter, mit denen der SMTP-Server einkonfiguriert werden kann. Leider wurde dabei jedoch nicht berücksichtigt, dass seit PHP 5.6 standardmäßig das Serverzertifikat bei TLS-Verbindungen überprüft wird. Erschwerend kommt hinzu, dass Kanboard als Mail-Framework SwiftMailer verwendet, das in der aktuellen Version 5.4.1 hartcodierte Socket-Parameter verwendet. Erst in der (seit Monaten nicht veröffentlichten) Version 5.4.2 soll das Problem wohl behoben werden.

Um also Kanboard trotzdem dazu zu bewegen, E-Mails über SMTPS zu versenden, muss man das mitgelieferte SwiftMailer-Framework selbst anpassen. Hierzu öffnet man die Datei "./kanboard/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php" und sucht die Methode "_establishSocketConnection()". In der Zeile 263 gibt es einen Aufruf zu "stream_socket_client()" und genau davor müssen wir folgenden Code einfügen:

1
2
3
4
$options['ssl']['verify_peer'] = MAIL_SMTP_SSL_VERIFY_PEER;
$options['ssl']['peer_name']   = MAIL_SMTP_SSL_PEER_NAME;
$options['ssl']['ciphers']     = MAIL_SMTP_SSL_CIPHERS;
$options['ssl']['cafile']      = MAIL_SMTP_SSL_CAFILE;

Im Anschluss daran kann die "./conf.php" um folgende Parameter erweitert werden:

1
2
3
4
define("MAIL_SMTP_SSL_VERIFY_PEER", true);
define("MAIL_SMTP_SSL_PEER_NAME",   "smtp.example.com");
define("MAIL_SMTP_SSL_CIPHERS",     "HIGH:!aNULL:!eNULL:!3DES:!MD5:!RC4:@STRENGTH");
define("MAIL_SMTP_SSL_CAFILE",      "/etc/ssl/certs/smtp-certificate-authority.pem");

Wenn man diese Änderungen durchgeführt hat, werden die E-Mail-Benachrichtigungen, wie erwartet, verschickt. Natürlich habe ich zu dem Thema im Github-Repository von Kanboard schon ein entsprechendes Issue aufgemacht, allerdings wird es wohl noch ein wenig dauern, bis das Problem tatsächlich behoben worden ist.

Kanban-Grüße, Kenny

Schreibe einen Kommentar

Um Ihnen beim weiteren Kommentieren auf dieser Webseite die erneute Eingabe Ihrer Daten zu ersparen, wird beim Absenden Ihres Kommentars ein Cookie an Ihren Browser gesendet und von diesem gespeichert. Mit dem Absenden eines Kommentars auf dieser Webseite stimmen Sie der Speicherung und Übertragung dieses Cookies explizit zu.

Pflichtfelder sind mit * markiert.