サフィックス仮想エイリアスドメインが正規表現仮想エイリアスマッピングと一致します。

サフィックス仮想エイリアスドメインが正規表現仮想エイリアスマッピングと一致します。

Postfix(2.11.3)を使用してすべてのメールを外部アドレスにリダイレクトしたいと思います。

/etc/postfix/main.cf:

virtual_alias_maps = regexp:/etc/postfix/rewrite

/etc/postfix/rewrite:

/^.+$/ [email protected]

にメールを送信すると、[email protected]次のエラーが発生しました。

[...] to=<[email protected]>, orig_to=<[email protected]> [...] status=bounced (User unknown in virtual alias table)

文書説明する:

有効な受信者アドレスはvirtual_alias_mapsパラメーターとともにリストされます。 Postfix SMTPサーバーは、「仮想エイリアステーブルのユーザーが不明」を介して誤った受信者を拒否します。

エラーは、仮想エイリアスドメインの検証に関連していることがわかりました。既定では、これを別のvirtual_alias_domainsものに$virtual_alias_maps設定(一致しないドメインに設定するか空白のままにする)は問題を解決します。

私が見つけた別の解決策一つの答えで正規表現を別の形式で提供する:

/^.+@.+$/ [email protected]

だから私の質問は、仮想エイリアスに正規表現テーブルを使用するときにエイリアスドメインの検証がどのように機能するのですか?別の値に設定するとvirtual_alias_domains問題が解決するのはなぜですか?上記の2つのアドレスマッピング方法の同等モードの違いは何ですか?

出力はpostconf -n次のとおりです

config_directory = /etc/postfix
inet_interfaces = loopback-only
inet_protocols = ipv4
mydestination =
myhostname = example.org
myorigin = $myhostname
virtual_alias_domains =
virtual_alias_maps = regexp:/etc/postfix/rewrite

答え1

[email protected]配達する必要がある郵便物があるとしましょう。

で指定されたマップは、virtual_alias_domainsドメイン部分()をキーとして照会され、example.net仮想エイリアスドメインの場合は何も返さないと予想されます。それ以外の場合は何も返されません。つまり、キーを定義しないでください。virtual_alias_mapsマップを照会するためのキーとして完全なアドレス()を使用すると、オーバーライドされた[email protected]アドレスが返されると予想されます。

/etc/postfix/virtualこれは、で説明した単純なハッシュマップのように、両方のルックアップに対して1つのマップファイルを共有できることを意味します。仮想(5)。 Postfix( ) の基本構成は、virtual_alias_domains = $virtual_alias_mapsこれらの混合スタイルのマップを想定しています。

example.net OK
[email protected] [email protected]
[email protected] [email protected]

これらの検索の重要な規則は次のとおりです。

  • virtual_alias_maps再帰的に検索されます。キーと同じ住所を返す場合は、その住所を使用してください。
  • 最後に返された書き換えられたアドレスがvirtual_alias_mapsまだにある場合、virtual_alias_domains検索は失敗したと見なされます(User unknown in virtual alias table)。これは明確に文書化されていないようです。このスレッド

したがって、最初の正規表現map()と設定は、マップがすべての項目と一致するため、問題があり、まだ存在し返されます。/^.+$/ [email protected][email protected]virtual_alias_domains

virtual_alias_domainsmap()に何も指定しない場合、または単一のドメイン文字列と一致しない他の正規表現を使用すると、これを回避できます。/^.+@.+$/ [email protected]

しかし、私の考えでは、どちらも正しい設定ではありませんが、直感的ではない解決策です。あなたの目的にはより良い解決策があると思います。

関連情報