[milter-manager-users-ja] milterライブラリを使ったmilterがmilter-managerから素通りされることがある

Back to archive index
Kiyoshi SATOH satoh****@hakub*****
2019年 10月 10日 (木) 12:02:03 JST


さとうです。

2019年10月10日(木) 11:13 Kentaro Hayashi <hayas****@clear*****>:
> 負荷が影響しそうな観点だと、以下の設定を変更すると状況に変化があるでしょうか?
> 既定値のままなら今はglibだと思います。
>
> 変更前:manager.event_loop_backend = "glib"
> 変更後:manager.event_loop_backend = "libev"

自分も負荷が影響していると考えて、この設定をmilter-managerとtest-milter側とどちだにも入れたパターンで試してみていたのですが、変化ありませんでした。
また同時接続10件ぐらいからなにか問題が出てくる感じでしたので、n_workersを20にして20件送信するということを試してみたのですが、これも変化なしでした。
milter-manager.local.conf 追記部分
---
manager.event_loop_backend="libev"
manager.n_workers=100
---

test-milter.conf
---
milter.event_loop_backend="libev"
milter.n_workers=20
---

test-milterの起動は下記
---
ruby test-milter.rb -s inet:20025 -c test-milter.conf -v
---

他に調査するとするなら

> [children][error][message-processing] None of milters are processing message.
> [leader][error] None of milters are processing message.

のエラーを出している場所はわかっているので、ここで止めてその時の状況調べてみるとかがいいでしょうか。


> ドキュメントの通りtemporary-failureが正しいです。(temporary_failureでも動作しますが、内部で_を-に変換しています。)
> ログレベルprofileは存在します。対象のログは黒背景に緑で表示されるようになります。
> このサンプルに限らずmilterを書くのであれば milter/clientをrequireするので十分です。
> MILTERプロトコルをしゃべるクライアントとサーバーを両方実装するようなコードを書く場合にはrequire milterするとよいです。

ありがとうございます。納得いきました。
ログレベルprofileは自分の見落としだと思います。すみません。

もう一つ疑問だったことがあり、質問させてください。
milter-managerの設定で define_envelope_from_stopper
だとそこだけで止めることが出来るのですが、全く同じコードで define_envelope_recipient_stopper
にすると止められない、ということがありました。
そこで参考になりそうな restrict_accounts_by_list のコードを参照すると、一旦
define_envelope_recipient_stopper で止めた後、その結果を保持しておいて
define_data_stoppter でも止めるようになっていたため、そのようにしたところ止まるようになりました。
なので解決は出来たのですが、なぜこのような動きになるのか(このようにしないといけないのか)教えていただけないでしょうか。

-- 
佐藤 潔 (Kiyoshi SATOH) <satoh****@hakub*****>


milter-manager-users-ja メーリングリストの案内
Back to archive index