一時間以上家を離れるとメールサーバがダウンする問題

自宅で運用されるメールサーバ

「WebとDNSとメールは自分で運用しなさい」「仕事で運用しているものを自宅で運用してはいけない」という教義に基づいて、我が家ではmacOSをサーバとしてWeb/DNS/メールを運用している。

このサーバにはMac Miniを使用しHeadless (ディスプレイを繋がない状態)で運用しているが、筐体が古くmacOSのサポート対象外となり、macportsの依存関係も壊れ始めていたため、Gmailのスパム対応強化の対応のためのメールサーバのDKIM導入を機に、重い腰を上げて新しく買って1年ほど放置していたM1 Mac Mini + macOS Sonomaに式年遷宮を試みた。

いくつかのトラブルはあったが、DNSとメールを新しいMac Miniに移行して、無事に運用を開始することができた。

新しいMac Mini (上)と古いMac Mini (下)

新しいMac Mini (上)と古いMac Mini (下)

いつのまにか無応答になっているメールサーバ

運用を開始していつかのタイミングからなぜかメールがセカンダリのサーバに届くようになってしまった。プライマリのMac Miniのメール関連のプロセスが死んだのかと思いトラブルシュートをしようとSSHを試みるも反応なし。pingにも応答なし。OSごとダウンしたと思い電源ボタン長押しで再起動をかけた。

何度かこの事象が発生しその都度ハードリブートをかけていたが、このままでは困るので時間を取って調査を開始した。

しかし system.log を見ても、mailのログを見ても、プロセスやOSがクラッシュした形跡はなく、何も分からなかった。

家を離れて1時間するとダウンするメールサーバ?

どのタイミングでセカンダリに切り替わったのかを調べることにした。これには何時のメールからセカンダリに届いたかを調べれば簡単にわかる。

直近は水曜日の17:30ごろ。この日は17:30から外部で講演の仕事があったため16:30に家を出た日。

その前は火曜日の9:00ごろ。この日は新しく着任されるチームメンバーを迎えるために8:00に出勤した日。

その前は…と調べていくと、どうやらPCを持って家を離れて1時間後にメールサーバがセカンダリに切り替わっているらしいことがわかった。そして30分程度で戻ってくる場合には切り替わりが起こっていないこともわかった。

 

どうやら一時間以上家を離れるとサーバがダウンしてしまうらしい。

 

………寂しくて死んでまうんか???

 

トラブルシュート開始

このMac MiniサーバはONUの位置関係上の制約でリビングでHeadlessモードで運用しており、ディスプレイを持ってきてつなぐのがちょっと面倒だったのでいままでハードウェアリブートする運用で対処をおこなっていたが、時間を取ってちゃんとトラブルシュートすることにした。

同様の事象が発生したタイミングでハードリブートは行わずにHDMIディスプレイを繋いでみた。画面は真っ暗。OSが落ちているのであれば期待通り。

次にキーボードとトラックパッドBluetoothで接続してみた。すぐに反応はなかったが、トラックパッドを叩いていると画面が復活した。

 

……もしかしてSleepしていた…?

 

解決へ

SettingsでSleep周りの設定を確認したところ、Settings > Lock Screen の Turn display off when inactive が For 1 hour になっていた。これが1時間の原因。

Settings > Lock Screen

Settings > Lock Screen

つぎに Settings > Energy Saver を確認すると Prevent automatic sleeping when the display is off が disable になっていた(画像はenableしたあとのもの)

Settings > Energy Saver

Settings > Energy Saver

なんで家にいる間にこれが発動しなかったのかを振り返ってみると、家でPCを使っている間はMac MiniサーバにScreen Sharingで画面に接続していたからであった。

そのためPCを持たずに外出したときも問題は起こらなかったし、PCを持って外出しても1時間以内に帰ってきたときは、自動的にScreen Sharingが再接続をするので問題は起こらなかった。

 

PCを持って家を出て一時間経過したときだけ、自動的にディスプレイがオフになり、OSがスリープモードに入り、メールサーバがダウンしていたのだった。

 

わかってみればなんてことのない問題だった。

 

ちなみに古いMac MiniではEnergy SaverでSleepの設定をすべてNeverにしていた。

古いMac MiniのEnergy Saverの設定

教訓

macOSでサーバを運用するときは Prevent automatic sleeping when the display is off を有効化しましょう。

ブコメ返し

本筋とは外れるけどMacでメールサーバーを作って運用してはるのってかなりハードルが高いと思う(むかしMacbook+Postfixで挑戦したけど面倒で挫折した) - azumakuniyuki のブックマーク / はてなブックマーク

LinuxともBSDとも勝手が違うし情報もそこまで多くないのでハードルは高いですねー(わかってくれる人がいて嬉しい)。

macOSで運用してるのも仕事で運用してないものを使う教義の一貫なのかな - sora_h のブックマーク / はてなブックマーク

Yesです。LinuxRHELベースとDebianベースと両方やっているので、プライマリがmacOSセカンダリFreeBSDです。あとmacOSはTime Machineがあるのでバックアップがすごい楽なのが気に入ってます。

Webは自分で運用する教義でも、blogははてなでいいのでしょうか? - kazuau のブックマーク / はてなブックマーク

いい質問ですね。自分のサーバだと検索エンジンSEO的に不利な点が多すぎる(&そこに頑張りたくなかった)のでブログについてははてなを利用しています。Webはプロフィールぐらいしか載ってません。

夜中おちなかったのかな? - GARAPON のブックマーク / はてなブックマーク

はい、PC(MacBook Pro)をScreen Sharing立ち上げたままつけっぱだったので落ちませんでした。

この手の新ネタを見るたび、「500マイル」と「バニラアイス」と「中国茶」のエピソードとしての強さが際立つ。 - six13 のブックマーク / はてなブックマーク

ほんまね。でもそんなおもろいやつそうそう起きひんって。

電気代かかるからやらない - mayumayu_nimolove のブックマーク / はてなブックマーク

すんません。M1になったのでちょっとマシになるはず…