- PR -

dovecotが起動していない

1
投稿者投稿内容
kagura1904
会議室デビュー日: 2007/11/23
投稿数: 7
投稿日時: 2007-11-23 20:47
お世話になります。
現在、PostfixとDovecotの環境でメールサーバを立てています。
本日、OutlookExpress6からpop3にて接続しようと
したところ、接続できなかった為、サーバを確認しました。
すると、特にログにメッセージが見つからなかった為
ステータスを確認したところ、
「dovecot は停止していますがサブシテムがロックされています」
というメッセージが表示されました。
いろいろとネット内を確認したのですが主に二重起動の制御
ではないかとの意見が多くありました。
ただ、気になったのは先日、dovecotのログの出力先をsyslogを
使用せずに別のログファイルを作成し出力されるように
設定の変更を行いました。そして、ログファイルが蓄積しないように
logrotateの設定を行いました。(以下に記載しておきます。)
logrotateの設定ファイルに問題があるのかそれとも
dovecotの設定部分に問題があるのか、それとも別に何か原因が
考えられるのか、いろいろと悩んだ為、投稿しました。
皆さん、サービスを再起動して切り抜けているようですが
原因がつかめないとまたおきてしまう様でそれは回避したいと
考えております。このような問題にめぐり合った方もしくは
こういった方法で回避できるのではというご意見おお持ちの方
に意見を頂ければと思います。どうぞ宜しくお願い致します。

**************************************************
ソフトウェアのバージョン
**************************************************
Red Hat Enterprise Linux 4
Postfix-2.1.5-4.2.RHEL4
dovecot-0.99.11-2.EL4.1

**************************************************
/etc/logrotate.d/dovecot(Dovecotログ設定ファイル)
**************************************************
/var/log/dovecot*.log {
missingok
sharedscripts
postrotate
/bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null` 2> /dev/null || true
endscript
}

**************************************************
/etc/dovecot.conf(Dovecot設定ファイル)
※コメントになっていない部分のみ抜き出しました。
**************************************************
protocols = imap pop3
imap_listen = [::]
pop3_listen = [::]
ssl_disable = yes
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot.log
login_dir = /var/run/dovecot-login
mail_extra_groups = mail
mbox_locks = fcntl
auth = default
auth_mechanisms = plain
auth_userdb = passwd
auth_passdb = pam
auth_user = root
kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2007-11-24 01:21
こんばんは.
引用:

kagura1904さんの書き込み (2007-11-23 20:47) より:

皆さん、サービスを再起動して切り抜けているようですが
原因がつかめないとまたおきてしまう様でそれは回避したいと
考えております。このような問題にめぐり合った方もしくは
こういった方法で回避できるのではというご意見おお持ちの方
に意見を頂ければと思います。どうぞ宜しくお願い致します。


結局何がしたいのでしょうか?
調べ方がわからないのでしょうか?
まずは,ちゃんと log を出力するように設定して,
そこから何が起きているかを推察していくべきではありませんか?
また,別の MRA が起動するなどで 110/tcp を listen しているかも
しれないのであれば,process を確認するなりすれば良いでしょう.
手動で dovecot は起動させられませんか?
たお
ベテラン
会議室デビュー日: 2006/10/27
投稿数: 90
投稿日時: 2007-11-24 02:31
話が違うけれども、参考ということで。。

dovecotの0.9はLDAP認証がいけてないので
最新のRedhatが提供されているバージョンか、
もしくは1.0を使った方が良いです。

得にPAM認証でLDAPがダメでした。


はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2007-11-26 20:38
引用:
kagura1904さんの書き込み (2007-11-23 20:47) より:
ステータスを確認したところ、
「dovecot は停止していますがサブシテムがロックされています」
というメッセージが表示されました。



確かこれは対象プロセスが動いてないけど /var/lock/subsys/dovecot が在る状態。

引用:
ただ、気になったのは先日、dovecotのログの出力先をsyslogを
使用せずに別のログファイルを作成し出力されるように
設定の変更を行いました。そして、ログファイルが蓄積しないように
logrotateの設定を行いました。(以下に記載しておきます。)
logrotateの設定ファイルに問題があるのかそれとも
dovecotの設定部分に問題があるのか、それとも別に何か原因が
考えられるのか、いろいろと悩んだ為、投稿しました。



普通「何か」をしたらおかしくなったら、その「何か」を元に戻す。
これで正常に戻ったら、その「何か」が原因と判るのですが、
元に戻せないのでしょうか。

引用:
/etc/logrotate.d/dovecot(Dovecotログ設定ファイル)
**************************************************
/var/log/dovecot*.log {
missingok
sharedscripts
postrotate
/bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null` 2> /dev/null || true
endscript
}



昔の Dovecot は SIGUSR1 をハンドリングしていなかったと思いますが、
そのバージョンは大丈夫ですか ?
kagura1904
会議室デビュー日: 2007/11/23
投稿数: 7
投稿日時: 2007-11-26 22:15
お世話になっております。

kaz様のご指摘、ごもっともです。もう少しどうしたいのか
という点をきちんと伝えるべきでした。
伝えようとした情報が少なかったことも反省しております。

