0

私はこれを何週間も解決しようとしてきました...

私の目標は、次のメッセージを受信トレイで検索することです。

Hello
Hi
Hey

私はこれを行うために3つのファイルを使用しています。最初に、$HOME の .forward ファイル

"|IFS=' '&&exec usr/bin/procmail||exit 75 #username"

これら 2 つは ~/.procmail ディレクトリにあります。

.procmailrc

VERBOSE=off
MAILDIR=$HOME/Mail
PMDIR=$HOME/.procmail
DEFAULT=/var/spool/mail/username
LOGFILE=$PMDIR/log
INCLUDERC=$PMDIR/general.rc
#end of .procmailrc

最後に、ルール ファイル: general.rc

:0
* ^From:.*sumone@sumaddy.com
* ^Subject:.*hello
$HOME/Mail/Hello

これら 3 つのファイルすべてが連携して、件名に hello パターンを含むメールをコピーおよび移動することが想定されています。安全のために、特定の人の住所も検索します。次に、これらのパターンが一致すると、見つかったものを貼り付けて、指定されたパスを作成します。まだ存在しない場合。

しかし、それはしていません。これらのファイルを emacs、vi、.. で編集して保存すると、自動的に機能しますか? それともコンパイルする必要がありますか?

もしそうなら、.procmailrc は (すべてではないにしても) 'Shell=/bin/sh' を必要とするかもしれません

試していないわけではありません...


いいえ、受信メールを処理する設計が不十分です..

私は自分自身に電子メールを送信して、それをテストしました。

私が思うに、私の General.RC ファイルはコード化された書き込みではありません。なぜなら、私が自分自身に電子メールを送信した直後に、それをコピーして指定されたディレクトリに移動する必要があるからです。


私がこれらの間違いを犯したのも不思議ではありません。私はこれら 3 つのファイルすべてを 100 万回も編集しました。

LOGファイルに何も表示されません...

他のすべてを修正し、 /usr/bin/procmail が存在することを知っています。これは、whereis を使用してそのパスを確認したためです。

しかし、私のテストはまだ失敗します。自分宛てにメールを送信し続け、メール フォルダをチェックして、「Hello」ファイルのバイト数が増加しているかどうかを確認しています。

ログを機能させるにはどうすればよいですか? general.rc は間違っていますか?

4

5 に答える 5

3

Procmail は、メールがメールボックスに留まっているときではなく、受信したメールを処理します。すでにメールボックスにあるメールを処理したい場合は、自分自身に「バウンス」するか、procmail を介してパイプすることにより、再度 procmail を介して渡す必要があります。mutt のようなコマンド ライン メール クライアントでは、前者を 'b' コマンドで実行し、後者を次のように入力して実行します。|procmail

于 2008-11-23T20:59:09.187 に答える
2

すでに持っている電子メールを処理したい場合は、次のことを行う必要があります。

  1. すべてのメール クライアントを終了します
  2. 現在の受信トレイを移動します (mv /var/spool/mail/username /tmp/mail.username )
  3. formail +1 -ds procmail < /tmp/mail.username
于 2008-11-23T21:14:24.100 に答える
2
  1. ~.forward ファイルの usr の前に「/」がありません。また、このように短くすることもできます。

    "| **/**usr/bin/procmail"

  2. .procmailrc を HOME ディレクトリの下に置く
  3. MAILDIR を設定した後、general.rc にメールボックス名として「Hello」のみを記述します。また、レシピの先頭に「:0:」を使用してロックを有効にします。すべての配信でメールボックス ファイルをロックする必要があります。
  4. サーバーの /usr/bin/procmail に procmail がインストールされていることを確認してください。
  5. 「Hello」ファイルが MAILDIR に存在することを確認してください。
  6. ログファイルを確認する
于 2008-11-24T01:03:20.427 に答える
1

これらの件名行のいずれかを含むメッセージをディスク上で検索することだけが必要な場合はfgrep、受信トレイをお勧めします。

于 2011-09-09T07:51:35.890 に答える
1

他のデバッグを行う前に、受信した電子メール メッセージに対して procmail が実行されていることを確認することを第一に考えてください。

私の提案は、.procmailrc ファイルを次のようにすることです (他には何もありません)。

VERBOSE=on
LOGFILE=/tmp/procmail.log

:0 fhbw
| sed "s/^Subject:/& --procmail working--/"

次に、自分自身に電子メール メッセージを送信します。

/tmp/procmail.log にログファイルが作成され、電子メール メッセージがメールボックスに到着し、件名が「--procmail working--」を含むように変更されます。

それでもうまくいかない場合は、procmail が呼び出されていないため、質問を編集して .forward ファイルの現在の内容を表示する必要があります。

それが機能する場合、問題は .procmailrc または general.rc ファイルの内容にあります。質問を編集して、これら 2 つのファイルの現在の内容を表示する必要があります。

于 2008-12-02T01:12:56.833 に答える