Freitag, 9. März 2012
Redmine - Tickets mit eingehenden Mails erstellen
Grundlage dieser Anleitung:
- Redmine - das Ubuntu Lucid Paket (0.9.3)
- Postfix als MTA - läuft auf dem selben Server, die in Redmine verwendete Maildomain ist virtuell
Im Beispiel-Redmine dürfen ausschließlich existierende User mit ausreichender Berechtigung Tickets anlegen, keines der Projekte ist öffentlich.
Das Projekt hat den Namen "test" und die Kennung "testprojekt", die Mail- und Webdomain ist "example.com", die Absenderadresse von Redmine ist (global) "tickets@example.com".
1) in Redmine - Konfiguration - eingehende Mails:
Abruf eingehender E-Mails aktivieren, API-Schlüssel generieren
tickets: "|/usr/share/redmine/extra/mail_handler/rdm-mailhandler.rb \ --url=https://redmine.example.com/projects/ --key=Y7hLi54wyRGLRm9MX \ --allow-override=project,tracker" tickets+testprojekt: "|/usr/share/redmine/extra/mail_handler/rdm-mailhandler.rb \ --url=https://redmine.example.com/projects/ --key=Y7hLi54wyRGLRm9MX \ --project=testprojekt --tracker=Bug"
Wichtiger Hinweis: "--project" ist die Kennung (ID) des Projektes, NICHT der Name!
Tipp: backslash und Zeilenumbruch helfen bei der Lesbarkeit der sonst sehr langen Zeilen.
"--url" muss die vollständige url zur Startseite von Redmine sein.
Mit "key" ist natürlich der im Schritt davor generierte API-Schlüssel gemeint.
Wir arbeiten hier mit dem delimiter "+", mehr dazu weiter unten.
3) neue aliases.db anlegen
postalias /etc/aliases
4) in /etc/postfix/main.cf einfügen:
transport_maps = hash:/etc/postfix/transport
5) in /etc/postfix/transport einfügen:
tickets@example.com local:
6) map transport.db anlegen
postmap /etc/postfix/transport
7) in /etc/postfix/virtual einfügen:
tickets@example.com tickets
8) map virtual.db anlegen
postmap /etc/postfix/virtual
9) Syntax check (nur zur Sicherheit)
postfix check
10) Postfix mit neuer Konfiguration
/etc/init.d/postfix reload
11) in Redmine User anlegen:
User bei Bedarf anlegen, als Mitglied im Projekt "test" hinzufügen. Der User muss die Berechtigung zum Erstellen von Tickets im betreffenden Projekt haben, das sollte auch tatsächlich getestet werden.
Nun kann von der Email Adresse des Users ein Testmail geschickt werden. Ein neues Ticket wird automatisch erstellt, der Betreff des Mails wird zum Titel des Tickets, der Mailinhalt zur Beschreibung. Der User (und mit ihm die anderen Mitglieder) erhält umgehend (eigentlich sofort) eine automatische Antwort, der Projektname ist Teil des Betreffs. (Der User kann aber auch Benachrichtigungen über eigene Änderungen in seinen Einstellungen abstellen.)
Antworten auf so ein Mail legen einen Kommentar zum Ticket an.
Apropos Antwort - da gäbe es eigentlich einen Haken:
Redmine erlaubt nur eine globale Absenderadresse pro Installation und keine Reply-To Adressen pro Projekt. D.h. die globale Absenderadresse ist die Antwortadresse für ALLE Projekte.
Hier behelfen wir uns aber mit dem weiter oben schon erwähnten delimiter.
Wir verwenden für Projekte immer
tickets+projekt@example.com
In /etc/aliases ordnen wir das haarklein zu, einmal allgemein für Antworten (mit der Erlaubnis, zu überschreiben) und einmal für jedes Projekt.
In transport bzw virtual können wir uns die detailierte Zuordnung sparen, dort genügt eine einzelne Definition.
Mehr Info zum delimiter gibt es auf www.postfix.org.
Das erste Email, das ein Ticket auch anlegt, wird mit Hilfe von Postfix über die Parameter in /etc/aliases zugeordnet. Die Antwort auf ein bereits bestehendes Ticket wird von Redmine selbst über den Betreff des Mails zugeordnet - der enthält ja die Ticketnummer bereits.
Für die Steuerung NUR über Emails (von Kunden) ist Redmine trotzdem nur bedingt geeignet.
Setup Variante: Falls die verwendete Maildomain ohnehin lokal ist (in Postfix: mydestination), können Schritt 4 - 8 entfallen, da Postfix die Adresse dann ohnehin lokal zuordnen kann und in /etc/aliases sucht.
Mögliche Fehlermeldung in /var/log/redmine/default/production.log:
422 Unprocessable Entity [https://redmine.example.com/projects/mail_handler]
Wahrscheinliche Ursache: Redmine kann irgend einen Parameter nicht korrekt setzen, sei es die Email Adresse des Senders (= eines berechtigten Users), sei es das Projekt oder der Tracker. Die Fehlermeldung ist verd*** allgemein. Zum Lösen des Problems hilft also nur herum probieren. So lange der 422 Fehler kommt, wird kein Ticket angelegt.
Noch keine Kommentare