彷徨えるフジワラ

年がら年中さまよってます

dovecot との IMAP 連携動作確認

ビルド&インストールが完了したので、dovecot の動作確認を。

"Quick Configuration" ページによると、mail_location(@conf.d/10-mail.conf) 程度で稼動可能な口ぶり。

Maildir 形式でのアクセスに限定されるので、設定は以下の按配で:

mail_location = maildir:~/Maildir

あ、それと socket 等の動的ファイルの生成は /var/run 配下にしたいので、base_dir(@dovecot.conf) の設定を以下のように変更。

base_dir = /var/run/dovecot/

"Quick Configuration" ページには、認証系で pam の設定云々も書かれているけど、OpenSolaris の /etc/pam.conf によると、特に明示されない場合、"other" での設定が有効らしいとのことで、初期状態の "other" 設定は要件を満たしているっぽいので、とりあえず放置で問題無さそう。

それでは早速サーバ起動!と思ったら、案の定設定がよろしくないとエラーが連発。
「dovenull ユーザが未定義」という件に関しては、nobody で代替しようと思ったのだけど、dovecot ユーザの追加も必要そうなので、結局両方とも新規登録の方向で。っていうか、追加アカウントが必要な旨が、どこにも書かれてないってのはどーゆーこと? > Quick Configuration

SSH の port forwarding を使用するから、SSL/TLS は使うつもりが無いので、ssl(@conf.d//10-ssl.conf) は no 設定したのだけど、どうやら証明書読み込み設定そのものを無効にしないと駄目っぽいので、以下のように設定をコメントアウト(@conf.d//10-ssl.conf)。

#ssl_cert = 

以上の変更で dovecot は起動したので、早速接続実験を .... connection refused 発生 .... orz

色々試して原因を絞り込んでいくと、どうやらローカルホストから telnet 経由でのアクセスには応答が返っているので、リモートからの ssh port forwarding 経由のアクセスが駄目らしい、というところまで判明。

ひょっとして、ipfilter がブロックしてる?ということで、ipmon で監視しつつ繋いで見るが、特に接続がブロックされている気配は見られない。

行き詰って考えること暫し .... リモート側(= 接続元)の ssh が、connection refused の際に「administrative prohibited」という付加メッセージを出しているけど、errno からのメッセージ生成の場合、管理云々なんていう情報が得られる筈は無いよな?という点に気付く。

例えば imap の 143 のような特権ポートでの待ち受けを行うには、通常 root 権限が必要とされるのだけど、ここで言う「管理上の禁止」ってのは、そういった特権ポートアクセスのようなものが検出されたことを意味しているのか?でも今回の port forwarding の場合、特権ポートへの接続こそしているものの、特権ポートでの待ち受けはしてないしなぁ@サーバ側。

などと考えつつ、念のため sshd の man ページをつらつらと眺めていると、"no-port-forwarding" なる設定項目の説明が!そう言えば、公開鍵単位でのアクセス制限で使ったことがあるのを思い出した。

もしやと思って /etc/ssh/sshd_config を見てみると....

# Port forwarding
AllowTcpForwarding no

思いっきり禁止されてる .... orz

AllowTcpForwarding 設定を有効にして、svcadm で ssh を refresh したら、無事接続成功。

あ、IMAP クライアント側の設定が、認証に LOGIN 形式を選択していたので、デフォルトの PLAIN 形式からの変更も実施(@conf.d//10-auth.conf):

auth_mechanisms = login

ついでと言ってはなんだけど、余計な機能のそぎ落としと、アクセス受付をローカルホスト発のものに限定する意味で、以下の設定も追加(@dovecot.conf)。

protocols = imap
listen = 127.0.0.1