Postfix で知らないローカルユーザを拒否する


はじめに

Postfix バージョン 2.0 から、Postfix SMTP サーバは ローカルドメイン ($mydestination にマッチする ドメインや $inet_interfaces または $proxy_interfaces にある IP アドレス) の知らない受信者宛のメールを "User unknown in local recipient table" で拒否するようになりました。この機能は以前のバージョンの Postfix ではオプションでした。

この利点は、配送できないメールをキューに入れないようにするため、 メールキューが配送できない MAILER-DAEMON メッセージで詰まらないようになった ことです。

欠点は、知らないローカル受信者宛のメールを拒否するように設定されていない Postfix システムからアップグレードした場合にメールを拒否してしまうかも しれないということです。

このドキュメントは知らないローカル受信者を正確に拒否するために必要な ステップを記述しています。

main.cf の local_recipient_maps の設定

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" で拒否はしません。

main.cf の local_recipient_maps 設定を変更する必要がある場合

ローカル受信者テーブルのフォーマット

postmap(1) フォーマットのローカルファイルを 使う場合、local_recipient_maps は以下のテーブルフォーマットを期待します:

NIS や LDAP、MYSQL、PGSQL ベースの検索テーブルを使う場合、 local_recipient_mapspostmap(1) フォーマットのローカルファイルの 場合と同じ問い合わせをおこない、同じ結果を期待します。

正規表現テーブルでは、Postfix は受信者アドレス全体のみで問い合わせ、 裸のユーザ名や "@domain.tld" ワイルドカードでは問い合わせません。

注意: アドレスが存在する場合には検索テーブルは常に結果を返し、アドレスが 存在しない場合には常に "not found" を返すべきです。特に長さがゼロの結果は "not found" という結果とは見なされません。