ユーザの追加と削除は、 変数 primary_*_map に対して行ってください。
たとえば、 リモート管理者の追加処理であれば、 primary_admin_member_map と primary_admin_recipient_map の両方にメールアドレスを追加します。 削除の際は、 primary_admin_member_map と primary_admin_recipient_map からアドレスを削除しています。
操作対象を admin_member_maps と admin_recipient_maps にすると、いろいろと問題があります (ここには fml4 の反省がいかされています ;-)。
追加つまり書き込む(WRITE)処理対象は一つに限定しなくてはいけません。 よって、 primary_*_map 一つに対して行なうべきです。 読む(READ)のであれば複数あってもかまいませんが、 WRITE 操作対象を *_maps でもよいことにしてしまうと、 複数の map のどれに書き込むのかが曖昧になってしまします。
逆に、 削除処理は、 一見 *_maps が操作対象で問題ない気がしますが、 実は駄目です。 消し過ぎになってしまうことがあるからです。 特に問題になるのは、 *_maps に「権限の異なる map 」が混在している場合です。
たとえば、 member_maps はデフォルトで、リモート管理者を含んでいます。
member_maps = $primary_member_map $admin_member_mapsそのため、member_maps に対して削除を試みると、 勢いあまってリモート管理者の分も削除する可能性があります。
こういった曖昧さを避けるために、 primary_XXX_map と XXX_maps という分離が考案されたいというわけです (ようするに fml4 の反省がいかされています ;-)。
Copyright (C) 1993-2025 Ken'ichi Fukamachi mail:< fukachan at fml.org >