procmailに関する質問です。アドレスAに来たメールをスパムかどうか判定後、スパムであれば送信者(From)をアドレスAに変更後、Bに転送し、元のスパムは削除したいのですが、そのために


〜判定レシピ〜
| formail -I ”From: A”
! B
/dev/null

というレシピを書きました。すると、すべてのメールが削除されるという目に遭いました。ログを見ると一連のこのレシピに対して
procmail: Skipped ”|formail -I ”From: A””
procmail: Skipped ”! B”
procmail: Skipped ”/dev/null”

となっております。

考えられる原因と解決策を共にご教授いただけないでしょうか。もっとも早かった方に500pt差し上げたく存じます。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:thrillseeker No.1

回答回数328ベストアンサー獲得回数37

ポイント500pt

まず、ひとつのレシピにはひとつのアクションしか指定出来ません。

質問の例では3つのアクションを指定しているので、全て skip されたのだと思います。


3つの処理をひとつのアクションにまとめるには、


0:

~判別定義~

| formail -I ”From: A” | /usr/sbin/sendmail B


で行けると思います。

(レシピの先頭を示す :0 の行に c を入れなければ、指定アクションが

成功したメールは A のメールボックスに残りません。)

id:Kumappus No.2

回答回数3784ベストアンサー獲得回数185

ポイント10pt

これ、.procmailrcの全体でしょうか?だとするとレシピは先頭が0:の行から始まるんで.procmailrcのレシピのひとつとしては


:0

* ~X-SPAM-Status: Yes (←ここは適当に)

| formail -I ”From: A”

! B

/dev/null


みたいな書き方になると思います。


私なら失敗すると怖いんで

/dev/null

ではなく例えば

/home/hoge/SPAM/.

みたいにローカルのディレクトリに一旦溜めるようにしてテストしますが。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません