Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ローカルのメールスプールからメールを 取り出す方法は?

2 views
Skip to first unread message

こてこて

unread,
Jun 26, 2001, 11:09:20 AM6/26/01
to
ローカルホストにまでやってきて、/var/spool/mail などのメールスプールに
保存されている自分宛てのメールを1通ずつ取り出して処理するプログラムを
作りたいのですが、メールを自分のツールで扱えるよう、スプールから取り出す
方法がわかりません。

自分で調べたところ、
/etc/aliases を変更する方法と、~/.forward を使う方法を見つけたのですが、
前者は /etc/aliases の変更が必要なため、個人用のツールとしては適当
ではありません。
後者の方は、メール毎にプロセスが起きて処理するそうなので、一度に2通
受信した時の排他処理が難しそうです。
(やりたいのは、メールの内容を自動判別して、1つのファイルに統計情報を
 書くといったイメージです)

個人で1つ常駐プロセスを動かしておき、自分宛てのメールがローカルマシンに
届いたならば、1通ずつ取得して処理を行ないたいのですが、何かいい方法は
ないでしょうか? 処理の終わったメールは /var/spool/mail から無くなっている
のが条件です(単に覗くだけではだめ)。

尚、システムは Linux で、言語はできれば C がいいのですが、難しいようで
あれば、Cシェルやパールなどで、コマンド呼び出しの形式をとってもかまい
ません。 どなたか、いい方法を教えてください。よろしくお願いします。


Keisuke Takayama

unread,
Jun 26, 2001, 5:12:06 PM6/26/01
to
C も linux も programming も全然関係ないので followup-to: fj.mail

>>>>> In article <9ha8js$ooj$1...@pin3.tky.plala.or.jp>,
<ko...@olive.freemail.ne.jp> writes:

=> ローカルホストにまでやってきて、/var/spool/mail などのメールスプールに
=> 保存されている自分宛てのメールを1通ずつ取り出して処理するプログラムを
=> 作りたいのですが、メールを自分のツールで扱えるよう、スプールから取り出す
=> 方法がわかりません。

スプールに一度保存してから取り出す, のではなく
メールが届いたときにスプールに書かれる前に
パイプで適当なプログラムに流し込む
という手段が使えます.

=> 自分で調べたところ、
=> /etc/aliases を変更する方法と、~/.forward を使う方法を見つけたのですが、

たぶん procmail を使うべしという情報に当たったと思いますが
そのときの .forward の書き方が やるべきことそのものです.

=> (やりたいのは、メールの内容を自動判別して、1つのファイルに統計情報を
=>  書くといったイメージです)

procmail では正規表現を使った条件分岐をかなり柔軟に書けますし

From owner-an...@jp.freebsd.org Tue Jun 26 09:25:46 2001
Subject: ANNOUNCE: My new job
Folder: /var/mail/taka 6999

こんなかんじのログを残してくれますがこれでは不足でしょうか.
車輪の再発明それ自体が目的であれば別ですが
すでにある資源は有効に活用すべきだと思いますがいかがでしょう.
--
Keisuke TAKAYAMA <ta...@cyber-magic.org> <ta...@magic.uinet.or.jp>
不許 全文引用 / 記述内容完全無保証

こてこて

unread,
Jul 5, 2001, 10:09:24 AM7/5/01
to
「こてこて」です。自己フォロー

sendmail.cf の Mlocal で呼び出すところを変更して
対処できそうです。情報ありがとうございました。

--
こてこて ( ko...@olive.freemail.ne.jp )

IKEDA Shigeru

unread,
Jul 5, 2001, 11:03:11 AM7/5/01
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"こてこて" <ko...@olive.freemail.ne.jp> writes:

| sendmail.cf の Mlocal で呼び出すところを変更して
| 対処できそうです。情報ありがとうございました。

どんなふうに変更したのか、とかその変更点を含めてどのようにして解決したか、
ってのは公開不可能なんでしょうか?

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (OpenBSD)
Comment: For info see http://www.gnupg.org

iD8DBQE7RIGrUHt8kCIJ1VoRAknCAKC2HgXdOWDC6ERk/lQgQgCPpCcDcgCfTeG9
eStpr1wmTzlrdpptEsBgUkI=
=iveh
-----END PGP SIGNATURE-----

こてこて

unread,
Jul 6, 2001, 7:52:52 AM7/6/01
to
「こてこて」です。

"IKEDA Shigeru" <s...@bigfoot.com> wrote in message
news:877kxna...@orange.js3guj.ampr.org...


> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> "こてこて" <ko...@olive.freemail.ne.jp> writes:
>
> | sendmail.cf の Mlocal で呼び出すところを変更して
> | 対処できそうです。情報ありがとうございました。
>
> どんなふうに変更したのか、とかその変更点を含めてどのようにして解決したか、
> ってのは公開不可能なんでしょうか?

すみません。結局、条件が少し変わってしまったのですが…
(システムの方にも手をいれていいことになりました。)

sendmail.cfの中で
Mlocal, P=/usr/libexec/mail.local,
となっているところを、
Mlocal, P=/foo/bar.exe
に変更する。

ここで /foo/bar.exe は個人のhome配下にある所定の設定ファイルを
読みこみ、設定ファイルがあれば、排他制御を行なってから、その
設定ファイルに従った処理を行ない、一方、設定ファイルがなければ、
/usr/libexec/mail.local を起動するツールです(作ります)。

こんな感じです。

IKEDA Shigeru

unread,
Jul 6, 2001, 10:44:15 AM7/6/01
to
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

"こてこて" <ko...@olive.freemail.ne.jp> writes:

| すみません。結局、条件が少し変わってしまったのですが…
[...]
| /usr/libexec/mail.local を起動するツールです(作ります)。

なるほど、排他制御も含めて、作りこむわけですね。了解です。

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (OpenBSD)
Comment: For info see http://www.gnupg.org

iD8DBQE7Rc67UHt8kCIJ1VoRAkqMAJkBjcssE/YvD4v295u3rs7tjwupcACgnzXh
vOoYKaXP29KlSMlmvkrM4zo=
=k32q
-----END PGP SIGNATURE-----

0 new messages