Universität Bremen  
  FB 3 AG BKB  
  Mattias Werner > RT Installation > Deutsch
English
 

Installationen für die Verwendung von rt-mailgate

 
Beginnend mit RT 4.0.10 wurde die gesamte Mail-Verarbeitung um e-mail Anfragen in RT hineinzubekommen, auf den Rechner verlagert auf dem auch RT läuft. Dies wurde erforderlich, da auf dem Mail-Server kein procmail zur Verfügung steht. Auf dem Mail-Server muß daher lediglich ein vollwertiger Account "rt" mit Passwort existieren und sämtliche Adressen die Mails für RT annehmen müssen als Alias die Mail in dieses Postfach liefern.

fetchmail auf dem Rechner service

Auf dem Rechner service muß das Programm fetchmail als Daemon laufen, um die Mail des Benutzers "rt" mittels POP3/SSL vom Mail-Server abzuholen und per procmail an RT weiterzuleiten. Der Daemon wird durch ein init Skript gestartet, das in /etc/init.d/fetchmail liegt. Die Mail wird alle 120 Sekunden abgefragt. Per Cron-Job wird halbstündig überprüft, ob der fetchmail Daemon und der spamd Daemon (für spamc im procmailrc) noch läuft, ansonsten wird eine Mail an "rt-admin" gesendet (Cron ruft dafür /opt/rt4/bin/check-fetchmail auf). Der fetchmail Aufruf sollte wie folgt aussehen:

/usr/bin/fetchmail -a -f /opt/rt4/etc/fetchmailrc --daemon 120 -L /var/log/fetchmail.log

service:/opt/rt4/etc/fetchmailrc

Diese Datei enthält folgende Zeile:

poll pop.informatik.uni-bremen.de protocol pop3 user rt password ******** mda "/usr/bin/procmail /opt/rt4/etc/procmailrc" ssl

Dabei muß das Passwort des Benutzers "rt" hier im Klartext anstelle der ******** stehen.

service:/opt/rt4/bin/queue-finder

Dieses Skript wird im procmailrc aufgerufen, um aus den Empfängeradressen der Mail die tatsächliche Queue und die Aktion herauszufinden und diese als Queue/Aktion auf stdout auszugeben. Dieses Skript enthält mindestens:
#!/bin/sh

RECIPIENTS=`/usr/bin/formail -z -xCC -xTo </dev/stdin`

if test "`echo $RECIPIENTS | grep 'service@'`" != ""; then
  QUEUE="Service-FB3"
  ACTION="correspond"
elif test "`echo $RECIPIENTS | grep 'service-comment@'`" != ""; then
  QUEUE="Service-FB3"
  ACTION="comment"
elif test "`echo $RECIPIENTS | grep 'rt@'`" != ""; then
  QUEUE="Service-FB3"
  ACTION="correspond"
elif test "`echo $RECIPIENTS | grep 'help@'`" != ""; then
  QUEUE="Service-FB3"
  ACTION="correspond"
elif test "`echo $RECIPIENTS | grep 'support@'`" != ""; then
  QUEUE="Service-FB3"
  ACTION="correspond"
elif test "`echo $RECIPIENTS | grep 'service-critical@'`" != ""; then
  QUEUE="Service-Critical"
  ACTION="correspond"
else 
  QUEUE="SpamMaybe"    # keine bekannte Adresse im To oder CC
  ACTION="correspond"
fi

echo $QUEUE/$ACTION
Zusätzliche if Abfragen können für weitere Mail-Adressen und die zugehörigen Queues hinzugefügt werden. Wenn keine bekannte Mail-Adresse gefunden wird, landet das Ticket zunächst in der Queue SpamMaybe. Es hat sich gezeigt, dass Spam Mails häufig an undisclosed-recipients gehen, daher erscheint dieses Verhalten richtig. Es ist so aber nicht möglich eine RT Adresse in Mail-Verteilern zu verwenden, ohne diese in diesem Skript zu berücksichtigen.

Früher wurde direkt auf dem Mail-Server anhand der tatsächlichen Adresse an die die Mail ging, Queue und Action per formail in die Mail eingetragen, was natürlich genauer war aber auch zu doppelten Tickets führen konnte, wenn die Mail an zwei RT Adressen gleichzeitig geschickt wurde. Mit diesem Verfahren wird jede Mail nur einmal an RT geleitet.

service:/opt/rt4/etc/procmailrc

Das Programm procmail muß aus der Mail mit dem Skript queue-finder die Queue und die Action ermitteln, sie mit spamassassin prüfen, ggf. verwerfen oder umleiten und dann mittels rt-mailgate an die richtige Queue mit der richtigen Action weiterleiten. Die procmailrc Datei enthält mindestens:
MAILDIR=/root/Mail-rt
FINDSCRIPT=/opt/rt4/bin/queue-finder
QA=`$FINDSCRIPT`
QUEUE=`dirname $QA`
ACTION=`basename $QA`

:0
* ^Subject:.*\[Service-FB3
| /opt/rt4/bin/rt-mailgate --queue $QUEUE --action $ACTION --url http://service/rt/

:0w
* ^Content-Type: multipart/encrypted
QUEUE=|/bin/echo Service-Critical

:0:
* ^X-Spam-Level: \*\*\*\*\*
service-spam

:0w
* ^X-Spam-Level: \*\*\*
QUEUE=|echo SpamMaybe

:0
| /opt/rt4/bin/rt-mailgate --queue $QUEUE --action $ACTION --url http://service/rt/
Falls es sich irgendwie um ein Reply auf ein bestehendes Ticket handelt, wird die Mail direkt zugestellt. Verschlüsselte Mails sollen in die Queue Service-Critical. Spam mit mehr als 5 Punkten wird verworfen bzw. in /root/Mail-rt/service-spam abgelegt, Spam mit 3-5 Punkten bekommt als Queue SpamMaybe gesetzt. Alle nicht aussortierten Mails werden mittels rt-mailgate zugestellt.

Im aktuellen procmailrc sind noch viele weitere Regeln, die im Laufe der Zeit entstanden sind, um offensichtlichen Spam gleich zu verwerfen. Dies ist der Platz um weitere solche Regeln hinzu zu fügen.

 
   
Autor: Mattias Werner
 
  AG BKB 
Zuletzt geändert am: 24. März 2017   impressum