たお様、ご意見ありがとうございました。参考にさせて
いただきます。

はしもと様、ご意見ありがとうございます。
休日中にいろいろと模索していたのですが、ログ出力をsyslog経由で
maillogに出力するように元に設定変更するとエラーの状態は起きませんでした。
そこで、/etc/logrotate.d/dovecot内に記載している
下記の部分を実行し、dovecotのステータスを確認したところ

************************************************************
/bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null`
2> /dev/null || true
************************************************************

下記のメッセージが表示されました。
「dovecot は停止していますがサブシテムがロックされています」

引用:
--------------------------------------------------------------------------------
昔の Dovecot は SIGUSR1 をハンドリングしていなかったと思いますが、
そのバージョンは大丈夫ですか ?
--------------------------------------------------------------------------------
バージョンとログ出力のあたりから検索を行ってみたのですが
見つけられませんでした。
-USR1が使えないとなると-HUPを渡して再起動させてみようと思います。
ありがとうございます。
kagura1904
会議室デビュー日: 2007/11/23
投稿数: 7
投稿日時: 2007-11-27 13:39
お世話になっております。

まず、前回書き込みの報告です。
ログローテートのファイルで渡していたシグナルを-USR1から-HUPに変更しました。

************************************************************
/bin/kill -USR1 `cat /var/run/dovecot/master.pid 2>/dev/null`〜
      ↓
/bin/kill -HUP `cat /var/run/dovecot/master.pid 2>/dev/null`〜
************************************************************

変更後にログを確認したところ、下記のようなメッセージが表示されていました。
************************************************************
dovecot: Nov 27 12:06:24 Warning: SIGHUP received - reloading configuration
************************************************************

これと合わせてローテートの回数確認のテストも行っていたのですが
上記のメッセージが新しいログファイルではなく最初に上記メッセージが
出力されたログファイルに出力され続けました。
例えば、最初に確認したときdovecot.logとなっているファイルが
回数確認のテスト後にdovecot.log.3となっているにもかかわらず
dovecot.log.3のファイルに上記メッセージが出力されました。
通常のメッセージは新しいログファイルに出力されていました。

そこでいろいろ調べていたのですがdovecotのマニュアルの
日本語化プロジェクトのサイトに下記のようにありました。

引用:
--------------------------------------------------------------------------------
設定の再読み込み
----------------

'dovecot' プロセスに HUP シグナルを送ります。状態確認がログファイルに書か
れます:

---%<-------------------------------------------------------------------------
dovecot: Jan 08 00:36:45 Warning: SIGHUP received - reloading configuration
---%<-------------------------------------------------------------------------

Dovecot を完全に停止するか、再起動しない限り、ログファイルの場所は変わらな
いことに注意してください。

ログファイルのローテート
------------------------

もし、syslog を使う代わりに、'dovecot.conf' にログファイルのパスを設定した
場合、ログファイルを閉じて、開き直すために、Dovecot に USER1 シグナルを送
信することができます。

--------------------------------------------------------------------------------

Dovecot日本語翻訳プロジェクトは新しいバージョンに対応する形で
更新し続けているようです。現在は1.0.7に対応しているようです。
USER1シグナルのコメントがバージョン1以降のdovecotに対してあるものだとすると
私のバージョンでは対応していないのかもしれません。
また、新しいログのみ新しいファイルに出力されたのが偶然だったのかどうか
確証はありません。

そこで、不安ではあるのですがログローテートのファイルのkillの部分を
下記のように変更しました。

************************************************************
/bin/kill -HUP `cat /var/run/dovecot/master.pid 2>/dev/null`〜
      ↓
/etc/rc.d/init.d/dovecot restart
************************************************************

上記のようにサービスの再起動に変更して動かしたところ新しいログに
************************************************************
dovecot: Nov ** **:**:** Info: Dovecot starting up
************************************************************
と表示されログが新しいファイルに出力されるようになりました。
とりあえず、現時点での報告でした。
F/A
ぬし
会議室デビュー日: 2006/03/18
投稿数: 312
お住まい・勤務地: Tokyo
投稿日時: 2007-11-28 00:17
つまり、ログローテーションの際に仕込んでおいた kill -USR1が、
プロセス再起動じゃなくて本当にKILLしたと…

検証するなら実際に-USR1を試してみれば分かると思います。
(夜中とか早朝とか影響の少ないときにでも…)

当方のdovecotはRHEL5(CentOS5)ベースなので1.03ですが、
-USR1は何も表示されませんね。落ちもしませんが。
-HUPは SIGHUP received - reloading configuration と表示されますね。

※ログファイルが残っていれば、大体いつ頃まで起動していたかわかるから、
 ローテーションが原因かも分かるとは思うんですけどね
はしもと
大ベテラン
会議室デビュー日: 2003/02/05
投稿数: 182
投稿日時: 2007-11-30 00:39
変更履歴はソース・アーカイブの ChangeLog ファイルに書かれています。
それによると 0.99.11 ではまだ SIGUSR1 でログを開き直さない様です。
SIGHUP でも開き直さなかった様ですから再起動しか無いみたいですね。
1

スキルアップ/キャリアアップ(JOB@IT)