Welcome to

Welcome to tokoo.net

Home

日々の更新
2003年  2月26日
 2月19日
 2月3日
2002年  12月5日
 4月17日
 2月20日
2001年  12月26日
 11月18日
 10月3日
 10月2日
 9月14日
 9月2日
 7月29日
 7月16日
 7月3日
 6月19日
 6月11日
    6月7日
    6月2日
    5月29日
    5月22日
    5月19日
    5月17日
    5月16日
System
Private

何かお気づきの点が
ございましたら
mitsuまで

 

 

2つで十分ですよ

2002年2月20日

 

ふれっつADSL

    年末年始中、サーバーは置いたまま、夫婦それぞれの実家を転々としたが、常時接続環境でないのが如何に苦痛かを嫌と言うほど知った。久しぶりにダイヤルアップで56k接続も経験したが、こんな環境やってられんわい。妻の実家ではまともに動いていないノートPCのメンテを依頼された。Windows95。IEは4?。ためしにWindows Updateアクセスしてみたら、山ほど出てくる。何もかも古い。せめてIEくらい新しくしようと思ったが・・・5.01落とすのが精一杯だった。

・・・などと閉口していたら、私のほうの実家にいる間に1月4日になった。今日はここにフレッツADSLが来る筈の日。既にそれに合わせてLAOXで一番安いブロードバンドルーターを仕入れておいた。午前9時・・・まだ駄目。10時・・・おっ、つながった。偉いよ仕事始めちゃんとやってるじゃない。12時にNTTから接続のTELが来たが、もうガンガン使ってるって。

しかしイーアクセスとちがってフレッツはさすがメジャーというか、ルーターいろいろ選べていいなぁ・・・

・・・妻のほうの実家も何とかならんかいな。

 

SMTP-AUTHがほしい

   

こうして、実家にいる間も時々ここにアクセスに来、といっても駄文の並んだhttpではなく、システムログを見るためにftpだったり、メールボックス見るためにimapだったりするのだけど、まぁ何の問題もなく動いているようで安心。あれま、友人からメールが届いている。早速返信・・・したいところだが、smtpには制限が付けられており、外のIPアドレスから外部へリレーできなくしている。がーん、何とかしたいよォ。

というわけで、帰省Uターン後真っ先にやろうと決意したことはSMTP認証を入れることだったりする。

 

Cyrus SASL + SMTP Auth

    参考リンク:多数
 (1) SMTP AUTH 顛末記
 (2) semdmail 8.11.0 SMTP-AUTH対応
 (3) SMTP AUTHで何処ででもメール送信

とりあえずさっさと動かすには、(2)にある通りにやればまぁ、いける感じ(実際最初はそうした)。ただし結局はいろいろな絡みがあとになって出てくるので、結局一通りすべてを把握しなければならなくなり、英語もいっぱい読むことになるのだが。その点から後から思うに、(3)はしっかり読んでおくと得。ポイントは、
 (A) Cyrus SASL と Sendmailの組み合わせでやるのがとりあえず良さそうなこと
 (B) 日常使用するメーラーがサポートしている認証方式を確認すること
 (C) Cyrus SASLでどの照合方法を採用するか

(A)についてはSendmailの環境設定にCFが使えなくなるという恐怖がまずついて回る。何せ学生時代ですら見向きもしなかったm4マクロ文法をやらにゃならんのかと思っただけで気が狂う。しかしこれは全くの杞憂。まぁリンク(1)か(2)に書いてあるとおりにやれば、とりあえずsmtp認証は間違いなく動く。

(B)は私にとってはOutlook Express (Windows)とNetscape Mail (Linux)。OutlookはLOGIN認証とNTLM認証、NetscapeはPLAIN認証をサポートしている模様。NTLM認証はSASLではサポートされないので、Outlook Expressは必然的にLOGIN認証だけとなる。LOGINにせよPLAINにせよ、どっちも平文パスワードがネットワークに流れる形式のようなので、セキュリティとしては非常にお寒い部類に入る。Outlookの場合はSSLサポートしているみたいなので、OpenSSLでも入れてsmtpsで通信せよということなのかもしれないが、理屈ではわかるんだがまだやっていない。

(C)は通常の場合、sasldbを使う方式になる。sasldbはPLAIN、CRAM-MD5、DIGEST-MD5をサポートする。じゃあOutlook ExpressのLOGINはというと、動かした限りではPLAINの一種として動いてくれているようだ。ただし私の場合、最初こそsasldbを使っていたが、とある都合で別の照合方法に変えてしまった。この辺は後述。

 

