sendmailからpostfixへの移行。
今回はaccessテーブルの置き換えに嵌る。
置き換え方は、
sendmail accessテーブル |
postfix |
Connect:xxx.hogehoge.com RELAY? (実際は1行) |
mynetworkパラメータで指定するaccessテーブル
xxx.hogehoge.com OK
|
To:hogehoge.com REJECT (実際は1行) |
smtpd_recipient_restrictionsパラメータでcheck_recipient_accessとともに指定するaccessテーブル
xxx.hogehoge.com REJECT
|
な~んて形になります。
で、今回の置き換えにこんなのがありました。
To:.xxx.hogehoge.com? RELAY
To:xxx.hogehoge.com? REJECT
素直に置き換えると、smtpd_recipient_restrictionsパラメータでcheck_recipient_accessとともに指定するaccessテーブルに
.xxx.hogehoge.com OK
xxx.hogehoge.com REJECT
なのですが、実際にこれで走らせてみると、yyy.xxx.hogehoge.comでもREJECTされちゃいます。先に書いたOKに引っかからないのですか??
で、google先生とpostfixのマニュアルを睨めっこすること5時間。postfixのaccessテーブルのマニュアルに気になる記載が・・・
smtpd_access_maps が Postfix parent_domain_matches_subdomains 設定に挙げられている時だけはパターン domain.tld はサブドメインにもマッチします
なんだ??このparent_domain_matches_subdomainsっていうパラメータは?そんなのデフォルトのmain.cfにはなかったぞ。
で、このparent_domain_matches_subdomainsってやつを調べると、
明示的な “.domain.tld” パターンを要求する代わりに、自動的に “domain.tld” のサブドメインがマッチするPostfixの機能。
これが非常~に臭い!で、デフォ値は
デフォルト: “postconf -d” の出力を参照
なんじゃそりゃ~!!で、postconf -d parent_domain_matches_subdomainsを叩いてみた。
parent_domain_matches_subdomains = debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
「smtpd_access_maps」って書いてるよ~(泣)こんなしょーもないことに6時間も費やしたとは・・・
ってことで、sendmailと動作を合わせるために、「relay_domains,smtpd_access_maps」は消え去ってもらいました。
sendmailから移行するときは、accessテーブルのデフォルトのマッチング処理の違いに、皆さんご注意を。
よし!もう書いたから覚えたぞ!