ACCESS(5) ACCESS(5) 名前 access - Postfix アクセステーブルの書式 書式 postmap /etc/postfix/access postmap -q "string" /etc/postfix/access postmap -q - /etc/postfix/access <inputfile 解説 access(5) テー ブルは Postfix SMTP サーバにメールを選択的に受け入れる か、または拒否するかをオプションで指示します。 access は特定の ホ ス ト 名、 ドメイン名、ネットワーク、ホストアドレスまたはメールアドレスを許可 したり拒否できます。 例はこのマニュアルページの "例" セクションを参照してください。 通常、access(5) テーブルには postmap(1) コマンドへの入力に使われるテ キ ス トファイルが指定されます。dbm または db 形式でインデックス化された結 果はメールシステムが高速に検索するために使われます。アクセステーブル を 変 更 し た 後 は、 イ ン デッ ク スファイルを再構築するために "postmap /etc/postfix/access" コマンドを実行してください。 テーブルが NIS や LDAP、SQL など別の手段で提供される場合も、通常のイ ン デックスファイルと同様の検索がなされます。 代 わりに、パターンが正規表現で与えられる正規表現マップとしてテーブルを 提供したり、検索を TCP ベースのサーバに向けることもできます。この場合、 下 の "正規表現テーブル" や "TCP ベースのテーブル" で述べるように、少し 違った方法で検索がなされます。 大文字・小文字の統一 検索文字列はデータベース検索前に小文字に統一されます。 Postfix 2.3 で は、 検索文字列は regexp: や pcre: など、検索フィールドが大文字と小文字 の両方にマッチするデータベースタイプでは小文字への統一はおこなわれま せ ん。 テーブルの書式 postmap(1) コマンドへの入力の書式は以下の通りです: pattern action pattern がメールアドレスやドメイン、ホストアドレスにマッチすると 、対応する action を実行します。 空行とコメント 空 行や空白だけの行は無視され、行頭の非空白文字が `#' で始まる行 も同様です。 複数行テキスト 論理行は非空白字文字で始まります。空白で始まる行は前の論理行を継 続します。 Eメールアドレスパターン DB や DBM のようなインデックスファイル、もしくは NIS, LDAP, SQL のよう なネットワーク上のテーブルからの検索では、パターンは次に示す順で試行 さ れます: user@domain 特定のメールアドレスにマッチします。 domain.tld Eメールアドレスのドメイン部分として domain.tld にマッチします。 smtpd_access_maps が Postfix parent_domain_matches_subdomains 設 定に挙げられている時だけはパターン domain.tld はサブドメインにも マ ッチします (これはいくつかのバージョンの Postfix でデフォルト であることに注意してください)。それ以外の時にサブドメインにマ ッ チするには、 .domain.tld (最初のドットに注意) を指定します。 user@ 特定のユーザ部分を持つ全てのメールアドレスにマッチします。 注意: null 送信者アドレスの検索は一部の形式の検索テーブルで使えません。 デフォルトでは、Postfix は <> をそのようなアドレスの検索キーとして使 い ます。値は Postfix main.cf ファイルの smtpd_null_access_lookup_key パラ メータで指定します。 拡張Eメールアドレス メールアドレスのローカル部分がオプションの受信者デリミタ ( す な わ ち user+foo@domain) を 含 ん で い る と 、検索順序は次のようになります: user+foo@domain, user@domain, domain, user+foo@, および user@。 ホスト名/アドレスパターン DB や DBM のようにインデックス化されたファイルや、NIS や LDAP, SQL のよ う なネットワーク上のテーブルからの検索では、次の検索パターンが次に示す 順で調べられます: domain.tld domain.tld にマッチします。 smtpd_access_maps が Postfix parent_domain_matches_subdomains 設 定に挙げられている時だけはパターン domain.tld はサブドメインにも マッチします。それ以外の時にサブドメイン に マ ッ チ す る に は 、.domain.tld (最初のドットに注意) を指定します。 net.work.addr.ess net.work.addr net.work net 指 定されたIPv4ホストアドレスまたはサブネットワークにマッチしま す。 IPv4ホストアドレスは "." で区切られた4つの10進数オクテッ ト の並びです。 サ ブ ネットワークは、リモートIPv4ホストアドレス文字列から最後の ".octet" をアドレステーブルにマッチするものが見つかるかそれ以 上 できなくなるまで繰り返し切り詰めることでマッチします。 注意1: access マップの情報は不必要なnull文字が取り除かれた、正規 形であるべきです。アドレス情報は "[]" 文字に囲まれていてはいけま せん。 注 意2: network/netmask パターンを指定するには cidr 検索テーブル を使ってください。詳細は cidr_table(5) を参照してください。 net:work:addr:ess net:work:addr net:work net 指定されたIPv6ホストアドレスまたはサブネットワークにマッチ し ま す。 IPv6 ホストアドレスは ":" で区切られた3から8個の16進数オク テットの組の並びです。 サブネットワークは、リモートIPv6ホストアドレス文字列から最 後 の ":octetpair" をアドレステーブルにマッチするものが見つかるかそれ 以上できなくなるまで繰り返し切り詰めることでマッチします。 注意1: アドレスの切り詰めや比較はIPv6ホストアドレスの文字列表 記 で なされます。つまり、すべての ":" サブネットが試されるわけでは ありません。 注意2: access マップの情報は不必要なnull文字が取り除かれた、正規 形であるべきです。アドレス情報は "[]" 文字に囲まれていてはいけま せん。 注意3: network/netmask パターンを指定するには cidr 検索テーブ ル を使ってください。詳細は cidr_table(5) を参照してください。 許可アクション OK パターンにマッチしたアドレス等を許可します。 all-numerical 全てが数字の結 果 は OK と し て 扱 わ れ ま す。 こ の 書 式 はpop-before-smtp のようなアドレスベースの認証スキームによって生 成されます。 拒否アクション Postfixバージョン2.3以降はRFC 3463で定義されている拡張ステータスコー ド を サ ポー ト し ています。以下の text の前にコードが指定されていなけれ ば、Postfixはアクションを拒否した場合には "5.7.1"、アクションを遅延した 場合には "4.7.1" というデフォルトの拡張状態コードを挿入します。以下の " 拡張状態コード" を参照してください。 4NN text 5NN text パ ターンにマッチしたアドレス等を拒否し、3文字の数字のコードとテ キストを返します。4NN は "後でやり直してください" を意味し 、5NN は "再び試さないでください" を意味します。 応答コード "421" により、Postfixはすぐに接続を切ります (Postfixバージョン2.3以降)。 REJECT optional text... パターンにマッチしたアドレス等を拒否します。optional text が指定 されていれば $reject_code optional text... で応答し、指定がな け れば一般的なエラー応答メッセージが生成されます。 DEFER_IF_REJECT optional text... 後の制限の結果が REJECT アクションの場合、要求を遅延します。オプ ショ ン の text が指定されていると、"450 optional text... と応答 し、なければ一般的なエラー応答メッセージを返します。 この機能は Postfix 2.1 以降で使えます。 DEFER_IF_PERMIT optional text... 後の制限の結果が明示的、または間接的に PERMIT アクションの場合、 要求を遅延します。オプションの text が指定されて い る と 、"450 optional text... と応答し、なければ一般的なエラー応答メッセージ を返します。 この機能は Postfix 2.1 以降で使えます。 その他のアクション restriction... 指定された UCE 制限 (permit, reject, reject_unauth_destination 等) を適用します。 DISCARD optional text... 配 送 に 成 功 し た と 主張して、メッセージを静かに破棄します。 optional text が指定されていればそれをログに記録し、指定がなけれ ば一般的なメッセージをログに記録します。 注意: 現在この動作は、メッセージの全ての受信者に影響を与えます。 メッ セー ジ を 完 全 に 捨てず、1つの受信者のみを捨てるのであれ ば、transport(5) テーブルを使ってメールを discard(8) サービス に 送ってください。 この機能は Postfix 2.0 以降で使えます。 DUNNO 検索キーが見つからなかったように見せます。これは Postfix が ( サ ブドメインやネットワークアドレスのサブネットワークのような) 検索 キーの部分文字列を試さないようにします。 この機能は Postfix 2.0 以降で使えます。 FILTER transport:destination メッセージがキューに入った後、メッセージ全体を指定された外部のコ ンテンツフィルタを通して送ります。transport:destination 文 法 は transport(5) マ ニュアルページに書かれています。外部コンテンツ フィルタに関するさらなる情報は Postfix FILTER_README ファイル に あります。 注意: 現在この動作は main.cf content_filter 設定を上書きし、メッ セージの全ての受信者に影響を与えます。 この機能は Postfix 2.0 以降で使えます。 HOLD ptional text... メッセージを hold キューに置きます。誰かが削除するか配送のために 解放するまで、メッセージは hold キューに置かれたままになり ま す 。optional text が指定されていればそれをログに記録し、指定がなけ れば一般的なメッセージをログに記録します。 hold に置かれたメールは postcat(1) コマンドで調べること が で き 、postsuper(1) コマンドで破棄したり解放できます。 注意: $maximal_queue_lifetime や $bounce_queue_lifetime のかなり の割合、もしくはそれ以上の間 hold に留め置かれたメールを解放する には "postsuper -r" を使ってください。 注意: 現在この動作は、メッセージの全ての受信者に影響を与えます。 この機能は Postfix 2.0 以降で使えます。 PREPEND headername: headervalue メッセージの前に指定されたメッセージヘッダを付加します。このアク シ ョンが複数回使われると、最初に付加されたヘッダは2番目などのヘ ッダの前に現れます。 注意: このアクションは複数行のメッセージヘッダをサポートしていま せん。 注意: このアクションはメッセージの内容を受け取る前に使われなけれ ばいけません; つまり smtpd_end_of_data_restrictions では使えませ ん。 この機能はPostfix 2.1以降で使えます。 REDIRECT user@domain メッセージがキューに入った後で、意図された受信者の代わりに指定さ れたアドレスにメッセージを送ります。 注意: この動作は FILTER アクションを上書きし、現在はメッセージの 全ての受信者に影響を及ぼします。 WARN optional text... ク ライアント情報や、もしあれば heloや送信者、受信者、プロトコル 情報とともに、optional text をつけてログに警告を記録します。 この機能は Postfix 2.1 以降で使えます。 拡張状態コード Postfix バージョン2.3以降は、RFC 3463に定義されている拡張状態コードをサ ポートしています。アクセステーブルで拡張状態コードが指定されている と、 コー ド は 修 正 されることがあります。同じアクセステーブルを client や helo、sender、recipient access制限で使うと、以下の書き換えが必要とな り ます; これらはPostfixがMAIL FROM や RCPT TO、その他のSMTPコマンドに応答 するかどうかに関係なく起こります。 o 送信者アドレスが REJECT アクションにマッチする と、Postfix SMTP サーバは受信者DSN状態 (例えば 4.1.1-4.1.6) を対応する送信者DSN状 態に書き換え、またその逆も起こります。 o 非アドレス情報 (HELOコマンドの引数やクライアントホスト名/アド レ スのような) が REJECT アクションにマッチすると、Postfix SMTPサー バは送信者もしくは受信者DSN状態を一般の非アドレスDSN状態 (例えば 4.0.0) に書き換えます。 正規表現テーブル このセクションではテーブルが正規表現形式で与えられた際にどのようにテ ー ブ ル検索が変化するかを記述しています。正規表現検索テーブルの文法につい ては、regexp_table(5) もしくは pcre_table(5) を参照してください。 それぞれのパターンは検索される文字列全体に適用される正規表現です。場 合 に よって、文字列はクライアントのホスト名全体であったり、クライアントの IP アドレス全体、もしくはメールアドレス全体になったりします。従って、親 ドメインや親ネットワーク検索が行なわれませんし、 user@domain メールアド レスは user@ と domain という構成要素に分割されたり、user+foo が user と foo に分割されたりしません。 パ ターンは検索文字列にマッチするまで、テーブルに指定された順で適用され ます。 アクションはインデックス化されたファイル検索と同様であり、それに加え て $1, $2 などをパターンのカッコで括られた部分文字列に書き換えることが可能 です。 TCP ベースのテーブル この章は検索が TCP ベースのサーバに向けられたときに、テーブル検索がどの ように変わるかを記述しています。TCP クライアント/サーバ検索プロトコルの 記 述は tcp_table(5) を参照してください。この機能はPostfixバージョン2.3 以前では使えません。 ど の検索操作も問い合わせ文字列全体を一度だけ使います。アプリケーション によっては、文字列はクライアントのホスト名全体やクライアントの IP ア ド レ ス全体、メールアドレス全体となります。つまり、親ドメインや親ネットワ ーク検索が実行することはできず、 user@domain メールアドレスが user@ や domain といった構成要素に分解されたり、user+foo が user と foo に分解さ れることはありません。 アクションはインデックス化されたファイル検索の場合と同じです。 例 以下の例ではインデックス化されたファイルを使っているため、テーブルエ ン トリの順番は問題にしません。この例はアドレス 1.2.3.4 にあるクライアント によるアクセスを許可し、その他の 1.2.3.0/24 にあるクライアント全てを 拒 否します。hash 検索テーブルの代わりに dbm を使うシステムもあります。 あ な た のシステムで Postfix がサポートしている検索テーブルの種類を知るに は、"postconf -m" コマンドを使います。 /etc/postfix/main.cf: smtpd_client_restrictions = check_client_access hash:/etc/postfix/access /etc/postfix/access: 1.2.3 REJECT 1.2.3.4 OK ファイルの編集後は "postmap /etc/postfix/access" コマンドを 実行してください。 バグ テーブルフォーマットは慣例的な引用符を理解しません。 関連項目 postmap(1), 検索テーブルの生成 smtpd(8), SMTP サーバ postconf(5), 設定パラメータ README ファイル SMTPD_ACCESS_README, ビルトイン SMTP サーバアクセス制御 DATABASE_README, Postfix 検索テーブルの概要 ライセンス The Secure Mailer license はこのソフトウェアと一緒に配布されなければ い けません。 作者 Wietse Venema IBM T.J. Watson Research P.O. Box 704 Yorktown Heights, NY 10598, USA ACCESS(5)