# 詳しくは % man procmailrc あるいは % man procmailex を参照してください。 自分のホームディレクトリィに .procmailrc というファイルを用意します。 (注意:ピリオドに注意。 .procmailrc です) (注意:chownは自分、chmodは600とか644にしないと不備とみなされます。 通常はそのようになっています。) メールが送られてくると、.procmailrcに 書かれた判定条件が調べられて、条件を満たすと、実行が起きます。 この[条件+実行]の1セットをレシピと呼ぶことにします。 レシピはたくさん並べることができ、レシピは上から順に調べられます。 一つのレシピの条件部が満たされていると、そのレシピの実行部が 実行され終了になります。 ただし、さらに(cフラグを書くことにより)続行せよという指示も できます。
では、作り方。サンプルを中心に説明します。 .procmailrcは
パート1とパート3は固定です。 パート1は以下です。(コピーしたいときはこれを)
パート3は以下です。(コピーしたいときはこれを)
パート2の部分はバラエティーに富んでいます。 さまざまなレシピを順に追加していきます。順序も大事です。 上から下に順次にチェックされますから。 パート2には以下のレシピのサンプルを適当にみつくろって並べてください。 #上から順に解釈してマッチしたら、そこでストップ。 #ただし、:0のとなりに c が書いてあれば、さらに下に continue します。 (cはcontinueのcではなくcarbonですが) 注意:自分のケータイのメールアドレスを.transaddrに書いておくことを前提と しています。 もしも .transaddrファイルが存在しなければケータイにメールを送ることはありません。 条件(*で始まる行)が複数並んでいる場合、andを意味します。 パート2のサンプル集サンプル1 山田さんからメールが来たら、 ケータイにメールのサマリ(480文字以内で)を送る。 さらに下のレシピへと続く
サンプル2 山田さんから来たメールを鈴木さんに転送して終了(cフラグがついてないので)
サンプル3 サブジェクトに hentai という文字列が入っていたら、即、消去して 終了する。(/dev/nullにしまうことは消去を意味する)
サンプル4 数学会から来るニュースメールは、別ファイル(suugakukai)に保存し、 終了する。 数学会からのメールはまとめてあとで読むつもり。
サンプル5 マックサイコから来たメールは山田さんと鈴木さんに転送し、さらに 別ファイル(macpsych)にしまっておき、終了する
サンプル6 情数からのメールはなんにもしないで素直にメールスプール(デフォルトの保管場所)に しまって終了する。普通にあとでメールソフト(MUA)で読む。
サンプル7 情数*以外*から来たメールで、かつ 添付書類があるメールは拒否をしたいが、完全に捨てても困る場合が あるので、送ってきた相手に、「添付書類があるメールは 受け取れません。プレインテキストで送ってください。」 というメールを自動で返す。さらに下のレシピへと続ける(cがついているので)
ここでcフラグをはずしておくと、送ってきた相手に迷惑であるとのメールを 送ったあと、メール自体は捨てられる。手元には残らない。 サンプル8 (Eがついているので) 上のレシピの条件を満たさないときに限り、このレシピも チェックする。もしも直前のレシピの条件が満たされていると、 このレシピはスキップする。(Eはelseの意味) 情数*以外*から来たメールで、かつ HTMLやMULTI-PARTになってるメールは拒否をしたいが、完全に捨てても困る場合が あるので、送ってきた相手に、「マルチパートのメールは 受け取れません。プレインテキストで送ってください。」 というメールを自動で返す。さらに下のレシピへと続ける(cがついているので)
サンプル9 (Eがついているので) 上のレシピの条件を満たさないときに限り、このレシピも チェックする。もしも直前のレシピの条件が満たされていると、 このレシピはスキップする。(Eはelseの意味) クオーテッド文字列のメールは拒否をしたいが、完全に捨てても困る場合が あるので、送ってきた相手に、 /usr/local/mesg/mesg001に書いてある文章を相手に自動で返信する。 さらに下のレシピへと続ける(cがついているので)
サンプル10 (Eがついているので) 上のレシピの条件を満たさないときに限り、このレシピも チェックする。もしも直前のレシピの条件が満たされていると、 このレシピはスキップする。(Eはelseの意味) メールがでかくて256000バイト以上であったら、二つのことを行って終了する。 (cがついてないので終了となる) その二つとは、送ってきた相手に警告のメールを送ることと、 メールをbigmailファイルにしまうことである。 $HOME/warnmsgは警告の内容をいれてあるファイル名である。 ファイル名は/で始まらなければならない。$HOMEは/から始まる文字列に 変換されてるのでこの条件に合致している。
サンプル11 神居さんからのメールで、しかも情数のみんなに送ったんではなさそうな 個人的なメールだったら、急ぎかもしれないので、ケータイのほうにも要旨を (480文字以内で。 たとえばケータイ会社によっては480文字以内のメールの受信は 無料だったりする)送っておく。
追補集追補(2006.05.12) サンプル15 HTMLファイルのチェックを厳密にしてみた。それと 情数の先生達から送られてきたものなら、敢えてHTMLの警告メールは 返さない。 つまり情数から来たメールでなく、かつ、HTMLメールなら相手に 警告の文章を送る
追補(2006.05.09) サンプル14 ANAマイレージカードから定期的に送られてくるメールはうざったいから AMCというファイルに一括保存する。それらのメールは % mail -f AMC とすることで読むことができる。
追補(2006.04.29) サンプル13 マイクロソフトのMUAソフトであるアウトルックから送られてきたメールには 「ERROR--MUA このメールは受け取れない。拒否する」と返信を出す。
追補(2006.04.28) UNIX上でエディタが使えない人は、DOSのほうからftpで ファイル転送してくると思いますがそのときはascii(text) 転送にしてください。これは改行表現に相違があるからです。 また、漢字コードにも相違がありますが今回は日本語を使いません。 追補:(2006.04.27) じつのところ、パート3は書かなくてもオーケーなんです。 パート3はいわば「すべり止め」です。 これがないと気づくと、かってにパート3を自動でくっつけて くれます。書かなくても、メールが消えちゃったということには ならないです。 追補:(2006.04.27) これは、私が長年愛用してきたものですが、みなさんに公表してしまいましょう。 サンプル12として。 サンプル12 これはサンプル1やサンプル11にあるようなケータイにメールを送るのと ペアで使います。 ケータイのほうに、メールが送られてきますから、ついついこれに返信 したくなるわけです。ところが、普通に返信してしまうと、 相手にケータイのアドレスがばれてしまいます。 そうならないように、あたかも情数のアドレスから送ってるかのように 偽装(?)ができるものです。 相手が情数のアドレスにメールを送ってきたとします。そのあと、相手は情数から 返事が来たと思ってしまうというしろものです。じつはケータイに送られて ケータイから返事を出したのですが。 (ケータイのアドレスがmy-keitai-addr@dokomo.toka.ezweb.nadonadoと仮定して)
実際、試してみれば、サブジェクトに工夫がしてあることがわかります。 なぜサブジェクトをいじってはいけないかもわかります。 昔、ゼロックスの社内でもこのようなことが行われていました。 当時、まだインターネット・メールのスタイルが確立してなくて、ゼロックス風のメールシステムで動いてましたが、 インターネット・メールと接続、ゲートウェイする方法を 考えました。それと似たようなことを考えました。 |