WaterMind PC Blog

PCとネットワークに関するニュースコラム.

postfix エラー「sql_select option missing」

2009-04-14 00:02:50 | ソフト
SMTPサーバソフトの代表格「Postfix」は多機能なフリーのSMTPサーバソフトだ.ただ様々な運用形態に対応しているため,設定がややこしい.特に「Postfix.admin」を使って,webによってサーバ管理を行う場合は,データベースも絡んでくるために,なおさらだ.

 今回,watermindでは,Postfix+Postfix.admin+MySQLによるSMTPサーバ構築を試みた.メールは,バーチャルドメイン,SMTP認証,TLSを使用した.ほぼ構築が完了した後,テストを開始したのだが,その時に奇妙なメッセージがログに出ていることに気づいた.それが

sql_select option missing
auxpropfunc error no mechanism available

の2つだ.

 SMTP認証をMySQLで直接行うために,sasl2用のsmtpd.confを作成してあったのだが,その記述に間違いがあったようだった.

 ところが実際に,smtpd.confを見ても,何もおかしいことはなかった.しかもメールの送信は,クライアントから問題なくできていた.なんだろう?

 いろいろ試行錯誤したあげく,「もしかしたらsmtpd.confが読み込まれておらず,別の認証方法が採用されているのでは?」と思いついた.

 とりあえず,smtpd.conf内に記述されているMySQLデータベース接続用のパスワードを,わざと間違った物に変えてみた.その後,クライアントから送信すると,なんと送信できてしまった!これはまずい!

 そこでとりあえず,インターネットをさぐってみると,意外にもこのメッセージで悩んでいる人が多かったのだが,その答えは単純だった.その答えとは,

このメッセージは,sasl2とopenldapの両方を
インストールする場合に表示されるが,
別段害はないので無視してもよかろう.

というものだった.確かにサーバにはopenldapもインストールされていたため,エラーメッセージの原因はそんなところだろうと納得した.

 この答えを見つけて,やや安堵したが,まだsmtpd.confの問題が解決されていないではないか!そこでさらにネットの闇の中を探索していくこととなった.

 そしてようやく答えにたどり着くことができた.その答えとは

32bit版(/usr/lib/sasl2)と
64bit版(/usr/lib64/sasl2)とでは,
smtpd.confの配置ディレクトリが異なる
そうだったのだ!今回のサーバはレンタルサーバだったのだが,詳しいスペックを確認していなかったため,てっきり32bit版だと思っていたのだ.ところが実際は64bitであったため,自分が/usr/lib/sasl2に作成したsmtpd.confは全く無視されていたというわけだ.

 そういえばサーバ構築の参考にしたページでは,まるで最初からそのディレクトリ(/usr/lib/sasl2)が存在しているかのような書き方だったのだが,こちらのサーバ(CentOS4)には,そのディレクトリが存在せず,自力でディレクトリを作成したのだ.その時に,いやな感じが確かにあったのを覚えている.また/usr/libディレクトリ内が妙に寂れているのも不気味に思えたのだが…

 さっそく,/usr/lib64に移動してみると,そこは大都会!ファイルのごった返す華やかなディレクトリであり,その中にsasl2ディレクトリも存在していた.さらにsasl2内にはデフォルトのsmtpd.confが存在し,saslauthdをパスワード確認の方法として採用していた.メール送信ができてしまった謎も解けた!

 というわけで,smtpd.confを書き換え,MySQLデータベースによるパスワード確認の方法に切り替えてみたところ,例の2つのエラーメッセージは,きれいにログから消え去っていた.クライアントからのメール送信も問題なし.こうしてやっと一件落着したものの,このエラーメッセージが出続けている他のサーバは大丈夫なのか?と思い,少し身震いをした.<完>


最新の画像もっと見る