| 「彼方からの手紙」プログラムと使用環境 |
|
 |
この連載は、IMAP4サーバとPerlスクリプトを組み合わせ、便利かつおもしろいメール環境を作ってみようという試みです。Perlスクリプトは、リモートホストからでも実行可能です。また連載では、Webブラウザからスクリプトを利用して、Windowsシステムなどのプラットフォームでも楽しめるようにしています。これは、IMAP4サーバ側でApacheを動作させ、Webブラウザからのアクセスに応じて起動するCGIを用意し、CGIが呼び出したPerlスクリプトの結果をブラウザに表示することによって実現しています。
|
| |
| ■掲載プログラム類はこちらから |
|
2001年11月掲載
2002年1月掲載
|
| |
| ■使用環境の作りかた |
|
掲載しているスクリプトは、ワシントン大学で作られたUW-IMAPサーバとPerl5が利用できることが前提です。Linux Magazineでは次の環境を使用していますが、LinuxのディストリビューションやIMAP4サーバのバージョンが多少違っていてもご利用は可能でしょう。
・Red Hat Linux 7.0.1J
・imap-4.7c2-12(ワシントン大学で作られたUW-IMAPサーバ)
・perl-5.6.0-10(Perl5)
|
| ◆IMAP4サーバを動作させる |
|
Linuxのディストリビューションの多くには、IMAP4サーバが含まれているので、インストールがしてあれば、設定を変えるだけで動作します。Red Hat 7Jの場合は、次のようにします。
|
|
1.
|
インストール後、xinetd.dディレクトリのimapファイルを開き、disable行が“no”になっているのを確認します。
ディストリビューションによっては、この代わりにinetd.confファイルのimapエントリで設定するものがありますが、この場合はimap行の先頭に“#”が付いていないことを確認します。 |
|
2.
|
設定ファイルを書き換えたら、xinetd(またはinetd)デーモンにSIGHUPを送ります。 |
|
3.
|
imapdデーモンはtcpdから起動されるようになっているはずなので、tcpdでローカル環境からのアクセスが可能なように設定しておきます(デフォルトではアクセス可能になっているはずなので、通常は変更の必要はないでしょう)。 |
|
4.
|
IMAP4対応のメールソフト(Windows環境ならOutlook Express)を使って、IMAP4でのアクセスが可能かどうかを確認します。 |
| ◆Perl5環境を用意する |
|
Perl環境も、Linuxのディストリビューションのほとんどに含まれているので、perl本体はそのままでも利用できますが、現時点でそのほか以下のようなperlの拡張モジュールを使用しているので、入手します。
・Mail::IMAPClient
http://www.cpan.org/modules/by-module/Mail/Mail-IMAPClient-2.1.4.tar.gz
・MIME::Base64
http://www.cpan.org/modules/by-module/MIME/MIME-Base64-2.12.tar.gz
・Jcode-0.75
http://openlab.ring.gr.jp/Jcode/index-j.html
http://openlab.ring.gr.jp/Jcode/Jcode-0.75.tar.gz
これらのモジュールは、アーカイブを展開し、カレントディレクトリをそのディレクトリに移したあと、
$ perl Makefile.PL
$ make
$ su (rootユーザーになる)
# make install
の手順でインストールできます。
|
| ◆連載のスクリプトを配置する |
|
連載で製作したPerlスクリプト群(imapcat、imapfolder等)は、CGI から見てpathが設定されている場所(/usr/local/bin/等)に配置します。また、スクリプトとして実行ができるように、必要に応じて“chmod +x”でパーミッションを設定しておいてください。Perlスクリプトは先頭行の“#!/usr/bin/perl”で起動するようになっていますが、Perlのインストール先が違う場合は書き変えてください。
|
| ◆CGIプログラムを配置する |
|
CGIプログラムは任意の場所に配置できますが、毎回ごとに分けて、~/public_html下に“mail256/連載回/”のディレクトリを作成し、配置するとよいでしょう。たとえば、
~/public_html/mail256/3/
のようなかんじです。また、これらのCGIプログラムの実行を許可しておきます。これには、
<directory /home/*/public_html>
Options +ExecCGI +Includes
</Directory>
などという設定をhttpd.confファイルに付け加えます(上記の設定で、サーバサイドインクルードも許可されます)。また、拡張子.cgiがCGI実行ファイルであることを認識させるには、
AddHandler cgi-script .cgi
という行が必要です。最近のApacheでは、この行の行頭に“#”を付けて注釈にしていることが多いので、こちらも修正しておきます。
最後に、Apacheを再起動させます。
|
| ◆プログラムが使用する設定ファイル |
|
連載で製作したCGIプログラムは、そのままでも使用できますが、IMAPサーバの認証に使用するパスワードをアクセスの都度入力しないですむように、ユーザーのホームディレクトリから読み込むこともできます。このためには、suExec機能をApacheに組み込み、ユーザーのホームディレクトリに、.imapcatrcを配置します。
|
|
◇suExec機能を組み入れる |
|
Apacheは、デフォルトでは各ユーザーごとのホームページ機能を働かせているはずです。httpd.conf(/etc/httpd/confなどにある)に、
UserDir public_html
という行があればOKです。suExecはApacheとともにインストールされていて、/usr/sbinなどに置かれているはずです。“rpm -ql apache | egrep suexec”などで確認してください。Apacheを起動したとき、error_logファイル(/etc/httpd/logsなどにある)に、
[notice] suEXEC mechanism enabled
と表示されればOKです。起動しない場合、おそらくsuexecコマンドのパーミッションが問題と思われます。
$ chmod 4711 /usr/sbin/suexec
としてsticky bitを立てておきましょう。そのあと、Apacheを再起動すれば動くはずです。
|
|
◇ .imapcatrcの用意 |
|
ユーザーのホームディレクトリに
.imapcatrcというファイルを用意すれば、そこからパスワードが読み込まれます。このファイルは、imapcatだけでなく他のツールからも使われます。ファイルの内容は、
ユーザー名@IMAPサーバ名 パスワード
です。サーバの数が複数ある場合は、次のように複数書くことも可能です。
ユーザー名1@IMAPサーバ名1 パスワード1
ユーザー名2@IMAPサーバ名2 パスワード2
ユーザー名3@IMAPサーバ名3 パスワード3
|