SMTPサーバソフトの代表格「Postfix」は多機能なフリーのSMTPサーバソフトだ.ただ様々な運用形態に対応しているため,設定がややこしい.特に「Postfix.admin」を使って,webによってサーバ管理を行う場合は,データベースも絡んでくるために,なおさらだ.
今回,watermindでは,Postfix+Postfix.admin+MySQLによるSMTPサーバ構築を試みた.メールは,バーチャルドメイン,SMTP認証,TLSを使用した.ほぼ構築が完了した後,テストを開始したのだが,その時に奇妙なメッセージがログに出ていることに気づいた.それが
今回,watermindでは,Postfix+Postfix.admin+MySQLによるSMTPサーバ構築を試みた.メールは,バーチャルドメイン,SMTP認証,TLSを使用した.ほぼ構築が完了した後,テストを開始したのだが,その時に奇妙なメッセージがログに出ていることに気づいた.それが
sql_select option missing
auxpropfunc error no mechanism available
auxpropfunc error no mechanism available
の2つだ.
SMTP認証をMySQLで直接行うために,sasl2用のsmtpd.confを作成してあったのだが,その記述に間違いがあったようだった.
ところが実際に,smtpd.confを見ても,何もおかしいことはなかった.しかもメールの送信は,クライアントから問題なくできていた.なんだろう?
いろいろ試行錯誤したあげく,「もしかしたらsmtpd.confが読み込まれておらず,別の認証方法が採用されているのでは?」と思いついた.
とりあえず,smtpd.conf内に記述されているMySQLデータベース接続用のパスワードを,わざと間違った物に変えてみた.その後,クライアントから送信すると,なんと送信できてしまった!これはまずい!
そこでとりあえず,インターネットをさぐってみると,意外にもこのメッセージで悩んでいる人が多かったのだが,その答えは単純だった.その答えとは,
というものだった.確かにサーバにはopenldapもインストールされていたため,エラーメッセージの原因はそんなところだろうと納得した.
この答えを見つけて,やや安堵したが,まだsmtpd.confの問題が解決されていないではないか!そこでさらにネットの闇の中を探索していくこととなった.
そしてようやく答えにたどり着くことができた.その答えとは
そういえばサーバ構築の参考にしたページでは,まるで最初からそのディレクトリ(/usr/lib/sasl2)が存在しているかのような書き方だったのだが,こちらのサーバ(CentOS4)には,そのディレクトリが存在せず,自力でディレクトリを作成したのだ.その時に,いやな感じが確かにあったのを覚えている.また/usr/libディレクトリ内が妙に寂れているのも不気味に思えたのだが…
さっそく,/usr/lib64に移動してみると,そこは大都会!ファイルのごった返す華やかなディレクトリであり,その中にsasl2ディレクトリも存在していた.さらにsasl2内にはデフォルトのsmtpd.confが存在し,saslauthdをパスワード確認の方法として採用していた.メール送信ができてしまった謎も解けた!
というわけで,smtpd.confを書き換え,MySQLデータベースによるパスワード確認の方法に切り替えてみたところ,例の2つのエラーメッセージは,きれいにログから消え去っていた.クライアントからのメール送信も問題なし.こうしてやっと一件落着したものの,このエラーメッセージが出続けている他のサーバは大丈夫なのか?と思い,少し身震いをした.<完>
SMTP認証をMySQLで直接行うために,sasl2用のsmtpd.confを作成してあったのだが,その記述に間違いがあったようだった.
ところが実際に,smtpd.confを見ても,何もおかしいことはなかった.しかもメールの送信は,クライアントから問題なくできていた.なんだろう?
いろいろ試行錯誤したあげく,「もしかしたらsmtpd.confが読み込まれておらず,別の認証方法が採用されているのでは?」と思いついた.
とりあえず,smtpd.conf内に記述されているMySQLデータベース接続用のパスワードを,わざと間違った物に変えてみた.その後,クライアントから送信すると,なんと送信できてしまった!これはまずい!
そこでとりあえず,インターネットをさぐってみると,意外にもこのメッセージで悩んでいる人が多かったのだが,その答えは単純だった.その答えとは,
このメッセージは,sasl2とopenldapの両方を
インストールする場合に表示されるが,
別段害はないので無視してもよかろう.
というものだった.確かにサーバにはopenldapもインストールされていたため,エラーメッセージの原因はそんなところだろうと納得した.
この答えを見つけて,やや安堵したが,まだsmtpd.confの問題が解決されていないではないか!そこでさらにネットの闇の中を探索していくこととなった.
そしてようやく答えにたどり着くことができた.その答えとは
そうだったのだ!今回のサーバはレンタルサーバだったのだが,詳しいスペックを確認していなかったため,てっきり32bit版だと思っていたのだ.ところが実際は64bitであったため,自分が/usr/lib/sasl2に作成したsmtpd.confは全く無視されていたというわけだ.32bit版(/usr/lib/sasl2)と
64bit版(/usr/lib64/sasl2)とでは,
smtpd.confの配置ディレクトリが異なる
そういえばサーバ構築の参考にしたページでは,まるで最初からそのディレクトリ(/usr/lib/sasl2)が存在しているかのような書き方だったのだが,こちらのサーバ(CentOS4)には,そのディレクトリが存在せず,自力でディレクトリを作成したのだ.その時に,いやな感じが確かにあったのを覚えている.また/usr/libディレクトリ内が妙に寂れているのも不気味に思えたのだが…
さっそく,/usr/lib64に移動してみると,そこは大都会!ファイルのごった返す華やかなディレクトリであり,その中にsasl2ディレクトリも存在していた.さらにsasl2内にはデフォルトのsmtpd.confが存在し,saslauthdをパスワード確認の方法として採用していた.メール送信ができてしまった謎も解けた!
というわけで,smtpd.confを書き換え,MySQLデータベースによるパスワード確認の方法に切り替えてみたところ,例の2つのエラーメッセージは,きれいにログから消え去っていた.クライアントからのメール送信も問題なし.こうしてやっと一件落着したものの,このエラーメッセージが出続けている他のサーバは大丈夫なのか?と思い,少し身震いをした.<完>