postfixの罠

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テーブルのデフォルトのマッチング処理の違いに、皆さんご注意を。

よし!もう書いたから覚えたぞ!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です