はじめに
タイトル通り、Postfixで発生したエラーとその解決策について記事です。
実際に発生したのは半年以上前ですし、限定的な問題の可能性もありますが備忘録も兼ねて投稿しておきます。
起きたこと
とある朝、監視システムからPostfixで構成しているメールサーバーに関するアラートが届いてきました。
内容を見てみると特定の時間からのメールのキューが全て溜まっていて未送信となっている状況でした。なんじゃこりゃ。
うろ覚えですが大体200個くらいは溜まっていたと思います。
とりあえず何とかしなければいけないので、Postfixのログを見てみると何とも見慣れないログがずらりと並んでいました。
Feb 1 06:50:31 hogemail postfix/postfix-script[577760]: warning: not owned by postfix: /var/spool/postfix/saved/E8DBA160387
Feb 1 06:50:31 hogemail postfix/postfix-script[577761]: warning: not owned by postfix: /var/spool/postfix/saved/04FC416038A
Feb 1 06:50:31 hogemail postfix/postfix-script[577762]: warning: not owned by postfix: /var/spool/postfix/saved/30C76160396
Feb 1 06:50:31 hogemail postfix/postfix-script[577763]: warning: not owned by postfix: /var/spool/postfix/saved/6CC621603A0
Feb 1 06:50:31 hogemail postfix/postfix-script[577764]: warning: not owned by postfix: /var/spool/postfix/saved/7B55D1603A5
Feb 1 06:50:31 hogemail postfix/postfix-script[577765]: warning: not owned by postfix: /var/spool/postfix/saved/B67121603B2
---- 中略 ----
Feb 1 06:56:08 hogemail postfix/postqueue[610771]: warning: Mail system is down -- accessing queue directly
???
全く見たことない…not owned by postfix
とか書いてあるからPostfixのディレクトリとかの権限設定の問題か…?
上記のせいでメール送信が行われず、キューが溜まっている状態なのは分かりました。
とりあえず分からないなりに考えて、/var/spool/postfix
ディレクトリの権限を変えてみたり、その他色々とコマンドを叩きましたが直らず。
そうこうしている内にキューはどんどん溜まっていくので、焦っていたところ下記のコマンドを発見しました。
sudo postfix set-permissions
もしやこれか…?と思って実行してみた所、見事に問題が解消しました。
後は溜まっていたキューが順次処理されていき、メールも無事送信されていきました。
良かった…
なぜこうなったのか?
結論から言うと、下記のPostfixのバージョンアップが原因でした。
3.4.13-0ubuntu1.3 → 3.4.13-0ubuntu1.4
確かにセキュリティアップデートは自動で行うようにしていたけど、マイナーバージョンアップだしこんな大問題になるとは…
そもそもこのアップデートでなぜパーミッション周りの問題が起きたのか?までは分からなかったのですが、とにかく気を付けないといけないですね。
postfix set-permissions とは
下記の公式マニュアルの中に記載があります。
要約すると、「Postfixに関連するファイルとディレクトリの所有権とパーミッションを設定する」コマンドとなっています。
今回の問題でも上記アップデートによってPostfixの権限設定がなぜか外れてしまったようで、再度設定を行う必要がある状態だったようです。
当然ながら頻繁に使用するコマンドではないのですが、いざという時のために覚えておいて損はないですね。
最後に
今回の問題はかなり限定的な状況ではあったのですが、今後起きた時に同じコマンドを思い出せる自信が無かったので記事にしておきました。
何ならどうやってこのコマンドまでたどり着いたのか、必死にやっていたせいか全く記憶にない…
もし似たような問題に当たった方がいれば参考にしてもらえれば幸いです。