昨日からの続きです。
⇒(1/2)exim4エラー「Warning: purging the environment.」
exim4で「Warning: purging the environment.Suggested action: use keep_environment.」というエラーの原因は、
つまるところ、別のところに問題があった、という結果をご報告します。
もうちょっと調べると…
他のconfigファイルを調べていくうちに「conf.d」ディレクトリ内に「~.dpkg-dist」となっている設定ファイルを一つ発見しました。
これか。
「02_exim4-config_options」の設定ファイルに「02_exim4-config_options.dpkg-dist」が生成されていました。
----------------------------------------------
/etc/exim4/conf.d/main$ ls -la
合計 36
drwxr-xr-x 2 root root 4096 4月 12 2016 .
drwxr-xr-x 9 root root 4096 10月 1 2013 ..
-rw-r--r-- 1 root root 3702 9月 23 2012 01_exim4-config_listmacrosdefs
-rw-r--r-- 1 root root 7516 7月 5 2014 02_exim4-config_options
-rw-r--r-- 1 root root 7712 3月 15 2016 02_exim4-config_options.dpkg-dist
-rw-r--r-- 1 root root 3187 9月 23 2012 03_exim4-config_tlsoptions
-rw-r--r-- 1 root root 237 9月 23 2012 90_exim4-config_log_selector
----------------------------------------------
これっぽいですね。早速二つのファイルを調べると、以下の相違点がありました。
内容を比較してみると、多分不要になった表記として
----------------------------------------------
.ifndef MAIN_FORCE_SENDER
local_from_check = false
local_sender_retain = true
untrusted_set_sender = *
.endif
----------------------------------------------
↑これを消しつつ、これ↓を加える必要がある、ように見えます。
----------------------------------------------
.ifdef MAIN_KEEP_ENVIRONMENT
keep_environment = MAIN_KEEP_ENVIRONMENT
.else
# set option to empty value to avoid warning.
keep_environment =
.endif
.ifdef MAIN_ADD_ENVIRONMENT
add_environment = MAIN_ADD_ENVIRONMENT
.endif
----------------------------------------------
修正から再起動
最初は手動で加筆・削除したのですが、configファイルの
----------------------------------------------
#timeout_frozen_after = MAIN_TIMEOUT_FROZEN_AFTER
timeout_frozen_after = 1m
----------------------------------------------
この部分が引っ掛かってしまいました。コレ、動作テストする必要があった際に自分で入れた設定なのですが、このままだと
----------------------------------------------
$ sudo /etc/init.d/exim4 restart
[....] Stopping MTA for restart:2016-11-21 10:16:43 Exim configuration error in line 161 of /var/lib/exim4/config.autogenerated.tmp:
"timeout_frozen_after" option set for the second time
Invalid new configfile /var/lib/exim4/config.autogenerated.tmp, not installing
/var/lib/exim4/config.autogenerated.tmp to /var/lib/exim4/config.autogenerated
----------------------------------------------
エラーになってしまいます。
試しにコメントアウトの記述を入れ替えると
----------------------------------------------
timeout_frozen_after = MAIN_TIMEOUT_FROZEN_AFTER
#timeout_frozen_after = 1m
----------------------------------------------
リスタート時にこういう具合に
----------------------------------------------
$ sudo /etc/init.d/exim4 restart
[ ok ] Stopping MTA for restart: exim4_listener.
[ ok ] Restarting MTA: exim4.
ALERT: exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken
----------------------------------------------
アラート(警告?)が出るようになってしまいました。
ただし、この時点で
----------------------------------------------
$ /usr/sbin/exim4 -bP | grep environment
add_environment =
keep_environment =
----------------------------------------------
本記事の対象となっていたエラーは解消しています。
exim起動時エラーを解消
さて、新たなアラートを迎えまして、さっそくログを確認してみました。
----------------------------------------------
$ sudo cat /var/log/exim4/paniclog
2016-00-00 00:00:30 Exim configuration error in line 161 of /var/lib/exim4/config.autogenerated.tmp:
"timeout_frozen_after" option set for the second time
----------------------------------------------
「timeout_frozen_after」に起因していることが分かります。
「timeout_frozen_after =」自体をカスタマイズする必要はいまの現状ではなく、もはや不要な設定となっているので、「.dpkg-dist」側を適用させてしまおう、ということにしました。結局「.dpkg-dist」側じゃないとエラーになるから手動で修正するのも「.dpkg-dist」ファイルをそのまま適用するのも同じこと、といえます。
----------------------------------------------
$ sudo mv 02_exim4-config_options 02_exim4-config_options.old
$ sudo mv 02_exim4-config_options.dpkg-dist 02_exim4-config_options
----------------------------------------------
一応ファイルはバックアップして「.dpkg-dist」ファイルを本番ファイル名にリネームします。
念のため確認。
----------------------------------------------
$ /usr/sbin/exim4 -bP | grep environment
add_environment =
keep_environment =
$ sudo /etc/init.d/exim4 restart
[ ok ] Stopping MTA for restart: exim4_listener.
[ ok ] Restarting MTA: exim4.
ALERT: exim paniclog /var/log/exim4/paniclog has non-zero size, mail system possibly broken
----------------------------------------------
?
「/usr/sbin/exim4 -bP | grep environment」の実行結果は良好なのですが、リスタートの結果が変わらない、ということになりました。
これは、「/var/log/exim4/paniclog」に記載のある対処をしたのち、手動で「/var/log/exim4/paniclog」を削除しないと、ずーっとexim4再起動でALERTメッセージが表示されてしまう、というものです。つまり対処したら/var/log/exim4/paniclogは手動で削除、これが必要ということです。
----------------------------------------------
$ sudo rm /var/log/exim4/paniclog
$ sudo /etc/init.d/exim4 restart
[ ok ] Stopping MTA for restart: exim4_listener.
[ ok ] Restarting MTA: exim4.
$
----------------------------------------------
こうしてALERTも出力されなくなりました。無事対処が完了のようです。