このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

リストサーバをつくる

発言者:重松修
( Date Saturday, April 25, 1998 12:15:56 )


今、ぼちぼちとBASE64のエンコードやデコードを書いたりしているんですが、
ゆくゆくはリストサーバというか、Web会議室に電子メールで参加できる
CGIを作ろうと思っています。

そこで、リストサーバの動きについて考えてみたのですが、以前から、
よっぽど高級なことをしているんだろうと思ってたのですが、昨日、
Macjorodomoを動かしたら、単に、特定のPOPアドレスにメールやコマンドを
取りに行くだけという構造のようです。

アーカイブを作ったりする部分は省くと、
 (1) POPアドレスに新しくメッセージが届いてないか見に行く
 (2) メッセージがきていたら、それを、Bccでリストのメンバーに送る
というそれだけのような気がするんですが。

他に何かしているんでしょうか。細かい部分では、Precedence: Bulkになっ
てたり、がありますけど。

それと、私は使い方を知らないのですが、In-reply-to: というヘッダで
スレッド表示が可能になると聞きましたが、どのようなメーラーが
対応しているのでしょうか?また、In-reply-to: には何を書けばよいの
ですか?

田中求之 さんからのコメント
( Saturday, April 25, 1998 18:29:56 )

確かに、リストサーバーの基本的な機能は、POP からメールをとってきて、メンバーに
配送するというものです。BBC ではなく、各メンバー宛に普通に発送します。

ただし、ヘッダーを書き換えたり、登録メンバー以外のメールをはじいたり、
メールサーバーのエラーで返ってきたメールの処理(ここが難しいところ)が
必要になります。これらのきちんと行っていないと、使い物になりません。

特に、相手のメールサーバーにはじかれたメールや、配送できなかったメール(休日はメール
サーバーを落とすといった非常識(だと私は思う)なサイトもあります)をちゃんと処理
しないと、大変なことになりますよ。

In-replay-to: は、Windows の1部のメーラーが、これを使ったスレッド処理を
行うようで、ヘッダには元発言のメッセージ ID が記されるようです(メッセージ ID
がユニークな値であることを利用するわけですね)

田中求之 さんからのコメント
( Saturday, April 25, 1998 19:31:08 )

In-Replay-To: はメーラーがつけるのであって、リストサーバー側でつけるのでは
ありません、念のため。

リストサーバー側でこのヘッダを削除するようになっていると、これを利用したメーラー
ではスレッド表示ができなくなるようです(だからといって文句を言うのはどうかと
思うけど)。

ヘッダをどのように処理(何を残し、どのような情報を付加するか)もリストサーバー
作成の際には、十分に考えないといけないことですね。

重松修 さんからのコメント
( Saturday, April 25, 1998 23:05:56 )

田中先生、早速どうもありがとうございます。

WWWから投稿されたメッセージもメールで送信するので、そのようなときに、
In-reply-to:をどう扱えばいいのかな、と思ったわけです。

メールサーバーのエラーで戻ったメールを自分で処理したくないので、
たとえば、1週間エラーが続くと除名し、ブラックリストにするとか、
HTMLメールや機種依存文字、半角かなチェックなどを行いたいのが
自分で作ろうと思う理由なんです。

# 初心者の方が他の人にミスを指摘されて気まずい思いをする前に
# サーバーを若葉対応にしようという考えです。UNIXな人には散々
# バカにされましたけど。;-(

ところで、Bccでなく、普通に送るのはいったいどうしてでしょうか?

私の考えからすれば、Bccだと、メールサーバへの通信は1回で済み、
メールサーバーがその後延々と送ると思いますが、普通に送るには、
人数分メールサーバへ接続しなければなりませんので、大変な時間の
無駄と思えるのですが。1000人とかならば、どこか高速な外部ネットワーク、
例えば、上位プロバイダのSMTPを使えば、トラフィックやCP時間の節約
にもなると思います。

なぜそんな面倒なことをするのでしょう?

田中求之 さんからのコメント
( Sunday, April 26, 1998 00:03:46 )

>普通に送るには、
>人数分メールサーバへ接続しなければなりませんので

SMTP についての RFC を見てもらえば分かりますが、メール送信の際の RCPT TO
の部分で、宛先を複数指定できますよ。 SMTP での宛先の指定法方と、メール
のヘッダ( SMTP では Data として送りだす部分)とを混同してませんか?

