Mail aus kompletten Quelltext anlegen?
Hallo,
ich habe mein Mailsystem so angelegt, dass von Spamassassin erkannter Spam direkt abgewiesen und eine Kopie der Mail in ein Quarantäne-Verzeichnis komprimiert als gz-Datei abgelegt wird. Eine kurze Info-Mail geht dann an mich, dass eine Mail abgewiesen wurde, mit dem Betreff: "Eine Mail von <senderadresse> an <empfängeradresse> wurde abgelehnt. " Wenn die Mail aufgrund des Absenders doch gelesen werden soll, gibt es in der Mail einen Link, um die Mail aus der Quarantäne anzufordern.
Nun liegt der Quelltext der Mail ja komprimiert als gz-Datei vor. Wie bekomme ich diese Mail nun vernünftig ins new-Verzeichnis? Mit zcat /path/to/file.gz | mail -s "Mail von ..." -r postmaster@... tbarth@... erhalte ich den gesammten Quelltext im Mailbody, was nicht so schön ist. Die Datei entpackt ins new-Verzeichnis kopieren geht ja auch nicht so einfach. Da müsste ich ja eine bestimmte Dateinamensnorm einhalten bestehend aus Unixtime und Sonstiges (1529914497.M480661P17449.mx1,S=1101,W=1126), oder? Ich weiß nicht, woraus hier Sonstiges (M480661P17449, S-Wert, W-Wert) besteht. Ginge das irgendwie?
Gruß, Thomas B.
Hallo,
On Mo, 25 Jun 2018 at 10:44:44 +0200, Thomas Barth wrote:
Die Datei entpackt ins new-Verzeichnis kopieren geht ja auch nicht so einfach. Da müsste ich ja eine bestimmte Dateinamensnorm einhalten bestehend aus Unixtime und Sonstiges (1529914497.M480661P17449.mx1,S=1101,W=1126), oder? Ich weiß nicht, woraus hier Sonstiges (M480661P17449, S-Wert, W-Wert) besteht. Ginge das irgendwie?
das klingt als ob Du dovecot benutzt.
schau dir mal die master.cf von postfix an, da sollte sowas in der Art stehen:
/usr/lib/dovecot/dovecot-lda -f ${sender} -a ${recipient} -d ${user}@${nexthop}
In der manpage von dovecot-lda steht welche parameter wofür sind, denk daran dass du den korrekten empfänger ermitteln musst beim speichern der mail, im Fall von Bcc-Mails und Cc-Mails ist das nicht das To aus der mail.
Der local delivery agent sollte nicht als root aufgerufen werden sondern mit der uid der auch die mailboxen gehören.
Florian
Hallo Florian,
ja, ich habe es vor kurzem erst von courier auf dovecot umgestellt, aber es ist das maildir-Format. Ich habe dazu Erläuterungen gefunden, wie die Dateinamen eindeutig angelegt werden können: https://cr.yp.to/proto/maildir.html
M steht demnach für Millisekunden / 1000 und P für die Prozess-ID, es folgt der Hostname und noch eine Info. So habe ich das nun auch gemacht.
Dateiname zusammengesetzt:
filename="${seconds}.M${millis}P${BASHPID}.${myhostname},S=1101,W=1126"
Die komprimierte Maildatei wird zuerst im tmp-Unterverzeichnis des Mailsdirs entpackt und danach einfach in das new-Unterverzeichnis verschoben. Sobald der Client es abruft, verschiebt dieser die Datei ins cur-Unterverzeichnis und ändert dabei die Info im Dateinnamen:
'/path/to/my/maildir/tbarth/tmp/1529933468.M204530P26467.mx1,S=1101,W=1126' -> '/path/to/my/maildir/tbarth/new/1529933468.M204530P26467.mx1,S=1101,W=1126'
Wenn es abgerufen wurde:
/path/to/my/maildir/tbarth/cur/1529933468.M204530P26467.mx1,S=285856:2,S
Gruß, Thomas B.
Am 25.06.2018 um 14:23 schrieb Florian Streibelt:
Hallo,
On Mo, 25 Jun 2018 at 10:44:44 +0200, Thomas Barth wrote:
Die Datei entpackt ins new-Verzeichnis kopieren geht ja auch nicht so einfach. Da müsste ich ja eine bestimmte Dateinamensnorm einhalten bestehend aus Unixtime und Sonstiges (1529914497.M480661P17449.mx1,S=1101,W=1126), oder? Ich weiß nicht, woraus hier Sonstiges (M480661P17449, S-Wert, W-Wert) besteht. Ginge das irgendwie?
das klingt als ob Du dovecot benutzt.
schau dir mal die master.cf von postfix an, da sollte sowas in der Art stehen:
/usr/lib/dovecot/dovecot-lda -f ${sender} -a ${recipient} -d ${user}@${nexthop}
In der manpage von dovecot-lda steht welche parameter wofür sind, denk daran dass du den korrekten empfänger ermitteln musst beim speichern der mail, im Fall von Bcc-Mails und Cc-Mails ist das nicht das To aus der mail.
Der local delivery agent sollte nicht als root aufgerufen werden sondern mit der uid der auch die mailboxen gehören.
Florian
On Mo, 25 Jun 2018 at 15:55:22 +0200, Thomas Barth wrote:
Hallo Florian,
ja, ich habe es vor kurzem erst von courier auf dovecot umgestellt, aber es ist das maildir-Format. Ich habe dazu Erläuterungen gefunden, wie die Dateinamen eindeutig angelegt werden können: https://cr.yp.to/proto/maildir.html
Warum das Rad neu erfinden - der delivery agent wendet auch die sieve regeln an und updated ggf die metadaten und du musst dir keine Gedanken machen wenn sich das Format mal ändert oder Du umstellen willst - weil er die Konfiguration beachtet.
Florian
participants (2)
-
Florian Streibelt
-
Thomas Barth