Postfix バージョン 2.0 から、Postfix SMTP サーバは ローカルドメイン ($mydestination にマッチする ドメインや $inet_interfaces または $proxy_interfaces にある IP アドレス) の知らない受信者宛のメールを "User unknown in local recipient table" で拒否するようになりました。この機能は以前のバージョンの Postfix ではオプションでした。
この利点は、配送できないメールをキューに入れないようにするため、 メールキューが配送できない MAILER-DAEMON メッセージで詰まらないようになった ことです。
欠点は、知らないローカル受信者宛のメールを拒否するように設定されていない Postfix システムからアップグレードした場合にメールを拒否してしまうかも しれないということです。
このドキュメントは知らないローカル受信者を正確に拒否するために必要な ステップを記述しています。
local_recipient_maps パラメータにはローカル受信者の全ての名前やアドレスを持つ検索テーブルを 指定します。受信者アドレスは、ドメインが $mydestination や $inet_interfaces、 $proxy_interfaces にマッチ したときにローカルです。ローカルユーザ名またはアドレスが $local_recipient_maps にリストアップされていないと、Postfix SMTP サーバはアドレスを "User unknown in local recipient table" で拒否します。
デフォルトの設定では、以下に示すように、受信者が UNIX アカウントもしくは ローカルエイリアスである、ローカル配送にデフォルトの Postfix local(8) 配送エージェントを使うことを想定して います:
/etc/postfix/main.cf: local_recipient_maps = proxy:unix:passwd.byname $alias_maps
SMTP サーバによる知らないローカル受信者拒否を無効にするには、次のように 指定します:
/etc/postfix/main.cf: local_recipient_maps =
すなわち、空の値です。この設定では、Postfix SMTP サーバは "User unknown in local recipient table" で拒否はしません。
問題: $mydestination や $inet_interfaces、 $proxy_interfaces に マッチするドメインに対して、デフォルトの Postfix local(8) 配送エージェントを使っていません。 例えば、main.cf の "local_transport" を 再定義しています。
解決策: local_recipient_maps 設定にその配送エージェントの既知のユーザ名やアドレス全てをリストアップ したデータベースを指定する必要があります。例えば、 $mydestination などのユーザを virtual(8) 配送エージェントで配送するので あれば、次のように指定します:
/etc/postfix/main.cf mydestination = $myhostname localhost.$mydomain localhost ... local_transport = virtual local_recipient_maps = $virtual_mailbox_maps
$mydestination などの ドメインに違う配送エージェントを使う場合、テーブルの作り方に関する 記述は、以下の "ローカル受信者テーブルのフォーマット" のセクションを参照してください。
問題: 非 UNIX アカウントにメールを配送するために Postfix local(8) 配送エージェントの mailbox_transport または fallback_transport 機能を使っています。
解決策: 非 UNIX ユーザをリストアップしたデータベースを追加する必要が あります:
/etc/postfix/main.cf local_recipient_maps = proxy:unix:passwd.byname, $alias_maps, <the database with non-UNIX accounts>
テーブルの作り方に関する記述は、以下の "ローカル受信者テーブルのフォーマット" の セクションを参照してください。
問題: Postfix local 配送エージェントの luser_relay 機能を使っています。
解決策: Postfix が全てのローカルアドレス宛のメールを受け取るようにする ために、local_recipient_maps 機能を完全に無効にしなければいけません:
/etc/postfix/main.cf local_recipient_maps =
postmap(1) フォーマットのローカルファイルを 使う場合、local_recipient_maps は以下のテーブルフォーマットを期待します:
左側部分には、裸のユーザ名、"@domain.tld" ワイルドカード、または 完全な "user@domain.tld" アドレスを指定します。
テーブルの右側部分には何かを指定しなければいけませんが、値は local_recipient_maps からは無視されます。
NIS や LDAP、MYSQL、PGSQL ベースの検索テーブルを使う場合、 local_recipient_maps は postmap(1) フォーマットのローカルファイルの 場合と同じ問い合わせをおこない、同じ結果を期待します。
正規表現テーブルでは、Postfix は受信者アドレス全体のみで問い合わせ、 裸のユーザ名や "@domain.tld" ワイルドカードでは問い合わせません。
注意: アドレスが存在する場合には検索テーブルは常に結果を返し、アドレスが 存在しない場合には常に "not found" を返すべきです。特に長さがゼロの結果は "not found" という結果とは見なされません。