Postfix:compatibility_levelはどう設定するべきか
compatibility_level は Postfix のバージョンにより設定の仕様やデフォルト値が変わることに対して、設定のバージョンを明確にすることで、古い設定のままでも問題がないように保証するしくみ。
Postfix 3.5.24 で確認
インストールすると、main.cf に以下の設定が入っている。
code:main.cf
compatibility_level = 2
デフォルトの状態では 0 が入る。
また、compatibility_levelがデフォルトで影響しているのは以下の設定になる。
code:console
# postconf -d | grep compatibility_level
append_dot_mydomain = ${{$compatibility_level} < {1} ? {yes} : {no}}
compatibility_level = 0
mynetworks_style = ${{$compatibility_level} < {2} ? {subnet} : {host}}
relay_domains = ${{$compatibility_level} < {2} ? {$mydestination} : {}}
smtpd_relay_restrictions = ${{$compatibility_level} < {1} ? {} : {permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination}}
smtputf8_enable = ${{$compatibility_level} < {1} ? {no} : {yes}}
compatibility_level はデフォルトで0になる。
Postfix 3.6 からは、バージョン文字列判定方式に変わった。専用のバージョン判定用比較演算子が作られた。
つまり "3.9" < "3.10" が保証される。
例えば、以下のように書けば、3.10未満、3.10以下とすることができる。
${{$compatibility_level} <level {3.10} ? {no} : {yes}}
${{$compatibility_level} <=level {3.10} ? {no} : {yes}}
3.6以前はメジャーバージョンのみいれて、
3.6以降はバージョン番号をすべて入れるのが推奨されると思われる。