IRC/SMTPゲートウェイ

2008-02-12
川俣吉広

IRCとメールとの間でメッセージをやりとりするための機能を 実験的に実装してみました。

アーキテクチャ

アーキテクチャの概略を下図に示します。
下図の[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]

利用方法

IRCユーザ側

IRCネットワーク上では、ゲートウェイは一人のユーザのように見え、 そのチャンネルでの発言はすべてメーリングリストに投稿されるため、 とくに設定等は必要ありません。

メールユーザ側

メールを用いて交信を行う場合はメーリングリストに加入する 必要があります。

今回の実験では、メーリングリストシステムにPPML*1 を使用しています。

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コマンドで取得できます。

*1 http://www.kk.iij4u.or.jp/~ando/ppml/ppml.html

Front page   New Page list Search Recent changes   Help   RSS of recent changes