Скопируйте unix почту (полученную sendmail) в каталог linux (индивидуально)

516
Sendi_t

Кто-нибудь знает способ скопировать все новые поступившие электронные письма (в Fedora Linux), чтобы хранить в каталоге Linux (не в какой-либо другой папке почты, но в каталоге файловой системы Linux)?

Мы используем Procmail в качестве системы доставки. Я просмотрел майские документы, но все они показывают только две схемы копирования:

  1. Добавить в mail.bkp - не уверен, зачем добавлять все письма в один файл?
  2. Поместите все в / dev / null - для обработки спама

Мне нужен механизм «легкого веса» для копирования / архивирования всех новых писем в файловую систему Linux, например

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

и затем я планирую использовать прослушиватель каталогов Java, чтобы читать эти электронные письма параллельно.

Пожалуйста, дайте мне ваш ценный совет.

-3

2 ответа на вопрос

2
StackMonkey

Решением вашей проблемы было бы использование файла procmailrc для сохранения копии письма в формате Maildir.

Maildir хранит каждое письмо как отдельный файл, который решает одну проблему. Кроме того, если вы скопируете письмо, оно все равно будет отправлено в другие существующие места:

ваш procmailrc будет иметь следующие (или аналогичные строки) в верхней части:

:0c: $HOME/Maildir/ 

Вам нужно будет еще создать папку Maildirв вашем домашнем каталоге.

Я пробовал это в файле .procmailrc. но я вижу новые письма и не копируется в / home / username / data / archive .. 9 лет назад 0
Но он копируется в `/ home / username / Maildir / new /`, верно? 9 лет назад 0
моя запись в .procmailrc выглядит так: `0c: $ / home / username / data / archive` - и я не вижу новых писем, скопированных туда 9 лет назад 0
Знак доллара там неправильный, и файл блокировки (второе двоеточие после `: 0c`) является лишним. Обратите внимание на разницу между переменной `$ HOME` и буквальным абсолютным путем` / home / username (что обычно может быть значением `$ HOME`). tripleee 9 лет назад 0
Вы правы, это опечатка. У меня есть абсолютный путь режиссера 9 лет назад 0
@Sendi_t - обратите внимание, что после местоположения вам нужно иметь завершающий `/`, чтобы указать, что это каталог, который procmailrc будет интерпретировать как папку "maildir format", как в: `/ home / username / data / archive / `- это последнее` / `значимо. 9 лет назад 0
@StackMonkey - вы были правы ... в конце отсутствовал / в моей записи, я проверил это, и это сработало. Спасибо! Sendi_t 9 лет назад 0
0
tripleee

Доставка в каталог только для того, чтобы иметь сложную систему для мониторинга этого каталога, довольно неудобна. Если ваша Java-программа может читать стандартный ввод, просто передайте ее напрямую.

:0 | /path/to/java -crash -boom -bang -coredump=always 
причина, по которой я не хочу вызывать java из procmailrc, заключается в том, что он, по-видимому, вызывает java для каждого электронного письма .. создает так много виртуальных машин, каждая из которых обрабатывает только одно электронное письмо .. :( .. поэтому я просто хочу скопировать все электронные письма в одном Dir, а затем обрабатывать много писем .. 9 лет назад 0