QMAIL zur E-Mailarchivierung nutzbar?

Ulrich

Registered User
Ich würde gerne alle E-Mails, die QMAIL versendet archivieren. Gibt es eine Möglichkeit über eine domänenweite Einstellung alle E-Mails einer Domäne in ein besonderes Postfach weiterzuleiten?

Mein QMAIL wird über Plesk verwaltet. Innerhalb von Plesk gibt es keine Einstellmöglichkeit. Ginge es mit Hilfe von .qmail-default?
 
Grundsätzlich Fragen:
Nur einkommende Emails oder auch ausgehende?
Nur eine Domain oder alle Emails des Servers?
Kannst Du programmieren?

huschi.
 
Hi Huschi,

pro Domain, ein und ausgehende und ja, ich kann programmieren. Ich dachte an die .qmail-default files und diese einfach mit &[email protected] abzugreifen, aber leider klappt das nicht. :-(

Wenn man bedenkt, dass auch die per smtproute weitergeleiteten E-Mails archiviert werden sollten, dann muss es wohl ein Filter sein, der in die QMAIL Kette eingehängt wird....
 
Die .qmail ist der falsche Ort, weil dort nur alle eingehenden Emails durchlaufen.
Wie man im Diagramm gut sieht laufen alle Mails durch qmail-queue. Du findest auf der selben Site auch Hinweise wie man Scripte in diese Kette einfügt.

huschi.
 
Danke. Wie peinlich. Deine Grafik habe ich mir gerade erst angesehen und es hat nicht klick gemacht.

Das ist der perfekte Ansatz. Ich mache mich dran und werde hier meine Ergebnisse veröffentlichen.

Grüße,
Ulrich
 
Hi Huschi,

lange ist das Thema liegengeblieben....

Jetzt habe ich ein Testsystem aufgesetzt und mal losgelegt. Mir fehlt allerdings noch ein kleiner Schubs.... :-)

Wie kann ich /var/qmail/queue/lock/trigger auslesen, um an die aktuelle E-Mail zu kommen. Leider bekomme ich immer eine Fehlermeldung, sobald ich nicht das original qmail-queue aufrufe.

Ich habe qmail-queue umbenannt, durch ein Skript ersetzt und versuche nun die E-Mail abzugreifen.

Kannst Du mir einen kleinen Tipp geben?

Danke.

Ulrich
 
Den Trigger brauchst Du eigentlich nicht.
Mach mal folgendes:
a) Benenne qmail-queue um in z.B. qmail-queue.orig
b) erstelle eine neue qmail-queue:
Code:
#!/bin/sh
/var/qmail/bin/qmail-queue.orig
Dann setzt Du die Rechte darauf exakt so wie die qmail-queue.orig.
Damit sollte es schon mal funktionieren. Wenn nicht, ist etwas falsch.

huschi.
 
Klar das geht. Nur wie komme ich in der qmail-queue an die E-Mail dran? Und welchen return Code muss ich geben, damit die E-Mail als verarbeitet gilt, bzw. der tcp-wrapper ein ok zurückliefert?
 
man qmail-queue said:
qmail-queue reads a mail message from descriptor 0. It then reads envelope information from descriptor 1.
It places the message into the outgoing queue for future delivery by qmail-send.
Im einfachsten Fall rufst Du von Deinem Programm aus qmail-queue.orig auf.
 
Aha. Und was bzw. wie lese ich nun Descriptor 0 und Descriptor 1 aus?

Ich stehe offensichtlich auf der Leitung....

Sorry. :confused:
 
Du hast einen wesentlichen Punkt der Queue nicht verstanden:
Es liefert nichts zurück, sondern ist ein Durchlauf. Du kannst es Dir als eine Pipe vorstellen:
(x)inetd | qmail-smtpd | qmail-queue | qmail-send
(Stimmt so nicht 100%ig, aber erleichtert das Verständnis.)

Daraus hast Du mit dem obigen kurzen Beispiel nun gemacht:
(x)inetd | qmail-smtpd | qmail-queue | qmail-queue.orig | qmail-send

Das heißt also Du musst das Script so gestalten, dass es von STDIN einließt und dies auch auf STDIN von qmail-queue.orig ausgibt. Z.B.
Code:
#!/bin/sh
/usr/local/bin/mein-script | /var/qmail/bin/qmail-queue.orig

Um die Pipe zu splitten, gibt es viele Möglichkeiten. Z.B. ein eigenes Script oder tee oder oder oder...

huschi.
 
Back
Top