RFC 821 の最後に Senario として、いくつかのセッション例が載ってますが、
あれをご覧ください。


>メールサーバーのエラーで戻ったメールを自分で処理したくないので、

じゃぁ、誰が処理するのですか? Errors-To に記した管理者用のアドレスに
戻ってくるのであれば、自分が無視すればいいだけですが、場合によっては
差出人のアドレス、つまりメーリングリストのアドレスに対して送り返され
ます。で、下手すると、そのエラーのメールがまた送りだされて云々で、
スプールがあっという間にパンクする、といったことが起こりますよ。
(これはリストサーバーの設定がいい加減な時にも起こります …やった
ことがあるんですよね (^_^;; )

何はともあれ、SMTP と POP について理解を深めたうえで、十分に気をつけて
実験をしてください。

よしもと さんからのコメント
( Sunday, April 26, 1998 00:31:19 )

田中さん:
> Errors-To に記した管理者用のアドレスに戻ってくるのであれば、
> 自分が無視すればいいだけですが、場合によっては

というか、基本的にはバウンスされたメールはエンベロープの発信者
(メーリングリスト場合はリストの管理者)に戻すべきすよね。
それから、Errors-Toに頼るのはあまり良くないでしょうね。というの
も、Errors-Toって本来エラーメールを返すアドレスを指定するものじゃ
ないし、STDにも違反していますから。また、例えばsendmailの場合、
sendmail.cfであらわに指定しないと、Errors-Toヘッダは無視するよう
になっています。

ともかく、リストサーバを作るんでしたら、機能も大事ですが、基本的な
部分はしっかり作って下さいね。

重松修 さんからのコメント
( Sunday, April 26, 1998 00:58:11 )

自分で処理したくないの部分で誤解を招きやすい表現があったかもですね。
私がいいたいのは、エラーメールを受け取りたくないということではなく、
例えば、さすがに1通だけエラーでかえったらリストから外すというのは
普通しないと思いますから、1週間なりの猶予期間をおくのが普通だと思い
ます。それらの猶予の計算とかそういうのを肩代わりする機能を付けたい
という意味です。

>RCPT TOの部分で、宛先を複数指定できますよ。

ちょっと混乱しましたが、この場合、自分にはあたかも自分にだけ送った
ように見えるのでしょうか?手短に言えば、TO foo@foo.com, bar@bar.net
などとつらつら表示されるのが嫌なのですが。

ところで、私は英語を読むのが非常に苦痛なんですが(というか、あまり
理解が進まないので時間の無駄を感じる)、SMTP/POP関連の良い書籍は
ありませんでしょうか?基本的に、ラクダ本系のいかにもアメリカのUNIX
技術者が面白くないアメリカンジョークを交えて書いたのを、そのまま翻訳
しました、というのではなく、日本人が日本人向けに、あまり専門用語で
煙に巻くような書き方をしていないのが良いのですが。
# そんなのない、といわれそうですが。。。(^^;

田中求之 さんからのコメント
( Sunday, April 26, 1998 02:40:58 )

>手短に言えば、TO foo@foo.com, bar@bar.net
>などとつらつら表示されるのが嫌なのですが。

メールで TO: ヘッダに表示されるものは、SMTP のセッションにおいて RCPT TO
で指定するものとは別です。

メーラーに CC: とか BCC: とかありますが、SMTP 自体にはそういうものはない
という点を考えてもらえばよいと思います。


よしもと さんからのコメント
( Sunday, April 26, 1998 13:40:08 )

> SMTP/POP関連の良い書籍

そうですねぇ。基本的にはRFCを読むのがいいんでしょうが...
まだ、ちゃんと読んでないし、Perlの本だけど

「Perl徹底活用 インターネットダイレクトアクセス」
 ISBN4-7952-3091-9

って本は薄いけど結構面白そうですよ。

清 秀紀 さんからのコメント
( Monday, April 27, 1998 09:37:13 )

CFの日本語ドキュメントを (うなりながら) 読むってのは? ;)

菊地 さんからのコメント
( Monday, April 27, 1998 13:08:50 )

OpenDesignの「電子メールシステム完全マスター」
(正確な名前じゃないかもしれません)が個人的にはお薦めです。