バージョンダウン

    ・・・この当時のインプリメンテーションはもう忘却しつつある。最終的に何をやったかというと、

(1) Berkley DBのバージョンを4から3.3に落とした。
年末にsendmailをでっち上げた時は、RedHat 6.2Jの環境のままで何も考えずにコンパイルしたが、Berkley DBくらいはちゃんと新しいの入れておこうと思って、いきのいい4を落として来て作り直した。ところがSASLを使っている時だか、その後の一連のごたごたの時だか、今となっては覚えていないが、DBでエラーが出ちゃった。結局1個古いVer.3.3を落として来て解決・・・(したのかな?)

(2) Cyrus SASLを2から1に落とした。
とにかく新しいバージョンのほうがいいやということで、SASL 2.1.0を落として来ていろいろとbuild仕掛けたんだが、これがまた(今となっては覚えていないが)どっかで破綻を来し、SASL1に戻してしまった。ドキュメントをよく読んでみて今となっては赤面モノだが、相当な機能変更がなされている。

当時とにかく混乱とトライアル&エラーでやっていたから、今となっては最終結果以外の記録が何も残っていない。だから変な速断や憶測は避けるべきだけど、とりあえず報告まで。一般論として言えることは、1個前のバージョンが一番いいという、ソフトウェアの基本定理である。

・・・でまぁ、とりあえず動いた。出張がてら実家のADSLからここへアクセス。SMTP認証O.K.である。ついでに悪の踏み台リレー実験も実施。見事全部REJECT。

しかしこれだけでは済まなかった。

 

実家の親達のメールアカウント

    出産のためずーっと実家にいる妹から連絡あり。親達が地元の無料パソコンスクールで勉強し出したから、メールアカウント何か使わせて・・・。プロバイダのメールアカウントは僕が見るから嫌だなぁ。よかったらここのドメインでメールアカウントそれぞれ作らない? と逆提案。了承。

うーむ、感慨。私もとうとう、プロバイダ業を始めてしまったか(笑) SMTP認証入れ、実家からのアクセスも確認済だ。ただしこれから使うのは私ではない。70歳の老人だ。うーm。

パンピーの視点でここのメールシステムを見直すと、2つのことが問題になってくる。

(1) UW-IMAPDの使い勝手
 UW-IMAPDの特徴はUNIXメールとの互換性の高さだが、煎じ詰めて言えばユーザーのホームディレクトリにあるメールボックスファイルを操作しているだけである。これだけならまだ可愛いのだが、UW-IMAPDの真骨頂は、imapクライアント操作でimapフォルダ表示をさせると、home directory下のファイルリストを隠しファイルを含めて全て出そうとしちゃうところだ。これはIMAPDの仕様でも何でもなく、UW-IMAPが入れたオリジナル仕様らしいのだが、私の知るかぎりの知人でこの機能を誉めた人を見たことがない。

 あとOutlook ExpressのIMAPで新規アカウントを作ろうとすると、「送信済みアイテム」とか「下書き」とかいうフォルダを勝手に作る。UW-IMAPDはオーダーに従い作ってくれるが、この漢字フォルダ名、UNIX上からは目茶エンコードされたファイル名になっている。まぁ70歳の老人がtelnetやftp使ってホームディレクトリにアクセスしたいなんて言い出すとは思われないからいいけど。

(2) パスワードの変更
 UW-IMAPDのパスワード認証はUNIXのものと同じでLOGIN認証だ。/etc/passwdもしくは/etc/shadowである。もちろん、ビルドのオプション変えれば認証方式は変えられると思うが・・・まずはsmtpとimapのパスワード認証は同じにしたほうがいい。ということはsmtpに合わせてsasldbをUW-IMAPDで扱わせるか、逆にUW-IMAPDに合わせてsmtpでLOGIN認証を扱わせるかだ。

 また、リモートの実家環境からもパスワード変更が出来た方が親切だろうということになる。勿論相手が相手だからtelnetというわけにはいかない。ブラウザ使ったWebパスワード変更が望ましい。セキュリティを考えればOpenSSLも必要だろう(これはまだやっておりません)。

 

