トップ 最新 追記
RSS feed

ただのにっき


2000-01-12(水) [長年日記]

Maildir

昨日判明したimapサーバのひどい仕様(?)がどうにも許せないので、メール管理方法を変えようと思い立った。Maildir形式ってヤツだ(昨日MHとか言ってたのは嘘)。この形式はメール1通を1ファイルに、1フォルダを1ディレクトリに対応させる直観的でわかりやすい形式で、メールのロスト等の問題が少ないとされている。ただ、以前WindowsでAL-Mailを使っていたときに似たような管理方式だったんだけど、ファイルの数がやたらと増えるのでディスクを食いまくるのと、ファイルのオープン/クローズはコストがかかるので、検索なんて処理をさせるとmbox形式を使っているメーラに比べて遅かった記憶がある。ただ、いずれメールはNamazuを使って検索対象にしようと思っているので、1メールが1ファイルになっているのは都合がいい。

qmail

となると、Maildir形式に対応したMTAを用意する必要がある。この形式の祖と言える(嘘かも)、qmailしかない。さっそくqmail関連のサイトを検索してお勉強。そうだ、IMAPもMaildir形式に対応しているものにしないといけないんだよ。大丈夫かなぁ。ちなみにいずれもKondara製のパッケージのない世界である。Maildirを推奨してるんなら、qmailくらい入れといてくださいよぅ、とほほるさん。しっかしなんか、ずんずん地雷原に足を踏み入れてるような気がするぞ……。まぁ、sendmail.cfの悪夢から逃れられるならそれだけの価値はあるかも?!(自分に言い聞かせている)

qmailはバイナリ配布を禁じているらしく、一発インストール可能なRPMは見つからない。どうにかqmail-1.03-102memphis.src.rpmというのを見つけた。ちなみに今日の教科書はここかな。rootになって、

# rpm --rebuild qmail-1.03-102memphis.src.rpm
# cd /usr/src/redhat/RPMS
# ls
qmail-1.03-102memphis.i386.rpm

てな感じで、src.rpmからi386.rpmが作れる。Kondara的にはi586で作るべきなのかな。まぁ、specファイルの書き方を勉強していずれ作ってみることにしよう。

続いて、同居はできないsendmailのパッケージを消す。

# rpm -e sendmail

続いてqmailをインストール。

# rpm -ivh qmail-1.03-102memphis.i386.rpm
qmail                       ##################################################
Your fully qualified host name is spc15.tada.
Putting spc15.tada into control/me...
Putting spc15.tada into control/defaultdomain...
Putting spc15.tada into control/plusdomain...
Putting spc15.tada into control/locals...
Putting spc15.tada into control/rcpthosts...
Now qmail will refuse to accept SMTP messages except to spc15.tada.
Make sure to change rcpthosts if you add hosts to locals or virtualdomains!

いいのかな? エラーらしきものはないけど。教科書には他にもいろいろ入れているけど、rpmファイルの中身を見たら必要そうには見えなかったので(うちはセキュリティ気にしなくていいから)、あえて入れずにこのまま進む。続いては、inetdqmail-smtpd(SMTPサーバ)が起動されるようにするのだ。/etc/inetd.confを開いて、昨日設定したsmtpの所を以下のように変更:

smtp    stream  tcp     nowait  qmaild  /usr/sbin/tcpd  /var/qmail/bin/qmail-smtpd

rootじゃなくてqmaildの権限で起動するのがqmailのqmailたる部分なのだろうな。たぶん。ためしにtelnetでSMTPにアクセスしてみる。

$ telnet spc15 smtp
Trying 192.168.0.3...
Connected to spc15.tada.
Escape character is '^]'.
220 spc15.tada ESMTP
quit
221 spc15.tada
Connection closed by foreign host.

おっけー。さて、さっきの教科書にはなんか他にもいろいろ入れてるんだけど、こんなに必要なのかなぁ。ためしにfetchmailしてみようか。

