Up
Down
Return

IMPでWebメール

自分のメールサーバが家にあって、外からそのメールを読みたい場合の選択しとしては、

  1. POP3やIMAPでつなぐ
  2. .forwardに転送先アドレスをいれておく
  3. Webメールの類を使う

といった手段があります。
1.は、POP3などのポートをインターネット側に開放せねばならないので、セキュリティ上、やりたくありません。
2.はその都度.forwardを設定するのはめんどい..........ということで、
3.のWebメールはお手軽な解決策になります。
ブラウザからSMTPメールを使う方法は幾つかあり、素朴なユーザインタフェースのPerlで書いたCGIを使うものを既に導入してあったのですが、やはり使い勝手がいまいちでした。
Debian GNU/Linuxの中にWebメールとしてimpを見つけたので、これを使ってみようという事にしました。

1.horde、impの導入

メールサーバには、既にwu-IMAPが入っています。Debianはpotatoです。
これは、パッケージを素直に入れればよいので、お気楽でした。(この時だけは)
PostgreSQLとPHP3は既に入っています。

2.日本語が使えない

ApacheにimpのディレクトリをAliasで定義してブラウザからそのURLを叩くと、難なくimpのログイン画面が表示されました。
そこでログインして受信ボックスを見ると、日本語が全部文字化けしていました。ここで、potatoのパッケージだけでは日本語対応していないことに気付かされたのです。

日本語版impとそれをインストールする為の前提条件

日本語版はサーチエンジンですぐに見つかりました。
但し、PHPで日本語を表示するには、

のいずれかという条件が付きます。potatoのPHP4は2001年9月現在、4.0.3です。
そこで、素直にPHP3の国際化版をインストールしようというところから始めました。これのダウンロードも訳はないのですが、いざ、configureしようとすると、色々な物が無いと言って文句を言われます。これは、メールサーバが、Gateway2000 Libertyという486PCでHDDも1GBなので極力通常の使用に使わないライブラリなどは入れない事にしているからです。最初に幾つかは言われたものを追加インストールしたのですが、いい加減に嫌になって次のPHP4+jstringモジュールを試す事にしました。
これもDebianのPHP4ソースを取ってきてjstringモジュールを組み込んでconfigureすると色々文句を言われます。いい加減で嫌になってきたので、一挙にPHP4.0.6の選択肢を考えました。
このバージョンはDebianですとunstableに入っています。しかし、libc6 (>= 2.2.3-7) など依存関係にあるパッケージのバージョンが新しくて、potatoのままでは無理そうですし、そうかといって今現在使っているメール+DNSサーバを一挙にunstableへapt-get dist-upgradeなどしたくありません。(変な事が起こると家族全員から文句を言われます。)

IMAPの入ったメールサーバとimpを入れたマシンを分ける

そこで、別のマシンをunstableに上げてPHP4.0.6を入れ、それからメールサーバを読み書きするという事にしました。
更に、もう一つのマシンのLDAPをメールアドレス帳として使うという構成で作業を始めました。
unstable版は、dist-upgradeした時には結構stableで、全く問題なく新しいバージョンの環境が出来ました。そこに、上記のサイトからダウンロードしたhordeとimpをDebian化せずにインストールしました。バージョンは、

でした。-なお、impはThe Horde ProjectがPHPを使ったアプリケーション・フレームワークに準じて開発しているWebアプリケーションです。-セットアップの過程はブラウザを使って行えるのでいたって簡単です。ただ、ここでやろうとしているような複数のマシンを使う場合、いきなり「ローカルサーバ名」とか聞かれても、これはどのサーバのことかな?などと悩んでしまう質問もあります。ユーザ毎のアドレス帳をLDAPの他に用意するならば、データベースが必要ですが、これは先にメールサーバにpotatoのパッケージを使ってimpを入れた時に既にpostgresqlで作ってあるので、それを使う事にしました。こうして、とりあえず日本語のimpをブラウザから使える様になりました。

受信箱


ログイン画面

受信箱


こうして、受信したメールは問題なく読めるようになりました。

メールの送信で問題が

ところが、メールを書いて送ろうとすると問題が発生しました。

LDAP検索のフレームが文字化けする。
これは、
/* doctype */
require "$default->include_dir/doctype.inc";
require "$default->include_dir/generic-header.inc";
を、horde/imp/ldap.result.php3とldap.search.php3に入れてやると直りました。
送信したメールが届かない。
これには、一週間悩まされました。(といっても、ウィークデイは一応お仕事をしてますからこの件を考える時間は余りないのです)次の週末に、「IMAPは受信にはいいけど、送信にはSMTPの定義がどこかに必要だな」とNetscapeのMessengerの設定を思い出して気付きました。impのhorde/imp/lconfig/defaults.php3にそんなことを定義している箇所がありません。impで送信するときに、ウィンドウの下部にCONTACTING XXXXXと、impを入れたマシンの名前が出るので、送信はimpを入れたマシンのメール環境に依存していることを確認できました。という事で、このマシンに入れたsmailの設定をいじくって無事にメールの送信も可能になりました。


LDAPで送信先のメールアドレスを検索

送信メッセージを書く