Unix-Mail (von sendmail empfangen) in ein Linux-Verzeichnis kopieren (einzeln)

650
Sendi_t

Kennt jemand eine Möglichkeit, alle neu eingetroffenen E-Mails (unter Fedora Linux) zu kopieren, in einem Linux-Verzeichnis (nicht in einem anderen Mail-Ordner, sondern im Linux-Dateisystemverzeichnis) zu speichern?

Wir verwenden Procmail als Liefersystem. Ich habe mir May-Dokumente angesehen, aber alle zeigen nur zwei Muster beim Kopieren:

  1. An mail.bkp anhängen - nicht sicher, warum alle Mails an eine Datei angehängt werden?
  2. Setzen Sie alles in / dev / null - um mit Spam fertig zu werden

Ich brauche einen 'Light Weight'-Mechanismus, um alle neuen Mails in ein Linux-Dateisystem zu kopieren / archivieren

  • /home/username/data/archive/mail1.x
  • /home/username/data/archive/mail2.x
  • /home/username/data/archive/mail3.x

und dann plane ich, Java-Verzeichnislistener zu verwenden, um diese E-Mails parallel zu lesen.

Bitte geben Sie mir Ihren wertvollen Rat.

-3

2 Antworten auf die Frage

2
StackMonkey

A solution to your issue would be to use your procmailrc file to save a copy of the mail to a Maildir format.

Maildir keeps each mail as a separate file, which solves your one problem. Additionally, if you copy the mail it will still go the the other existing locations:

your procmailrc would have the following (or similar lines) near the top:

:0c: $HOME/Maildir/ 

You would need to create the folder Maildir in your home directory still.

Ich habe dies in der .procmailrc-Datei versucht. Ich sehe jedoch neue E-Mails und werde nicht in / home / username / data / archive kopiert. vor 9 Jahren 0
Aber es wird immer nach `/ home / username / Maildir / new /` kopiert, oder? vor 9 Jahren 0
Mein Eintrag in .procmailrc sieht folgendermaßen aus: `: 0c: $ / home / Benutzername / data / archive - und ich sehe keine neuen Mails, die dort kopiert wurden vor 9 Jahren 0
Das Dollarzeichen ist falsch, und die Sperrdatei (zweiter Doppelpunkt nach `: 0c`) ist überflüssig. Beachten Sie den Unterschied zwischen der Variablen "$ HOME" und dem wörtlichen, absoluten Pfad "/ home / username" (der Wert von "$ HOME" könnte normalerweise sein). tripleee vor 9 Jahren 0
Sie haben Recht, es ist ein Tippfehler. Ich habe einen absoluten Pfad vor 9 Jahren 0
@Sendi_t - Beachten Sie, dass nach dem Speicherort ein abschließendes `/` erforderlich ist, um anzugeben, dass es sich um ein Verzeichnis handelt, das von procmailrc als "maildir-format" -Ordner interpretiert wird, wie in: `/ home / Benutzername / data / archive /. `- das letzte` / `ist signifikant. vor 9 Jahren 0
@StackMonkey - du hattest recht .. das / am Ende fehlte in meinem Eintrag, ich habe es getestet und es hat funktioniert. Vielen Dank! Sendi_t vor 9 Jahren 0
0
tripleee

Delivering to a directory only to have an elaborate system to monitor that directory is rather awkward. If your Java program can read standard input, just pipe directly to that.

:0 | /path/to/java -crash -boom -bang -coredump=always 
Der Grund, warum ich Java nicht von procmailrc aufrufen möchte, ist - anscheinend ruft Java für jede E-Mail auf. Erstellen von so vielen VMs, die jeweils nur 1 E-Mail verarbeiten .. :( .. also möchte ich nur alle E-Mails in eine E-Mail kopieren dir und dann viele Mails bearbeiten .. vor 9 Jahren 0