これ何て呼びますか

UNIX-Cよりmailコマンドを実行し、ログインユーザのメールを取得したいのですが
受信件数やメールサイズなどを取得する方法がわかりません。
処理イメージとしては
(1)受信メール数、サイズをチェック
(2)mailコマンドを実行
(3)s * filename -- 任意のファイルへ受信メールを書き込み
(4)(3)のファイルより受信メールを解析
(5)(4)で解析したメールを1件ずつ保存
といったイメージしているのですが・・・
(mailコマンドでは不可能でしょうか?)

A 回答 (5件)

> POP3のコマンド(STAT,REST・・・)はUNIX-Cの関数にあるのでしょうか?



POP3 のコマンドは、socket でサーバに送信するものです。send や write を使います。

> また、基本的なことなのですが、SMTPで他メールサーバから受信したメール群は
> 自動的にPOPサーバに以降されるのでしょうか?現在サーバの設定は特にしていない
> のですが・・・。

SMTP と POP3 が別のホストになっている場合には、SMTP のサーバから転送してあげないといけません。
同じサーバであれば、両方とも同じ spool をみるので、特に意識する必要は無いです。
    • good
    • 0

ここのサイトを参考にしてください。


http://sanaki-web.hp.infoseek.co.jp/tcpip/pop3.htm

ただし、ログインユーザ全てとなると、以下の方法が考えられますね。
(1)上記のPOP3コマンドをすべてのユーザとして投げる。
(2)スプールのメールを解析する。

質問の(3)は単にテキスト等にリダイレクトかければいい訳です。
(4)と(5)もヘッダ情報を取得すれば、単純なそうですね。
いずれにしても、スプールを解析するか、リモート受信するかどうかですね。

参考URL:http://sanaki-web.hp.infoseek.co.jp/tcpip/pop3.htm

この回答への補足

mailxコマンドを子プロセスからexecv関数にて実行し、
親プロセスにて"s [filename]\n","q\n"を出力して1メール
ずつ処理していきたいのですが、mailxコマンドの結果受信メール
の有無が取得できないため困っています・・・。

補足日時:2002/12/05 20:18
    • good
    • 0
この回答へのお礼

POP3プロトコルを使用すればmailコマンドは必要ないのですね。
POP3のコマンド(STAT,REST・・・)はUNIX-Cの関数にあるのでしょうか?
また、基本的なことなのですが、SMTPで他メールサーバから受信したメール群は
自動的にPOPサーバに以降されるのでしょうか?現在サーバの設定は特にしていない
のですが・・・。

お礼日時:2002/11/29 18:05

> mailコマンド起動の方で探してみようと思います。



そちらの方が簡単だ、と思うのは あ・ま・い 。
対話的に使うわけですから、それほど難しさは変わらないです。

> でもサンプルがなかなかなくて・・・

ちょっと探してみました。キーワードを "pipe dup close fork mail" といったところで。
pipe システムコールの典型的な使い方になるのですが、メールの送信の例はたくさん
あるのですけれどね。

例えば、として参考URL の pipemail.c とか。

このソースで、親プロセスの受信用のハンドル(pfd[0])を close しないで、
こちらからメールの内容と mail コマンドのプロンプトを読み取りつつ、メールを保存し、
適当な終了判定をする、という感じになるでしょうか。

参考URL:http://www.cs.odu.edu/~cs476/unix/codelectures/
    • good
    • 0
この回答へのお礼

すみません、イマイチどのようにやり取りすればよいのかわかりません。例えば、3通受信メールがある場合、子プロセスでexec*を使いmailコマンドを実行し、
1通目からメール内容を取得していきたいのですが・・・。

お礼日時:2002/12/04 19:56

書き忘れたことをもうひとつ。



もし、あなたが、Windows 系のプログラムの方が得意なのであれば、参考URL のような
コンポーネントを使う手もあります。

参考URL:http://www.hi-ho.ne.jp/%7Ebabaq/basp21.html
    • good
    • 0

> プログラムからmailコマンドを起動してやるしかないでしょうか・・。



これもひとつの手ではありますね。

私なら、直接 socket を POP につないでやり取りしちゃいます。
socket を知っているのであれば、テキストのやり取りなので、さして難しいプログラムではありません。RFC1939 を参照ください(→参考URLのひとつめ)。

サンプルは幾らでも Web に転がっています。ちょっと探してみました(→参考URLのふたつめ)。
コメントが英語ですらないですが、ソースを読むだけだったら問題ないですね。
わりかし ベタっと 書いてあるので、流れは追いやすいでしょう。

面倒だとしたら、MIME の処理(いわゆる添付ファイル)かなあ。

参考URL:http://www.spencernetwork.org/reference/rfc1939- …

この回答への補足

POPでやるとすると、各ユーザ名、パスワードが事前にわかっていないといけないですよね?

POPにするかmailコマンドにするか悩みどころです・・・。

補足日時:2002/11/28 15:13
    • good
    • 0
この回答へのお礼

回答ありがとうございます。私にはちょっと難しかったです・・・
mailコマンド起動の方で探してみようと思います。
でもサンプルがなかなかなくて・・・

お礼日時:2002/11/27 15:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!