*IRC/SMTPゲートウェイ [#w3c4b9e7] RIGHT:2008-02-12 RIGHT:川俣吉広 IRCとメールとの間でメッセージをやりとりするための機能を 実験的に実装してみました。 **アーキテクチャ [#i8b051b4] アーキテクチャの概略を下図に示します。~ 下図の[IRC/SMTP Gateway]および[injector]の部分が今回作成した部分です。 IRC/SMTP Gatewayは、IRCクライアントとして目的のチャンネルにJOINしており、 IRC内での発言を受信します。 受信された発言は、メーリングリストに転送するためメールとしてSMTPサーバに渡されます。 一方、メーリングリストにメールが投稿された場合は、メーリングリストの配信先の アカウントの一つから injectorというプログラムに引き渡されます。 injectorの起動とデータの引き渡しは、.forwardや.procmailrcでの設定により行っています。 injectorは、標準入力からメールのヘッダと本文を読み込み 一定の形式に変換した後 IRC/SMTP Gatewayに渡し、このメッセージが IRCネットワークに投稿されます。 Mailing IRC List Channel |<---[ML driver] |<-->[IRC user 1] | ^ | [ML user 1]<-->| | |<-->[IRC user 2] |--->[SMTP Server]<----[IRC/SMTP]<-->| [ML user 2]<-->| [Gateway ] |----[IRC user n] | ^ [ML user n]<-->| | | | [ML user X]<-->| | | | | | +-->[.forward or]-->[injector]-------+ [.procmailrc] **利用方法 [#o32a25eb] ***IRCユーザ側 [#d45ad74b] IRCネットワーク上では、ゲートウェイは一人のユーザのように見え、 そのチャンネルでの発言はすべてメーリングリストに投稿されるため、 とくに設定等は必要ありません。 ***メールユーザ側 [#a64c35b8] メールを用いて交信を行う場合はメーリングリストに加入する 必要があります。 今回の実験では、メーリングリストシステムにPPML((http://www.kk.iij4u.or.jp/~ando/ppml/ppml.html)) を使用しています。 PPMLの使用法を簡単に説明します。 :メーリングリストに参加したい| 以下のようなメールを送信します。 To: ppserv@dameningen.kicks-ass.net 本文 subscribe ircebug しばらくすると、以下のような確認を求めるメールが自動返送されてきます。 Subject: Request to Confirm From: PPML-Server <ppserv@dameningen.kicks-ass.net> To: kaw@on.rim.or.jp 本文 Subscribe request for "ircebug" mail-list from your address received. If you can approve this request, Send back a line below. confirm 1202794262-00000001741 ircebug Thanks. -- ircebug-request@dameningen.kicks-ass.net このメールの「confirm 1202794262-00000001741 ircebug」の部分を ppserv@dameningen.kicks-ass.net宛に返送すると、 このメールの発信元メールアドレスがメーリングリストにメンバーとして追加されます。 :メーリングリストから脱退したい| 以下のようなメールを送信します。 To: ppserv@dameningen.kicks-ass.net 本文 unsubscribe ircebug :メーリングリストに記事を投稿したい| ircebug@dameningen.kicks-ass.net宛に メッセージを送信します。~ メッセージは、MLリストに配送されます。同時に IRCのチャンネルにも転送されます。 現在、IRCに転送されるメッセージは、本文中最初の4行までです。 :メーリングリストの配送を一時的に停止したい| 以下のようなメールを送信します。 To: ppserv@dameningen.kicks-ass.net 本文 off ircebug :メーリングリストの配送を再開したい| 以下のようなメールを送信します。 To: ppserv@dameningen.kicks-ass.net 本文 on ircebug :過去に配送されたメールを再取得したい| 以下のようなメールを送信します。 To: ppserv@dameningen.kicks-ass.net 本文 get ircebug 1-10 最後の数字は、取得したいメールの記事番号です。~ 以下の書式が使用できます。 get ircebug 10 ... 記事番号10のメールを取得 get ircebug 1-10 ... 1から10まで get ircebug 1,2,7 ... 1と2と7 get ircebug 1,2,5-10 ... 1と2と5から10まで offコマンドで一時的に配送を停止していた間に 配送されたメールもgetコマンドで取得できます。