2019年05月27日の日記です


qmail 入れ直し  2019-05-27 18:15:09  その他

久しぶりにやっちまいました案件。


現在、家庭内サーバーで、外部とのメールのやり取りには qmail を使用している。


「過去においては」 qmail は悪くないメールサーバーであった。


初めて家にサーバーを建てたのが 2002年5月

この時点の日記に、すでに qmail をインストールしたと書いてある。


前回サーバーを大幅に変えたのが2015年12月

この時にも、qmail を入れている。


ただ、どうもこの時に入れ方を失敗していたようなのだな。

そのまま、4年近く気づかないまま運用していた。




qmail は既にかなり古いメールサーバーだ。

次のサーバーを現在作っている…といったまま半年たっているが、次は qmail でないサーバーにしようと思っている。


しかしまぁ、qmail は古くて、長期運用実績も多く、安定している。

バージョンアップもほぼされないと思っていいので、細かくメンテナンスするような手間がかからない。

家庭用サーバーとしては理想的だ。


一方で、qmail はセキュリティを重視した作りになっており、プログラムは公開されているが「勝手に改変してはならない」ことになっていた。


「いた」というのは過去形で、今は配布条件が変わって改変してもいいから。

でも、もう十分に枯れている(技術用語で、安定していて手を加えない方がいい、という意味)ので、あまり改変する人はいない。


セキュリティは、十分に研ぎ澄まされたプログラムだから守られている。

ここに機能追加などの改変を加えると、セキュリティが保証されなくなる。

当初の改変してはならない、というのは、保証の意味合いを持っていた。



とはいえ、技術というのは日進月歩だ。

qmail が作られた当初と、現在ではネット環境も違う。

昔のままの qmail で今でも使えるのかといえば、そうではない。


そこで、バージョンアップは、有志の手で差分プログラム…パッチとして作られ、配布されている。

パッチであれば、その小さな部分のみを見て、「セキュリティ的に問題がないだろう」とか判断がしやすいから。



でね、このパッチがすごい量なの。

全部パッチ当てればいいのか、というと、セキュリティ重視の qmail に、誰が作ったのかわからないものをいろいろ入れ込むのも意味がなくなってしまう。

各自が必要なものを選択し、パッチを当てて運用する、ということになる。




で、前回のパッチの選択にミスがあったようなのだ。


今回、入れなおそうと思ったが、当時のコンパイルを行った作業ディレクトリを消してしまっていたようで、新たに作業した。

…つまり、今回が「前回+必要パッチ」にできたという保証もない。


とはいえ、慎重に作業したから問題は出ないと思うし、今回起きていた問題も解消した。




今回起きていた、「恥ずかしい」ミスは、DNS 512byte の壁を打破するパッチが当たっていなかったこと。


DNS は、元々 512byte 以内に情報を収める、という前提で設計された。

qmail は、この設計に従って作られているため、DNS からの情報が 512byte 以内であると決め打ちして動く。


今の DNS は、512byte に収まらない場合に、もっと大きなデータを再送することになっている。

qmail はパッチを当てないとこれに対応できず、相手の DNS 情報によっては正しい送信先を見つけることができず、送信に失敗してしまう。



4月まではメールを送れていた仕事先があり、ここがゴールデンウィーク前に新たなサーバーを設置し、DNS を公開したことを知っていた。

なぜなら、そのサーバー設置を僕が行ったからだ。DNS 設定は僕ではなかったのだけど。


で、5月に入ってから送ったメールが届かない、と分かった。

普段はメール以外のメディアで連絡を取っていて、時々メールを使うだけなので気づいていなかった。



原因を調査したところ、手元の qmail-send のログに、


CNAME_lookup_failed_temporarily._(#4.4.3).


と出ていた。この原因を調べて、DNS 512バイトの壁問題を知った。



問題が特定できれば、あとは話が速い。

先に書いたように、過去にコンパイルした作業ディレクトリはなくなっていたので、新たに必要なものを集めて展開する。

必要そうなパッチも持ってきて、あてまくる。


で、コンパイル、インストール。

…おっと、qmail 動作中なので、プログラムの書き換えができなかった。


qmail を一旦停止し、再度インストール。

そして、qmail 再開。


家の中から、自分の gmail アドレスにメールを送る。届いた。

gamil から、家のメールアドレスにメールを送る。届いた。


あとは、今回送れなくなっていた相手先だけど…

キューに溜まっているだろうから、しばらくしたら再送されるよな。


そう思ってサーバーのログを見たら、ちょうど送信された後だった。

うん。問題解消したようだ。




一応、「どうもメールが届かないようだ」と気づいたメールは、送信してから1週間たっていなかった。


…と書くのは、qmail は再送ができない場合に、7日たつとエラーメールを送信元に返すからだ。

過去にも、こうしたエラーメールが戻ってきたことはない、と思う。


つまりは、今回が初めての問題だと…思う。

もし、僕から返事が来ない、と思っていた人がいたら申し訳なく思う。



一応、先ほど書いたように DNS のデータは普通 512byte 以下に収まるのだ。

今回、送信先はサーバーの増加で DNS データが 512byte に収まらなくなり、問題が生じた。


ただ、今後は DNSSEC を使うサーバーも増えるだろうし、そうなると 512byte に収まらない場合も増えるだろう。

DNSSEC を使うことの良し悪しはともかく、対応はしておかないといけない。



…そもそも、もう qmail に固執する必要はないんだよね。


最初に書いたけど、次は qmail やめよう、と思っているくらいなので。

15年前は悪くない選択だったのだけど、今は良くない選択に思う。


今回は、やめようと思っているところに問題が起き、すぐに別のサーバーに移行はできないので、サーバープログラムを更新する形で乗り切っただけで。



同じテーマの日記(最近の一覧)

その他

別年同日の日記

02年 URL変更のお願いで…

02年 探し物

04年 ピンクのヒヨコ

13年 微生物とプランクトンの違い

14年 ドラゴンクエストの発売日(1986)

20年 在宅学習・その後


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -