(ヽ'ω`) < Mailmanの設定ファイル、Defaults.pyとmm_cfg.py, config.pckの関係について
(ヽ´ω`) < 3つもあるからわかりにくい
Mailmanの細かい設定パラメータについて解説する前に、
既にインストールの段階で説明したとおり、Mailmanの設定はMailman/mm_cfg.py
がMailman/Defaults.py
のデフォルト設定を上書きする形で行われる。
それでは、Mailmanに関する全ての設定がこの2つのファイルだけで行われているかというと然にあらず。実はMailmanの設定には「全体設定」と「リスト毎の設定」がある。
各リストのデフォルト設定はDefaults.py
とmm_cfg.py
で設定した値、つまりシステム管理者が設定した値となるが、多くの設定に関しては、リストの管理者が変更可能である。
この変更はリストの管理者がWebUIから行うことができるが、
- リスト管理者のメールアドレス
- リストから配送されるメールのSubjectに付与するPrefix
- メンバー登録時のWelcomeメッセージの内容
のようなリスト固有のものもあれば、
- メンバー以外からメールを受信した際の挙動(配送、破棄、保留)
- アーカイブ化処理の有無
- エラーメールの処理方法
などと、Mailmanのコアな部分の挙動についても制御が可能となっている。
「リスト毎の設定」はlists/<リスト名>/config.pck
というファイルに保存される。この拡張子pckのファイルはPickleファイルと言い、Pythonに標準で添付されているオブジェクトシリアライズのためのフォーマットとなる。バイナリファイルなので、中身を見たい場合にはbin/dumpdb
コマンドを使用する。
Defaults.py
, mm_cfg.py
, config.pck
それぞれの関係をまとめると以下のようになる。
ファイル名 | 役割 | 変更方法 | 変更者 | ファイル形式 |
---|---|---|---|---|
Defaults.py |
Mailmanデフォルトの設定を記載 各パラメータの役割についてのコメント有 |
基本的に変更しない | システム管理者 | Pythonスクリプト |
mm_cfg.py |
Mailmanのシステム全体に渡る設定を記載 | ファイルを直接編集 | システム管理者 | Pythonスクリプト |
config.pck |
各リスト毎の個別・固有の設定を記載 | WebUI(リスト管理者、システム管理者)、bin/config_list コマンド(システム管理者) |
主にリスト管理者 | Pickle形式(バイナリファイル) |
(ヽ´ω`) < 設定内容の移譲について
上記の図を見てわかるとおり、config.pckはリスト作成時に作成されるため、リスト作成後にmm_cfg.py
の内容を変更しても、その内容は既存のリストには反映されない。既存のリストへ設定を反映させるには、個別にbin/config_list
コマンドで設定を流しこんでやる必要がある。(この方法については後述する)
ApacheやPostfixなどの一般的なサーバアプリケーションでは、設定ファイルを書き換えてサーバをリロードすれば設定が反映されるが、Mailmanではここが特殊でハマりやすい。
(おーい、未承認メールの保留期間を2週間にしておいてくれー)
(ヽ´ω`) < はいはい、mm_cfg.pyでDEFAULT_MAX_DAYS_TO_HOLDを14に設定っと…
3週間後
(オラァ! 2週間って言っただろうが! 全然消えてねぇぞ!![※デフォルトでは未承認メールは自動削除されない])
(;ヽ´ω`) < えぇ…
(;ヽ´ω`) < スンマセン、今WebUIで変更しました!
(チッ)
(ヽ´ω`) < と言うか自分でWebUIから変更してくれればよかったんじゃ…
というのが実体験に基づくかどうかは置いておいて、この特徴をしっかりと覚えておくためには、Defaults.py
とmm_cfg.py
を"設定ファイル"と考えずに "テンプレート" として考えると良い。
Defaults.py
とmm_cfg.py
はテンプレートで、設定ファイルはconfig.pck
のみと覚えておけば、設定を変更するには、当然設定ファイルであるconfig.pck
を操作しないといけない、となる。
(ヽ´ω`) < 「固有設定」と「個別設定」について
config.pck
ファイルの中身、リスト毎の設定には「固有設定」と「個別設定」がある。それぞれの区別は以下の通り。
言葉 | 定義 | 設定は必須か? |
---|---|---|
固有設定 | リストの名前や管理者のメールアドレスなどの、そのリスト自身の独立性を表す設定。 リスト作成時にinputとして渡す。 |
必須 |
個別設定 | Defaults.py , mm_cfg.py から引き継がれ、必要に応じて上書きされた、メーリングリストシステムとしての挙動を制御する設定。 |
必要に応じて。設定しない場合はシステム管理者が設定した値が使用される。 |
実際のファイルの中身に明確な区別があるわけではなく、概念として2つの設定があるということを留意してもらいたい。
繰り返しになるが、個別設定は「mm_cfg.py
のものが使用される」のではなく、「mm_cfg.py
から生成される」ということを覚えておくこと。
(ヽ´ω`) < config.pckファイルの変更方法
config.pck
ファイルの中身を変更するには2つの方法がある。
1つめはWebUIからの変更。これはリスト管理者がログインして行うことができるし、システム管理者がマスターパスワード(bin/mmsitepass
で作成したパスワード)でWebUIにログインすることでも変更が可能。
(ちなみに、アクセス対象のWebUIのURLはどちらの場合でも同じ。つまり、WebUIにログインする際には、リスト個別のパスワードとマスターパスワードの2つが利用可能となる。)
もう1つが先程から何度か出ているbin/config_list
コマンドである。
これはサーバのスクリプトファイルなので、当然、サーバのコンソールを触れる人間、通常はシステム管理者のみが使用できるコマンドとなる。
bin/withlist
というコマンドもあるのだが、これはかなりPythonプログラマに寄ったコマンドなので、Pythonに馴染みのない管理者にはとっつきにくい。
(ヽ´ω`) < config_listコマンドの使用方法
長くなるので次のエントリで
(ヽ'ω`) < わかりにくい 図を使え 人に伝える気があるのか
(ヽ'ω`) < そ、そのうち追加します