IRC-SMTP_Gateway
をテンプレートにして作成
Start:
*IRC/SMTPゲートウェイ
RIGHT:2008-10-20
RIGHT:川俣吉広
IRCとメールとの間でメッセージをやりとりする機能の試験的な...
**アーキテクチャ
アーキテクチャの概略を下図に示します。
// +----+ SMTP +-------------+ SMTP ...
// |Mail|<--------|< - - - - - -|<---------------[migw.pl...
// |User| | mail server | ^ ...
// | |-------->|- - - - - - >|-->[.forward] |soc...
// +----+ +-------------+ | |
// +------>[minject...
|&ref(migw-internal.gif,wrap);|
上図の &ref(migw.pl); および &ref(minjector.pl); の部分が...
migw.pl は、IRCクライアントとして目的のチャンネルにJOINし...
IRC内での発言を受信します。
受信された発言はメールに変換され、SMTPサーバに渡されます。
一方、メールからIRCへの転送は、メールサーバでの
.forward あるいは .procmailrc などの設定により
メールのヘッダおよび本文が minjector.pl というプログラム...
minjector.plは、標準入力からメールのヘッダと本文を読み込み
一定の形式に変換した後、Unixドメインソケットを経由して mi...
引き渡され、最後に IRCネットワークのJOINしているチャンネ...
発言されます。
**設定及び起動手順
IRC/SMTPゲートウェイの設置と運用は、通常ユーザの権限で可...
以下の例では、設置と運用を行うユーザのホームディレクトリ...
作成し、その中にスクリプトや設定ファイルを置く場合を想定...
***準備
-このPerlスクリプトは、
--Net::IRC
--Jcode
--Net::SMTP
--IO::Socket
というモジュールを使用しますので、
これらのモジュールがない場合は、CPANあるいはOS毎に
用意されているパッケージシステムなどからインストールしま...
***設定ファイルの編集
-このページに添付されている&ref(sample.conf);を元に、設定...
# 各種パラメータ設定
#
$IRC_NICK = 'migw';
$IRC_SERVER = 'irc.example.net';
$IRC_PORT = 6667;
$IRC_NAME = 'IRC/SMTP gateway';
$IRC_CH = '#foo';
$IRC_MAXLINES = 20;
$IRC_ITIMEOUT = 120;
$IRC_CTIMEOUT = 150;
$IRC_HANDLEFILE = $ENV{HOME} . "/migw/sample-handlenames...
$SMTP_SERVER = 'localhost';
$SMTP_FROM = 'migw@example.com';
$SMTP_TO = 'talk-irc@mx.example.org';
$SOCKPATH = $ENV{HOME} . "/migw/sample.sock";
$DEBUG = 1;
設定書式は、Perlの文法に従います。~
設定項目の一部を以下に説明します;
:$IRC_MAXLINES|一通のメール本文からIRCへ送信される最大行...
:$IRC_ITIMEOUT|IRCからメールへ送信する場合のタイムアウト...
:$IRC_CTIMEOUT|IRCからメールへ送信する場合のタイムアウト...
:$IRC_HANDLEFILE|メールをIRCに中継した場合、IRCチャンネル...
<migw> kaw@on: こんにちは。
のようになります。このkaw@onをハンドル名と呼ぶことにしま...
ハンドル名は、上に述べたようにメールアドレスから生成され...
それ以外のものを定義することもできます。その定義ファイル...
$IRC_HANDLEFILEによるハンドル名の変換機能を使用しない場合...
:$SOCKPATH|minjector.plとmigw.plが通信するためのUnixドメ...
その他は、自明な項目だと思いますので省略します。
***メール関係の設定
-minjector.plがメールを受け取るメールアカウント(設定ファ...
-実際にminjector.plがメールを受け取るように、メールサーバ...
--~/.forwardに記述する場合
| perl $HOME/migw/minjector.pl $HOME/migw/sample.conf ||...
--~/.procmailrcに記述する場合
:0
* ^To: talk-irc@example\.org
|perl $HOME/migw/minjector.pl $HOME/migw/sample.conf
Perlスクリプトや設定ファイルの置場は、実際のものに読み換...
***ハンドル名変換ファイルの設定
設定ファイル中で$IRC_HANDLEFILEを定義した場合は、そのファ...
設定ファイルは、Perlの文法に従います。内容は&ref(sample-h...
%stat_handlenames = (
'mail@example.com' => 'HandleName',
'mawk@foobar.ne.jp' => 'mika'
);
1;
このように、%stat_handlenames に、メールアドレスとハンド...
連想配列の要素として定義します。
***プログラムの起動
設置を行ったユーザアカウントでログインし、コマンドライン...
perl $HOME/migw/migw.pl $HOME/migw/sample.conf
設定ファイルで$DEBUGが1の場合、動作にしたがってメッセージ...
実際にIRCで発言したり、$SMTP_TOで設定したアドレスにメール...
***運用
:ハンドル名の変更|ハンドル名は起動前にあらかじめ定義した...
~*静的変換表 ... $IRC_HANDLEFILE中で定義した変換表 ~
~*動的変換表 ... メールユーザがコマンドメールを送信するこ...
~
静的変換表の内容を変更するには$IRC_HANDLEFILEの内容を変更...
~
動的変換表を更新するには、ハンドル名を変換したいメールア...
ゲートウェイのIRCニックネーム<-iam ハンドル名
sample.confの設定値を例にとれば、具体的には以下のようにな...
migw<-iam kaw@home
これで、ハンドル名がkaw@homeに設定されます。ハンドル名を...
migw<-iam
と送信した場合は、設定されていたハンドル名がリセットされ...
~
なお、静的変換表と動的変換表で同じ内容が設定された場合は...
:中継動作の中断と再開|
ゲートウェイの中継動作を停止させたい場合は、以下の形式の...
ゲートウェイのIRCニックネーム<-relay off
これによりメール->IRC, IRC->メールのいずれの方向の中継動...
~
停止している中継動作を再開させたい場合は、以下のようにし...
ゲートウェイのIRCニックネーム<-relay on
**Tips
***複数のメールアドレスとIRCの間で交信を行いたい。
複数のメールアドレスと交信したい場合は、MLを作成し、このM...
動作のイメージとしては、以下のようになります。~
|&ref(migw.gif,wrap);|
|CENTER:MLからIRCへの中継|
~
|&ref(migw-reply.gif,wrap);|
|CENTER:IRCからMLへの中継|
MLといっても、一般的なメーリングリストドライバを導入せず...
***splitしているIRCサーバの間を接続するために使いたい。
これは、前項のTip、''複数のメールアドレスとIRCの間で交信...
--foo用の設定
---foo用の設定ファイル、foo.confを作成
---foo用のメールアカウントを作成し、foo.confを指定したmin...
--bar用の設定
---barに対しても、fooと同様な設定作業を行う。
--foo, bar共に加入しているMLを作成する。
--foo用の設定でmigw.plを起動する。
--bar用の設定でもmigw.plを起動する。~
~
... 動作設定を増やすことで、さらに多くのIRCチャンネルを多...
**ToDo
-IRCの接続が切れた時に再接続を行う機能
--IRC接続断をトラップする方法が現在不明なため、現在は未実...
End:
*IRC/SMTPゲートウェイ
RIGHT:2008-10-20
RIGHT:川俣吉広
IRCとメールとの間でメッセージをやりとりする機能の試験的な...
**アーキテクチャ
アーキテクチャの概略を下図に示します。
// +----+ SMTP +-------------+ SMTP ...
// |Mail|<--------|< - - - - - -|<---------------[migw.pl...
// |User| | mail server | ^ ...
// | |-------->|- - - - - - >|-->[.forward] |soc...
// +----+ +-------------+ | |
// +------>[minject...
|&ref(migw-internal.gif,wrap);|
上図の &ref(migw.pl); および &ref(minjector.pl); の部分が...
migw.pl は、IRCクライアントとして目的のチャンネルにJOINし...
IRC内での発言を受信します。
受信された発言はメールに変換され、SMTPサーバに渡されます。
一方、メールからIRCへの転送は、メールサーバでの
.forward あるいは .procmailrc などの設定により
メールのヘッダおよび本文が minjector.pl というプログラム...
minjector.plは、標準入力からメールのヘッダと本文を読み込み
一定の形式に変換した後、Unixドメインソケットを経由して mi...
引き渡され、最後に IRCネットワークのJOINしているチャンネ...
発言されます。
**設定及び起動手順
IRC/SMTPゲートウェイの設置と運用は、通常ユーザの権限で可...
以下の例では、設置と運用を行うユーザのホームディレクトリ...
作成し、その中にスクリプトや設定ファイルを置く場合を想定...
***準備
-このPerlスクリプトは、
--Net::IRC
--Jcode
--Net::SMTP
--IO::Socket
というモジュールを使用しますので、
これらのモジュールがない場合は、CPANあるいはOS毎に
用意されているパッケージシステムなどからインストールしま...
***設定ファイルの編集
-このページに添付されている&ref(sample.conf);を元に、設定...
# 各種パラメータ設定
#
$IRC_NICK = 'migw';
$IRC_SERVER = 'irc.example.net';
$IRC_PORT = 6667;
$IRC_NAME = 'IRC/SMTP gateway';
$IRC_CH = '#foo';
$IRC_MAXLINES = 20;
$IRC_ITIMEOUT = 120;
$IRC_CTIMEOUT = 150;
$IRC_HANDLEFILE = $ENV{HOME} . "/migw/sample-handlenames...
$SMTP_SERVER = 'localhost';
$SMTP_FROM = 'migw@example.com';
$SMTP_TO = 'talk-irc@mx.example.org';
$SOCKPATH = $ENV{HOME} . "/migw/sample.sock";
$DEBUG = 1;
設定書式は、Perlの文法に従います。~
設定項目の一部を以下に説明します;
:$IRC_MAXLINES|一通のメール本文からIRCへ送信される最大行...
:$IRC_ITIMEOUT|IRCからメールへ送信する場合のタイムアウト...
:$IRC_CTIMEOUT|IRCからメールへ送信する場合のタイムアウト...
:$IRC_HANDLEFILE|メールをIRCに中継した場合、IRCチャンネル...
<migw> kaw@on: こんにちは。
のようになります。このkaw@onをハンドル名と呼ぶことにしま...
ハンドル名は、上に述べたようにメールアドレスから生成され...
それ以外のものを定義することもできます。その定義ファイル...
$IRC_HANDLEFILEによるハンドル名の変換機能を使用しない場合...
:$SOCKPATH|minjector.plとmigw.plが通信するためのUnixドメ...
その他は、自明な項目だと思いますので省略します。
***メール関係の設定
-minjector.plがメールを受け取るメールアカウント(設定ファ...
-実際にminjector.plがメールを受け取るように、メールサーバ...
--~/.forwardに記述する場合
| perl $HOME/migw/minjector.pl $HOME/migw/sample.conf ||...
--~/.procmailrcに記述する場合
:0
* ^To: talk-irc@example\.org
|perl $HOME/migw/minjector.pl $HOME/migw/sample.conf
Perlスクリプトや設定ファイルの置場は、実際のものに読み換...
***ハンドル名変換ファイルの設定
設定ファイル中で$IRC_HANDLEFILEを定義した場合は、そのファ...
設定ファイルは、Perlの文法に従います。内容は&ref(sample-h...
%stat_handlenames = (
'mail@example.com' => 'HandleName',
'mawk@foobar.ne.jp' => 'mika'
);
1;
このように、%stat_handlenames に、メールアドレスとハンド...
連想配列の要素として定義します。
***プログラムの起動
設置を行ったユーザアカウントでログインし、コマンドライン...
perl $HOME/migw/migw.pl $HOME/migw/sample.conf
設定ファイルで$DEBUGが1の場合、動作にしたがってメッセージ...
実際にIRCで発言したり、$SMTP_TOで設定したアドレスにメール...
***運用
:ハンドル名の変更|ハンドル名は起動前にあらかじめ定義した...
~*静的変換表 ... $IRC_HANDLEFILE中で定義した変換表 ~
~*動的変換表 ... メールユーザがコマンドメールを送信するこ...
~
静的変換表の内容を変更するには$IRC_HANDLEFILEの内容を変更...
~
動的変換表を更新するには、ハンドル名を変換したいメールア...
ゲートウェイのIRCニックネーム<-iam ハンドル名
sample.confの設定値を例にとれば、具体的には以下のようにな...
migw<-iam kaw@home
これで、ハンドル名がkaw@homeに設定されます。ハンドル名を...
migw<-iam
と送信した場合は、設定されていたハンドル名がリセットされ...
~
なお、静的変換表と動的変換表で同じ内容が設定された場合は...
:中継動作の中断と再開|
ゲートウェイの中継動作を停止させたい場合は、以下の形式の...
ゲートウェイのIRCニックネーム<-relay off
これによりメール->IRC, IRC->メールのいずれの方向の中継動...
~
停止している中継動作を再開させたい場合は、以下のようにし...
ゲートウェイのIRCニックネーム<-relay on
**Tips
***複数のメールアドレスとIRCの間で交信を行いたい。
複数のメールアドレスと交信したい場合は、MLを作成し、このM...
動作のイメージとしては、以下のようになります。~
|&ref(migw.gif,wrap);|
|CENTER:MLからIRCへの中継|
~
|&ref(migw-reply.gif,wrap);|
|CENTER:IRCからMLへの中継|
MLといっても、一般的なメーリングリストドライバを導入せず...
***splitしているIRCサーバの間を接続するために使いたい。
これは、前項のTip、''複数のメールアドレスとIRCの間で交信...
--foo用の設定
---foo用の設定ファイル、foo.confを作成
---foo用のメールアカウントを作成し、foo.confを指定したmin...
--bar用の設定
---barに対しても、fooと同様な設定作業を行う。
--foo, bar共に加入しているMLを作成する。
--foo用の設定でmigw.plを起動する。
--bar用の設定でもmigw.plを起動する。~
~
... 動作設定を増やすことで、さらに多くのIRCチャンネルを多...
**ToDo
-IRCの接続が切れた時に再接続を行う機能
--IRC接続断をトラップする方法が現在不明なため、現在は未実...
Page: