Guten werte Mailinglisten Benutzer,

ich habe letztendlich zwei relativ einfache Fragen, diesen geht allerdings eine 
recht lange Erklärung voraus, um die Rahmenbedingungen erschöpfend zu 
erleutern. Also bitte ich vorab um Entschuldigung für die leicht romanartigen 
Züge meines Beitrags

Ich bin derzeit damit befasst ein kleines Mailsystem auf meiner Ubuntu-Box einzurichten. 
Die Box ist im Web unter der beispielhaften Domain "example.de", mit 
wechselnder IP, zu erreichen. Die erklärten ziele sind dabei:
1. Bereitstellung eines IMAP-Postfachs für verschiedene Nutzer, z.B. 
Fü[email protected]  (umgesetzt mit Dovecot)
2. Einsammeln der Mails aus verschiedenen Externen Postfächern pro Benutzer 
(z.b. Von [email protected],[email protected]; 
umgesetzt mittels Dovecot PostLoginScript und getmail)
3. Versenden von Mails über die Externen Postfächer (z.B. User1 kann über die 
Box als [email protected]  verwenden, was dazu führt, dass die 
Mail über User1s Mailaccount bei Web.de geleitet wird; umzusetzen mit Postfix)
(4.) Versand von @example.de Mails an externe Accounts soll nicht umgesetzt 
werden (z.b. [email protected]  [email protected]), dazu fehlt mir 
mindestens eine statische IP
5. Erzwungene Verschlüsselung der Verbindungen eines Benutzers zum den 
Komponenten des Mailsystems (dank verbreiteter Unterstützung von TLS in allen 
Komponenten ein Leichtes)

Das so beschriebene Setup ist natürlich problemfrei umzusetzen. Jetzt folgt 
aber der schwierige Teil, nämlich die Randbedingungen zu den oben genannten 
Zielen:
1.a) Asymmetrische Verschlüsselung (PGP) aller Mails im Postfach des Benutzers
2.a) Pro Benutzer symmetrisch verschlüsselte Speicherung der Zugangsdaten zu 
den Externen Postfächern bzw. SMTP Servern
3.a) siehe 2.a)
5.a) die von den Benutzern zum Mailsystem übertragenen Anmeldedaten müssen in 
Klartext, oder mindestens in vorhersehbarer Form (bekannte Digest-Methode) 
vorliegen

Diese Randbedingungen sollen es den Administratoren (ich bin nicht allein, und ich will auch nicht 
"aus Versehen" die Daten der Nutzer sehen können) und vor allem eventuellen Einbrechern 
erschweren die Mail- beziehungsweise Zugangsdaten der einzelnen Benutzer einzusehen. Ich schreibe 
"erschweren", da am Ende ein super user mindestens die Zugangsdaten lesen können wird, 
dazu aber in den Prozess der Mailzustellung eingreifen muss. Mir ist kein Ansatz eingefallen, die 
Daten meiner Benutzer noch stärker zu sichern, leider.

Randbedingung 1.a) wird von Dovecot mit pro Benutzer verwalteten PGP 
Schlüsseln, beim einsortieren der Mails, umgesetzt werden (Evaluierung steht 
noch aus, zu förderst muss das Relaying an externe SMTP Server funktionieren).

Randbedingung 2.a) basiert erneut auf Dovecot. Dovecot ermöglicht es über 
Prefetch-Queries das Klartextpasswort der sich gerade angemeldeten Benutzer kurz 
vorzuhalten und eine über die "Post Login Script" Funktionalität ausgelöste 
Aktion auszuführen. Somit ist es mir möglich, bei der Anmeldung eines Benutzers, seine 
mit seinem Box-Passwort verschlüsselten Zugangsdaten zu den externen Postfächern zu holen 
und zu entschlüsseln, und damit getmail zu füttern. Getmail stellt dann die Mails der 
externen Postfächer dem Benutzer zu (hier ist ein Ansatzpunkt für einen Einbrecher mit 
super user Rechten, da dieser das Post Login Script manipulieren kann, oder aber die 
Nutzerdaten aus dem getmail Prozess auszulesen vermag). Das ganze ist transparent für den 
Benutzer und funktioniert wunderbar (transparent in dem Sinne, dass der Benutzer eh erst 
sieht, dass er neue Mails hat, wenn es sich anmeldet, und nicht bemerkt [von einer k
leine Verzögerung abgesehen], dass die Mails erst in diesem Moment eingesammelt 
werden).