$ fetchmail
33 messages for ++++++++ at mizar.freemail.ne.jp (98182 octets).
reading message 1 of 33 (2336 octets) .fetchmail: can't even send to sho!
fetchmail: SMTP transaction error while fetching from mizar.freemail.ne.jp
fetchmail: Query status=10

ああっ、ダメだ(笑)。きっと一緒に協調して動くべきdaemonが他にいるんだな。うーん、今日はここまで。


2000-01-11(火) [長年日記]

fetchmail

さて、今日はメールを受信しよう。この日のために、FreeMailに実験用のアカウントを用意しておいたわけよ。今日の教科書はここ。昨日はbindのバージョンが違って痛い目にあったけど、今日は(たぶん)大丈夫(笑)。用意したアカウントは++++++++@mizar.freemail.ne.jpなので、設定ファイルである.fetchmailrcは以下のようになる。*******はパスワード。マルチユーザで使うなら書くべきじゃないだろうけど、このマシンはおれ専用なので問題ないだろう。

defaults protocol pop3
	user ++++++++
poll mizar.freemail.ne.jp
	pass ********

このファイルを$HOMEに置いて、/usr/bin/fetchmailを実行するだけ。

$ fetchmail
File /home/sho/.fetchmailrc must have no more than -rwx--x--- (0710) permissions.

おぉぅ。怒られてしまった。セキュリティ対策ですな。

$ chmod 0710 .fetchmailrc
$ fetchmail
1 message for ++++++++ at mizar.freemail.ne.jp (1090 octets).
reading message 1 of 1 (1090 octets) . flushed

試しにNetscape Mailで読みだしてみる。よし、ちゃんと届いてるぞ、と。あとはいつも使ってる設定を.fetchmailrcに書き加えるだけで、Linuxで受信できるって寸法だ。まぁ、それはもう少しあとだけど(だってまだメール出せないからね)。

教科書のsendmailのところを読んでいたら、daemonとしてではなく、inetd経由でsendmailを動かす方法が書いてあった。ふむ。これはいいかも知んない。このサイトはslackwareをネタにしているので、Kondaraには合わないところもあるけど、なんとかなりそうなので、ついでに挑戦しておこう。まず、sendmailをdaemonとして起動させない方法は、linuxconfを使えばいい。/etc/inetd.confの編集はまったく同じ。sendmailを殺して、inetdにHUPを送るのも同じでいい。ただし、Kondaraを使っている場合は/var/runにあるファイルを使ってプロセスIDを得た方がカッコイイ(笑)。SMTPポートへtelnetしての動作確認、fetchmailによるメール受信も成功したので、大丈夫でしょう。あとはメールの送信か。あぁ、sendmail.cf。やりたくねぇなぁ、これだけは。

それはまぁ、明日にしようと思って、メーラをうだうだいじっていたら、重大なことに気がついた。フォルダが階層的に作れないのだ。例えばメーリングリストのメールを分類しようと思って、MLというフォルダを作る。その下に例えばrubyというフォルダを掘ろうとすると、「すでにMLというファイルがあるよ〜ん」という(意味の)メッセージが出る。そりゃそうだ。IMAPの「フォルダ」はそのフォルダに入っているメールをすべて集めた単一のファイルなので、その下にフォルダを掘ろうとしたらML/rubyというファイルを作らないといけない。でも、MLというファイルはすでにあるから、同じ名前のディレクトリなんて掘れるわけがないのだ。はて、これはいったいどうすればいいのじゃ? 試しにMLというファイル(フォルダ)は削除して、新規にML/rubyというフォルダを作ってみた。つまり最初から階層構造を意識した指定をしたわけ。そしたらできた。でもさぁ、これだとMLにはメールを整理できないんだよね。それに、あとから階層を深くしたいと思った時もダメ。なんだこの仕様。ダメじゃん。時おり見かけるMH形式ってヤツを試してみろってことかな。ふむん。ちょっと調べてみよう。


2000-01-10(月) [長年日記]

