macOS上のDovecotの設定は特殊だった

postfix関係(smtp & submission)のaccess制限が出来上がったので、今度はdovecotを確認することに。
先ずerror.logのチェック。
中身を見て驚いた。異常なaccessが沢山発生している、それも内部から。

ログとしてはこんな感じ。

これに対応するため、Geminiさんに相談する(いつもの流れだ)が解決しない。
Geminiさんの応答もおかしな方向へと進んでいく。
数時間が経過。進み具合は全くなし。

別タブでGoogle AIさんに聞いた。

何が起きているのか(原因)
Dovecot のデフォルト設定では、パフォーマンス向上のために「1つの IMAP プロセスを使い回して、複数のユーザー接続を処理する」挙動(service_count = 0)をとることがあります。

  1. 最初に admin ユーザーがログインし、IMAP プロセスが UID 509 (admin) に切り替わります。
  2. 次に WordPress ユーザーが同じ IMAP プロセスに接続しようとします。
  3. すでに admin 権限になってしまっているプロセスは、root 権限を持たないため、別の UID 510 (vmail) へ再切り替えすることができません。
    その結果、この Fatal: setuid… failed エラーが発生します。

こんなこと知らなかったよ。(涙)

対応法の解説ですよ。
10-master.confを編集する。

私の場合viなので置き換えて、編集するけれどね。

どこを編集するのか。
ここ(service_count)です。

つまり、元々service_countは256とかに設定されていました。それだけ使い回すということですね。

dovecot/imapがずらずら出てきますね。これです。
問題となったのはdovecot/imap [WordPress 192.168.0.36]を使い回せなかったこと。
こういったdovecot/imapの寿命を1にして、誰かが使ったら落とす。つまり使い捨てにするってことですね。
その分、沢山立ち上げておけば対応できるだろうからprocess_limit = 1024で最大数を増やしておこうってことですね。
判り易い説明ですね。うん、AIさん素晴らしい。
それに、これ実はエラーを起こした(別のユーザーが使った)途端、dovecot/imapは落ちるから実質同じことなんですよね。

Geminiさんは「普通やらない設定」だから考えもしなかったらしい。
これについては責められない、macOSの固有の条件下だもの。Linuxでは絶対に起こらないらしい。(私は知らんよ)

お蔭でログはスッキリしました。
良かった、良かった。

その後port scannerが見つかったのでPFにぶち込んでおきました。
その時のscript載せときましょうか。

解説いるかな?
1番目のgrepでfailedの行を拾って
2番目のgrepでip抽出して(ここはGeminiさんが頑張ったところですよ)
3番目のgrepでlocalを除いて
4番目のgrepでdocomo回線のip除いて(ここは自分の使っているip rangeに合わせてね)
sort -uで重複除いて、最後に出てきたipは全部纏めてpfctlに送り込む
以上です。
これを/usr/local/sbinにでもadd_pf_dovecot.shとか適当に名前つけて置いておけばsudo /user/local/sbin/add_pf_dovecot.shで叩いて来た奴を追い出せますよ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)