CMUへの憧れ

 結局UW-IMAPDを使うのをやめて、Cyrus IMAPDにしたほうがいいんじゃないかということになってきた。SMTPはすでにCyrus SASLで動いているわけだから、相性きっといいだろうし。ブランド意識もあったりして。だってCMUはコンピュータサイエンスの御三家なんだから。あとの2つはメディアラボのあるMITと、Sunを生んだスタンフォードだと思った。まぁこういうブランド意識、学歴意識こそは次世代は是非とも唾棄していただきたい。ブランドよりも実績ベースで考えよう。UCBのがいいんじゃないかしら。イリノイ大学だって・・・CMUは確かAI系でSpiceプロジェクトとか、Andrewとかあったと思ったが、どれもねぇ。

 しかし私は古い人間なので、世の学歴ママと同様、CMUと聞くとそれだけでホになってしまう。まぁ日本の大学はほとんど馬鹿にしているので学歴ママよりは多少ましかもしれないけど。というわけでドキドキCyrus IMAPDをインストール。

 ・・・実はインストールには異常に苦労したが、どこで苦労したか忘れてしまったのでとりあえず書かない・・・

 何これ? 受信トレイしか出てこないぞ。

 何かコメントがあるなぁ。何々? RFCナンたらの勧告によれば、ルートフォルダに正規におけるスペシャルメールボックスはINBOXだけである・・・と。じゃあ、Outlook Expressが本来作ろうとする送信済みアイテムとか下書きとかはどうやって実現するんだ? 受信トレイのサブフォルダにしろと。え~こんなの嫌だ嫌だ。

 

LOGIN認証できん

 UW-IMAPDが見えすぎて腹を立てていた一方、Cyrus-IMAPDは逆に受信トレイしか見えないという、まるでジェットコースターのように違う両者なんだけど、とりあえずCMUの名に負け、Cyrusを使うことにする。しかしこれのパスワード変更が弱った。認証にsasldbを使っているため、関連コマンドを使わないとパスワード変更ができない。sasl databaseのパスワード変更を行うcgiを作ろうかと思ったが、これも面倒。結局LOGIN認証で動かすようにCyrusをいじることにした。

 まずネットでドキュメントを探すと、CyrusのConfigureに--enable-loginってのがあるらしい。これをトライ、いきなりエラー。このオプションはもうない・・・だと。結局Cyrus SASLでどんな認証をサポートしているか調べなければいけなくなったんだけど、LOGIN認証については[直接」何も書いていない。しかもいろいろ調べていくうちに、、昔はこれの照合方法にLOGINがあったらしいこともわかった。これが何故消えたかはわからない。CMUはログイン認証を撲滅させたいのかも。

 Cyrusの直接ドキュメントからはログイン認証は撲滅されているみたいだが、ログイン認証させる方法はちゃんと書かれている。この代替の照合方法となるものが、pwcheckである。ヘルパーデーモンを作って認証させるということだが、ログイン認証をやってくれるヘルパーデーモンもCyrus SASLにちゃんと付いてくる。これをmakeして、/etc/rc* で起動させておけば、ちゃんと認証やってくれるのだ、これが。

 

逆戻り

 さてと、何とかLOGIN認証を入れたぞというところで、引っかかるのは受信トレイだ。確かにRFCの勧告もわかるようなわからないような。人によっては送信済みアイテムなんてフォルダ使うんじゃなく、送信時にbcc:自分自身にすることで、受信トレイに送信記録置く人もいる。でもそうじゃない人もいるのが現実だから、メジャーなIMAPサーバーならきっと送信済みアイテムその他もサポートしているだろう・・・

 というわけで、Cyrus IMAPDでやる方法を捜し回ったのだが、出て来ない。唯一の解はルートパスを変えるということみたいだが、これはクライアントのメーラーをそう設定してもらわなければならず、とても飲めたものじゃない。あと検索エンジンで引っかかる結果は、Cyrus IMAPDの使い勝手の悪さを述べたものばかり。

 どうもCyrusではできないらしい。1日考えた末、Cyrus IMAPDをパージし、UW-IMAPDに戻してしまった。UW-IMAPDはデフォルトでLOGIN認証になっているので何も考えることはなしである。

 ここまで苦労して家族のためのメールアカウント環境を整備した。で、家族も何とか使えているようである。めでたしめでたしだが、どうもアクセスログを見た限りでは、こっちで提供したデフォルトのパスワード(乱数で作成)から変えた気配が全くない。おいおい、せっかくパスワード変更のためだけに相当な苦労をしたというのに。

 世の中にはCourier IMAPDというものもあるらしいが、もう疲れた。他のことやりたい。2つで十分ですよ。わかってくださいよ。