えっらい久しぶりにLinuxを立ち上げたような(笑)。こんなことでいいのか。まぁ、いいか。古いマシンは嫁に出したので、これでデスクトップにはこのLinuxマシンと、こないだ組んだゲーム専用機ことWindows98マシン。今後の目標は、現在ゲーム専用機でしかたなくやっているゲーム以外のことを可能な限りLinuxに移行することだ。まずはメールをちゃんとやろう。

samba

……と思ったけど、Windowsからアクセスできずにいるsambaの設定を見直す。Linux側からWindows側の資源はちゃんと見える。Linuxから、自マシンの資源も見える。でも、WindowsからLinuxの資源は見えない。マシン名もブラウズできないし、公開している資源も見えない。パスワードの暗号化の問題かと思って暗号化をNoにしてみたけどこれもダメ。うーん、何が悪いんだろう。Vineでは見えていたように記憶しているのだが。そういえばLinux Magazineに「sambaと闘う」って連載があったことを思い出して読み返してみるが、あまり参考になりそうな話が出ていない。ただ、最初の動作チェック時にsmbclientの実行をするところで、ちょっと変なことに気がついた。雑誌の例に出ている出力は、マシンのIPアドレスが本来設定されているプライベートアドレスが表示されているのに、このマシン(spc15)でやるとlocalhostのアドレスである127.0.0.1が出ている。ははぁん、と思って/etc/hostsを見ていると、spc15のエントリーが127.0.0.1と192.168.0.3のニヶ所にある。これか。ためしに127.0.0.1のエントリーを削除し見ると案の定、つながった!! そーかー、名前が解決できていなかったんだ。前に/etc/hostsをいじった時に、変なことをしちゃったんだな。SMBをTCP/IP経由で使うときにはこのあたりに注意しないといけないのであった。うーん大ポカだ。でも素人には絶対に気がつかない原因でもあるよなぁ。やれやれ。

bind

さて、起動時にsendmailがDNSを探しに行くのがたまらんので、次はbindの設定だ。Webで検索してみて、ここがわかりやすそうだったので教科書にする。うちはISDNルータでDHCPを運用しているけど、DNSにするにはそのままにするわけにはいかないだろう。ということで、まずはこのマシンを固定IPアドレスに変更しなければならない。とは言っても現在使っているIPアドレスをそのまま使うことにして、MACアドレスをDHCPサーバに予約することでアドレスが変わることを抑止しよう。このあたりはlinuxconfでてけとーに変更できた、と思う。

続いてbindの設定は、教科書を参考に、ドメイン名をtada、IPアドレスを192.168.0.xxxに読み変えて設定する。各種ファイルの作成が終ったら、/usr/sbin/namedを実行すればDNSが動き出す。動作のチェックはnslookupコマンドで:

$ nslookup
*** Can't find server name for address 192.168.0.3: Server faild
*** Default servers are not available

あれ? 変だなぁ。設定を見直して、どこも間違っていないことを確認する。ためしにrebootしてみたら、いつものsendmailのタイムアウト待ちはなくなった(これはめでたしめでたし)。でもnalookupは同じメッセージを吐く。しかも、外部のマシンが見えなくなっちゃったので、Webを参照することもできない。ふがーっ。なんでやねーん。

しかたがないのでWindowsを立ち上げて、Linuxにはtelnetでアクセスしながら色々いじる。あっ。なんだ? linuxconfで何かいじった拍子に、/etc/named.confがぐちゃぐちゃに(泣)。いまさらながらman named.confを見てみると、なんと、vetsion 8からnamed.confのフォーマットが変わっているだと。やられたぜ。教科書の説明はversion 4だもんなぁ。で、コンバータがあるそうなので、こんな感じに変換する:

$ cd /etc
$ mv named.conf named.4.conf
$ named-bootconf < named.4.conf > named.conf

これで改めてnslookupを実行。やった、ちゃんと名前が引けてるぅ。外部の(forwardする)DNSの指定を、プロバイダのものを指定していたせいで外部の名前が引けなくなっていたが、これはISDNルータのアドレスに変更して解決。やったぜ。

いやー、今日はやろうと思ってたことが全部できたねぇ。毎日こうだといいねー(笑)。


トップ 最新 追記
RSS feed