procmailに関する質問です。

メールタイトル、本文が共に空の時に、アクションを実行するレシピを教えて下さい。
宜しくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/07/15 15:22:20
  • 終了:2008/07/22 15:25:02

回答(2件)

id:JULY No.1

JULY回答回数966ベストアンサー獲得回数2472008/07/15 16:56:23

ポイント35pt
:0
* !^Subject:[^ ]+$
{
    :0 B
    * < 1
    アクション
}

かな?

動作は確認してません。あと、Subject は厳密に 0 でなくても、空白文字のみが連続している場合も引っかかるようにしてみた「つもり」です。それと、そもそも Subject ヘッダが無くても引っかかるはず。


参考:

Distribute the mail message Automatically

id:camelmasa

回答有難う御座います。

動作確認してみました。

受信メールタイトルと本文が空でも、アクションが実行されません。

"1バイト以下の場合アクションを実行"としている所を、

"10000バイト以下の場合アクションを実行"にすると、アクションが実行されました。

"1バイト以下の場合アクションを実行する"という以外の方法を募集します。

2008/07/16 21:41:26
id:taku_j_7 No.2

taku_j_7回答回数139ベストアンサー獲得回数122008/07/15 17:24:28

ポイント35pt

恐らくこれでいけるかと。

以下サイトが参考になりますよ。

http://www.jaist.ac.jp/~fjt/procmail.html


:0

* !^Subject:[^ ]+$

:0Ba

* < 1

[処理]

id:camelmasa

回答有難う御座います。

動作確認してみましたが、上記と同じでした。

"1バイト以下の場合アクションを実行する"という以外の方法を募集します。

2008/07/16 21:42:15
  • id:JULY
    私も、この回答を書いた時に、「本文なし」に関して、「本文なし」のつもりで書いたメールが、実際に procmail まで届いたときにどうなるのか、という気がしていました。

    手元の Thunderbird でちょっと試してみたら、改行コードがいくつか入っていたようなので、完全に 0 バイトではないようです。

    と考えると、正規表現で引っ掛けたいところですが、ボディーに対して、「すべての行で、空白文字以外の文字を含まない」という条件がうまく作れません。

    というのは、もともと、単一の行に対して、正規表現に合致したかどうかを判断するので、「すべての行において」というのが表現できません。

    これは、正規表現一般に言われることで、「行をまたぐ正規表現」は処理系に依存することが多いです。

    Procmail の正規表現で、行をまたいだ正規表現を実行する方法は見つけられていないのですが、ひょっとしたら、Perl 辺りを呼び出すようにすれば可能かも知れません。

    具体的な回答でなくて申し訳ありません。
  • id:camelmasa
    コメント有難うございます。

    Perlスクリプトを呼び出せば可能かもしれないですね。
    どうやって書くかが解らない…。
  • id:masutaka26
    "<" はヘッダと本文の合計サイズを評価する仕様のようですね。
    Ruby スクリプトで本文が空かどうかを判断するようにしました。よろしければご覧ください。

    http://masutaka.net/chalow/2009-12-13-1.html

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません