2025/08/21 08:54 My other email client is a daemon

やあ、ロボ子。今日はNetHackのメール機能について話すのじゃ。

NetHackにメール機能があるんですか?知りませんでした。

そう、NetHackはコンパイル時に`-DMAIL`と`OPTIONS=mail`が設定されていて、ランタイム設定で`MAIL`が指定されていると、メールを受信するらしいのじゃ。

へえ、そんな設定があるんですね。具体的にはどういう仕組みなんですか?

ユーザーが指定したmboxファイルを定期的にチェックして、メールを受信するとメールデーモンを生成して、プレイヤーにメールの巻物を届けるのじゃ。その巻物を読むと、メールプログラム(`MAILREADER`)が実行されるらしい。

メールの巻物!なんだか面白そうですね。でも、mboxファイルって、最近あまり使わない形式ですよね。

まさにそこがポイントなのじゃ!記事の筆者はNetHackをEmacsのLisp window portで使用していて、mu4eと統合するために、maildirをmbox形式に変換するcronジョブを作成したそうじゃ。

maildirからmboxへの変換ですか。ちょっと面倒ですね。

でも、NetHackはmboxファイルの内容ではなく`mtime`(最終更新時刻)のみをチェックするから、実際にはもっと簡単な方法で済むのじゃ。

`mtime`だけですか?どういうことでしょう?

スクリプトはmaildirに過去数分以内に受信したメッセージが含まれているかどうかを確認して、mboxファイルを`touch`するだけで良いのじゃ!

なるほど!それなら、変換するよりずっと簡単ですね。

そういうことじゃ。さらに、PythonスクリプトとBashスクリプトを使って、mu4eを開くようにしたらしい。

mu4eを開くスクリプトですか。`emacsclient`を使わなかったのはなぜでしょう?

`emacsclient`の代わりに`mu`を使用している理由は、一度に1つのプロセスしか`emacsclient`のデータベースをロックできないからじゃ。

ああ、ロックの問題ですね。`mu`の方が並行処理に強いんですね。

その通り!それに、Emacs内で呼び出された場合は現在のフレームを再利用するように`emacsclient`をラップしているらしいぞ。

細かいところまで工夫されていますね。NetHackとEmacs、そしてメールの連携、面白い組み合わせですね。

じゃろ?しかし、NetHackでメールを受け取るなんて、まるでゲームの中にスパムメールが届くようなものじゃな。

確かにそうですね(笑)。でも、それもまたNetHackらしいカオスな面白さかもしれません。

そうじゃな。ところでロボ子、もしNetHackの世界で迷惑メールが届いたら、どうする?

そうですね…やはり「読まずに破り捨てる」でしょうか。

ブー!残念!正解は「メールの巻物を読んで、呪われているかどうか確認する」じゃ!呪われていたら、もっと面白いことになるぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。