はじめに ======== Postfix バージョン 2.0 の時点では、$mydestination 宛のメールで Postfix SMTP サーバが知らないものを拒否します。この機能は 以前の Postfix のバージョンではオプションでした。 この利点は、配送できないメールをキューに入れないという点です。 欠点は、知らないローカルユーザ宛のメールを拒否しないように 設定された Postfix システムからアップグレードするときに、 メールを拒否するかもしれないという点です。 このドキュメントは、Postfix が間違ってメールを拒否しないように するために必要なステップを解説します。 安全のため、この機能を使わない Postfix のバージョンからアップ グレードする場合、知らないユーザに対しては Postfix SMTP サーバは 450 (後で再び試してください) 状態コードを返します。 local_recipient_maps パラメータの設定 ===================================== local_recipient_maps パラメータには、ローカル受信者の全ての 名前またはアドレスを持つ検索テーブルを指定します。アドレスの ドメインが $mydestination または $inet_interfaces にマッチ したときに、受信者のアドレスはローカルと見なします。 検索テーブルの右側部分は都合良く無視されます。左側部分には 裸のユーザ名や @domain.tld ワイルドカード、user@domain.tld アドレスを指定します。 local_recipient_maps パラメータの値が空でなければ、SMTP サーバは 知らないローカルユーザ宛のメールを "User unknown in local recipient table" として拒否します。 SMTP サーバによる知らないローカルユーザ拒否を無効にするには、 次のように指定します: /etc/postfix/main.cf: local_recipient_maps = すなわち、空の値です。この設定では、Postfix SMTP サーバは "User unknown in local recipient table" として拒否しません。 デフォルトの設定では、受信者が UNIX アカウントもしくはローカル エイリアスである、ローカル配送にデフォルトの Postfix local 配送 エージェントを使うことを想定しています: /etc/postfix/main.cf: local_recipient_maps = proxy:unix:passwd.byname $alias_maps 次のどれかに当てはまるのであれば、local_recipient_maps 設定を 更新する必要があります: 1 - /etc/passwd や /etc/aliases 以外のファイルで $mydestination ドメインの受信者を定義している場合。 例えば、$virtual_mailbox_maps ファイルで $mydestination ドメインの 受信者を定義している時。その場合、ローカル受信者を次のように 設定します: /etc/postfix/main.cf: local_recipient_maps = $virtual_mailbox_maps 非 Postfix 配送エージェント (つまり "local" や "virtual" 以外) については、このドキュメントのさらに下の方を参照してください。 2 - Postfix SMTP サーバを chroot して動かしている (master.cf で 指定している) 場合。 多くのシステムで、passwd ファイルを chroot 環境へコピーする 必要があります。 例えば、4.4 BSD システムでは次のようにします: # mkdir /var/spool/postfix/etc # cp /etc/pwd.db /var/spool/postfix/etc 他のシステムでは次のようにします: # mkdir /var/spool/postfix/etc # cp /etc/pwd.db /var/spool/postfix/etc /etc/nsswitch.conf から参照されているファイルと同様に、 /etc/nsswitch.conf をコピーする必要があるかもしれませんが、 それはあまりなさそうです。 passwd ファイルがない場合やアクセスできない場合、Postfix SMTP サーバは安全ネットを置いて、メールを失わなう代わりに 450 状態コード (再び試してください) を返します。明らかな エラーメッセージを見るために、メールログを監視してください。 3 - master.cf でローカル配送エージェントを再定義しているか、 main.cf で "local_transport" 設定を再定義していて、$mydestination ドメインの受信者宛のメールがデフォルトの Postfix local 配送 エージェント以外のものによって配送される場合。 配送エージェントが知っている全てのユーザ名やアドレスを リストアップしたデータベースを、local_recipient_maps 設定に指定する 必要があります。例えば、virtual 配送エージェントで $mydestination のユーザを配送する場合、次のように指定します: /etc/postfix/main.cf local_recipient_maps = $virtual_mailbox_maps ユーザデータベースは裸のユーザ名と同様に user@domain アドレスも 検索されます。 4 - 非 UNIX アカウントに配送するために Postfix local 配送エージェントの mailbox_transport や fallback_transport 機能を使っている場合。 非 UNIX ユーザをリストアップしているデータベースを加える 必要があります。 /etc/postfix/main.cf local_recipient_maps = unix:passwd.byname, $alias_maps, ユーザデータベースは裸のユーザ名と同様に user@domain アドレスも 検索されます。 5 - Postfix local 配送エージェントの luser_relay 機能を使っている場合。 この場合、Postfix が全てのローカルアドレス宛のメールを受け入れる ために、local_recipient_maps 機能を完全に無効にしなければ いけません。 /etc/postfix/main.cf local_recipient_maps =