Procmail Web-Frontend (Horde-Ingo,Plesk,QMail,Courier-IMAP)

Thorti

New Member
Hy,

ich würde gerne eine serverseitge Sortierung meiner E-Mails vornehmen. Das funktioniert auch soweit mit der Kombination Plesk+QMail+Spamassassin+Courier-IMAP+Procmail. Auf dem Server läuft auch Horde-IMP als Standard mit vom Plesk aus.
Man kann im Webmailer Passwort ändern, was auch Auswirkung auf den IMAP-Login hat. Ebenfalls läuft auch unter Horde das Filterplugin INGO. Dort kann ich im Webmailer Filter für Mails setzen. Problem dabei ist, daß diese nur in dem Moment angewendet werden, wenn man sich in den Webmailer einloggt.
Da ich aber den Webmailer selten verwende, sondern i.d.R. per IMAPS meine Mails abrufe, muß die Filterung automatisch passieren. Das erledigt bereits Procmail erfolgreich für mich.
Um die Procmail-Regeln zu editieren, muß ich mich aber immer per Shell einloggen und die .procmailrc bearbeiten. Das ist etwas umständlich und nicht immer so einfach. Außerdem nutzen den Mailserver mehrere Leute, wo nicht jeder einen Shellzugang hat, um seine eigene .procmailrc zu editieren.
Daher würde ich das gerne irgendwie über ein Webfrontend erledigen, was die .procmailrc anlegt und entsprechend anpasst.

Beim Stöbern im Netz habe ich diverse Hinweise gefunden, daß das auch mit Horde-Ingo möglich ist und bin dabei auf folgenden Link gestoßen:
Horde-Procmail-Filters - QMail-Info-Wiki

Das dumme an dieser Anleitung ist, daß sie VPOPMAIL vorraussetzt, welches aber auf meinem Plesk-System nicht zum Einsatz kommt. Es handelt sich um einen vServer mit Plesk 8.4.0, der mehrere Domains beherbergt. Hat jemand eine Idee, wie man das ganze ohne VPOPMAIL realisieren kann?

Meine Verzeichnisstruktur, die Courier-IMAP/QMail benutzt sieht so aus:

Code:
/var/qmail/mailnames/<Domainname>/<alias>/

die .procmailrc befindet sich entsprechend in:

Code:
/var/qmail/mailnames/<Domainname>/<alias>/.procmailrc

Ich denke der Knackpunkt liegt in der Datei "ftpauth", die in der obigen Anleitung beschrieben wird. Diese müßte irgendwie wohl an Courier-IMAP angepasst werden, aber wie ??
 
Hy,

nach ein bißchen basteln habe ich jetzz eine Lösung gefunden. Wie vermutet lag der Knackpunkt in der "ftpauth"

Ich habe anfangs mit ein bißchen Quick & Dirty das ganze zum Laufen bekommen, allerdings ohne Authentifizierung. Da ja die Benutzerkontrolle über Horde gemacht wird, war das erstmal nicht ganz so tragisch.

Meine 1. Version von ftpauth:

Code:
#!/bin/bash

QMAILHOME=/var/qmail

DOMAIN=`echo $AUTHD_ACCOUNT|cut -d "@" -f 2`
USER=`echo $AUTHD_ACCOUNT|cut -d "@" -f 1`
POPUID=`id -u popuser`
POPGID=`id -g popuser`

echo "auth_ok:1"
echo "uid:$POPUID"
echo "gid:$POPGID"
echo "dir:$QMAILHOME/mailnames/$DOMAIN/$USER"
echo "end"

Aber um das ganze doch etwas sicherer zu machen, habe ich mal versucht per Bash-Script eine Authentifizierungsüberprüfung zu machen. Sie funktioniert ;-) Sicher nicht perfekt, aber besser als komplett ungeschützt:

Code:
#!/bin/bash

// QMail-Pfad
QMAILHOME=/var/qmail

// Ermitteln der Domain aus den übergebenen Login-Parametern in AUTHD_ACCOUNT
DOMAIN=`echo $AUTHD_ACCOUNT|cut -d "@" -f 2` 
// Ermitteln des User-Alias aus den übergebenen Login-Parametern in AUTHD_ACCOUNT
USER=`echo $AUTHD_ACCOUNT|cut -d "@" -f 1`
// Ermitteln der User- und Gruppen-ID des Mailbenutzers
POPUID=`id -u popuser`
POPGID=`id -g popuser`
// Passwort auslesen zum Connect für die MySQL-Datenbank von Plesk
MYPWD=`cat /etc/psa/.psa.shadow`

// MySQL-Abfrage, welche Domain-ID im Plesk die angeforderte Mail-Adresse hat...
QUERY="SELECT * FROM domains WHERE name = '$DOMAIN'"
DOMID=`/usr/bin/mysql -p$MYPWD -u admin -D psa --execute="$QUERY" | awk '{print $1}' | tail -1`

// MySQL-Abfrage, welche Account-ID im Plesk die angeforderte Mail-Adresse hat, mit Hilfe der vorher ermittelten Domain-ID
QUERY="SELECT * FROM mail WHERE mail_name = '$USER' AND dom_id = '$DOMID'"
USERID=`/usr/bin/mysql -p$MYPWD -u admin -D psa --execute="$QUERY" | awk '{print $5}' | tail -1`

// MySQL-Abfrage, wie das Passwort des Mailaccounts lautet, mit Hilfe der vorher ermittelten IDs
QUERY="SELECT * FROM accounts WHERE id = '$USERID'"
PWD=`/usr/bin/mysql -p$MYPWD -u admin -D psa --execute="$QUERY" | awk '{print $3}' | tail -1`

// Überprüfung, ob übermittelten Passwort in AUTHD_PASSWORD mit dem ermittelten übereinstimmt...
if [ "$AUTHD_PASSWORD" == "$PWD" ]; then
    // Erfolg an Procmail vermitteln und FTP-Daten übergeben
    echo "auth_ok:1"
    echo "uid:$POPUID"
    echo "gid:$POPGID"
    // Pfad übergeben, wo die Filterdatei editiert werden soll
    echo "dir:$QMAILHOME/mailnames/$DOMAIN/$USER"
    echo "end"
    // Script an dieser Stelle beenden...
    exit
fi

// Falls Passwort-Überprüfung fehlschlägt, dann entsprechende Mitteilung an ProFTPd
echo "auth_ok:0"
echo "end"
 
Last edited by a moderator:
Hi,

das hört sich ja super an, aber wie sieht es mit Postfix aus? Und wieso muss man noch einen zusätzlichen FTP am Start haben?

Stefan
 
Back
Top