Nun folgen die eigentliche Probleme.

3. Ist mit Postfix und dessen sender_based_relay_maps sowie sender_restrictions 
pro Benutzer (ein Benutzer darf nur @example.de und seine externen Adressen als 
Absender angeben) sehr schön umzusetzen.

Die Schwierigkeit liegt bei der Randbedingung 3.a).
Ich benötige eine Möglichkeit, im Kontext des Sendens einer Mail über Postfix 
an das Klartextpasswort des Benutzer heranzukommen, um damit das Ergebnis des 
sender_based_relay Lookups zu modifizieren (Entschlüsselung der gespeicherten 
Daten entsprechend 2.a)).

Frage 1: Gibt es ist Postfix eine Möglichkeit das Ergebnis des 
sender_based_relay Lookups mit dem Klartextpasswort aus der SMTP Anmeldung zu 
vermischen?

Beim sender_based_relay-ing ergibt sich, in meiner Installation, ein weiteres Problem. 
Sollte der Postfix die Mail nicht sofort zum Zielserver (beispielsweise dem SMTP vom 
Web.de) zustellen können, wird er dies später erneut versuchen. Dazu benötigt er dann 
"später" die Zugangsdaten des Benutzers zum externen Server, befindet sich aber 
nicht mehr im Kontext der Anmeldung des Benutzers, und hat somit auch nicht mehr dessen 
Klartextpasswort zur Verfügung. Der Schlüssel, der für die Entschlüsselung der 
Zugangsdaten benötigt wird, muss bis zum erfolgreichen Zustellen (oder zum letztendlichen 
Aufgeben der Zustellung) der Mail vorgehalten werden. (Alternativ könnte die Mail in 
diesem Moment abgelehnt werden.)

Darum
Frage 2: ist es möglich, Postfix spezielle Informationen in den Envelope einer sich in 
der "ausgehenden" Queue befindlichen Mail zu schreiben, und diese beim 
Zustellungsversuch zur Manipulation der Relay-Lookups zu verwenden?
Mit Envelope meine ich an dieser Stelle den Satz an Verwaltungsdaten, den 
Postfix für die Zustellung einer Mail verwendet, und der in keinem Fall jemals 
in einer Mail auftaucht, weder bei erfolgreicher Zustellung noch bei Bounce 
noch bei Benachrichtigung des Postmasters über unzustellbare Mails.

(An dieser Stelle sei angemerkt, dass dann das Klartextpasswort des Benutzers, 
oder besser eine Ableitung davon, temporär auf der Festplatte gespeichert 
würde, was es einem Angreifer mit super user Rechten ermöglichte, dies zu 
lesen.)


Sind jemandem von Ihnen Ansätze bekannt, die zugrunde liegenden Probleme von 
Frage 1 und Frage 2 zu lösen?


Erneut muss ich mich entschuldigen, dass dieser Beitrag recht lang ist, jedoch 
denke ich, dass dies durch die Komplexität des entstehenden Systems bedingt 
ist. Ich hoffen meine Ausführungen ermöglichen eine Einordnung und bestenfalls 
positive Beantwortung meiner Fragen.

Haben Sie vorab schon vielen Dank für die Beschäftigung mit meinen Fragen.

Mit freundlichen Grüszen,
Mathias Reineke

_______________________________________________
postfix-users mailing list
[email protected]
http://de.postfix.org/cgi-bin/mailman/listinfo/postfix-users

Antwort per Email an