LOCAL(8) LOCAL(8)
名前
local - Postfix ローカルメール配送
書式
local [generic Postfix daemon options]
解説
local(8) デーモンプロセスはPostfixキューマネージャからローカル受信者へ
のメール配送要求を処理します。それぞれの配送要求はキューファイル、送 信
者 アドレス、配送先のドメインまたはホスト、そして 1つもしくはそれ以上の
受信者を指定します。このプログラムは master(8) プロセスマネージャから起
動されることを想定しています。
local(8) デーモンはキューファイルを更新し、受取人を終ったものとしてマー
クするか、キューマネージャに後で再び試行すべきであることを知らせま す。
配送状態のレポートは bounce(8)、defer(8) または trace(8) デーモンの適切
なものに送られます。
システム全体およびユーザレベルのエイリアス
システム管理者は1つもしくはそれ以上のシステム全体に渡る sendmail スタイ
ル の エイリアスデータベースを構成することができます。ユーザは sendmail
スタイルの ~/.forward ファイルを持つことができます。name 宛のメールはエ
イ リアス名、 ~name/.forward の中の配送先、ユーザ name が所有するメール
ボックスに配送されるか、届かないものとして送り返されます。
システム管理者は forward_path 設定パラメータを使って ~/.forward のよ う
なファイルのリストをカンマ/空白で区切って指定することができます。配送時
には、ローカル配送エージェントはファイルが見つかるまでリスト中のそれ ぞ
れのパス名を試行します。
~/..forward ファイルを通した配送は受信者の権限でおこなわれます。すなわ
ち、~/.forward のようなファイルは受信者が読めなければならず、その親ディ
レクトリには受信者が "実行(execute)" パーミションを持つ必要があります。
forward_path パラメータは $user (受信者名)、 $home (受信者のホーム ディ
レ ク ト リ)、$shell ( 受信者のシェル)、$recipient( 完全な受信者アドレ
ス)、$extension (受信者アドレスの拡張部)、$domain (受信者のドメイ ン)、
$local (受信者アドレスのローカル部分全体)、そして $recipient_delimiter
による書き換えに従います。 ${name?value} および ${name:value} の形式 は
$name が定義されている(いない)ときに value に展開されます。シェルやファ
イルシステムで特別な意味を持ち得る文字はアンダースコアで置き換えられ ま
す。 使える文字のリストは forward_expansion_filter 設定パラメータで指定
します。
エ イリアスまたは ~/.forward ファイルは外部コマンドとの連携や目的のファ
イル名、:include: 命令のリストを含むことができます 。 正 確 な 記 述 は
aliases(5) を参照してください。ユーザの持ちます。
あ るアドレスがエイリアスを展開した中に見つかった場合、配送はそれに代わ
ってユーザに対してなされます。ユーザが自分自身の ~/.forward ファイル に
リ ストされているときは、配送は代わりにユーザのメールボックスになされま
す。空の ~/.forward ファイルは転送しないことを意味します。
メールシステムが法外な量のメモリを使用するのを防ぐために、 :include: ま
たは ~/.forward ファイルから読まれた入力レコードは line_length_limit の
長さで切られます。
エイリアスや ~/.forward ファイルなどの展開中、プログラムは配送が重複 す
るのを避けようとします。duplicate_filter_limit 設定パラメータは記憶する
受信者の数を制限します。
メール転送
信頼性のため、転送されたメールは新しいメッセージとして再び送信され、 そ
の 結果それぞれの受信者は別々の配送状態レコードがファイルに記録されます
。
早期にメール転送ループを止めるために、ソフトウェアは最終的なエンベロ ー
プ受信者アドレスを持つ Delivered-To: ヘッダをオプションで付け加えます。
すでに Delivered-To: ヘッダに載っている受信者へのメールが届くと、メッセ
ージはバウンスされます。
メールボックスへの配送
デ フォルトのユーザごとのメールボックスは UNIX メールスプールディレクト
リ内のファイル(/var/mail/user または /var/spool/mail/user) です; 場所は
mail_spool_directory 設定パラメータで指定できます。qmail 互換の maildir
配送をするには、/ で終わる名前を指定します。
または、ユーザごとのメールボックスは home_mailbox 設定パラメータで指 定
さ れた名前のユーザのホームディレクトリ内のファイルにすることもできます
。相対パス名を指定します。 qmail 互換の maildir 配送をするには、/ で 終
わる名前を指定します。
メールボックスへの配送は mailbox_command 設定パラメータで指定される外部
コマンドに委託することができます。コマンドは受信者ユーザの権限で実行 し
ます(例外: セカンダリグループは有効になりません; ルートとして配送する場
合は default_privs の権限で実行します)。
Mailbox 配送は master.cf ファイルで指定されるメッセージ配送の代表的な代
替 方法でしょう。mailbox_transport 設定パラメータは UNIX のパスワードデ
ータベースに名前が見つかるかどうかに関わらず、全てのローカルの受信者 に
対 して使われるメッセージ配送を指定します。 fallback_transport パラメー
タはUNIX パスワードデータベースで見つからない受信者宛のメール配送を指定
します。
UNIX 形式のメールボックス配送では、local(8) デーモ ン は "From sender
time_stamp" エンベロープヘッダ、Postfix に与えられた受信者アドレスを 持
つ X-Original-To: ヘッダ、最終的なエンベロープ受信者アドレスを持つオプ
ションの Delivered-To: ヘッダ、および送信者のエンベロープアドレスを持つ
Return-Path: ヘッダをそれぞれのメッセージの前に付加し、さらに > 文字を
"From " で始まる行の前につけて、空行を加えます。配送が行なわれている 間
は 、メールボックスは排他的にアクセスロックされます。問題があると、メー
ルボックスを元の長さに戻そうと試みます。
maildir 配送の場合は、local デーモンは最終的なエンベロープ受信者アド レ
ス を持つオプションの Delivered-To: ヘッダ、 Postfix に与えられた受信者
アドレスを持つ X-Original-To:、そしてエンベロープ受信者アドレスを 持 つ
Return-Path: ヘッダを前に付加します。
外部コマンドへの配送
allow_mail_to_commands 設定パラメータは外部コマンドへの配送を制限 し ま
す。デフォルトの設定(alias, forward) では :include: ファイル内でコマン
ドへ配送することを禁じています。
オプションで、プロセスのワーキン グ ディ レ ク ト リ は command_execu-
tion_directory で指定されたパスに変更されます (Postfix 2.2以降)。ディレ
クトリの変更に失敗するとメールは遅延されます。
command_execution_directory パラメータの値は $user (受信者名) や $home
( 受信者のホームディレクトリ)、 $shell (受信者のシェル)、$recipient (完
全な受信者アドレス)、 $extension (受信者の拡張アドレス)、$domain (受 信
者 ド メ イ ン)、 $local (受信者アドレスのローカル部分全体)、$recipi-
ent_delimiter の書き換えを受けます。${name?value} や ${name:value} とい
う 書式は $name が定義されているとき (定義されていないとき) に value に
展開されます。シェルやファイルシステムに対して特別な意味を持つ文字は ア
ン ダー スコアで置き換えられます。使える文字のリストは execution_direc-
tory_expansion_filter 設定パラメータで指定されます。
コ マ ンドはできる限り直接実行します。シェル(UNIX システムでは /bin/sh)
による補助はコマンドがシェルのメタ文字 (magic characters)を含んでいる場
合 、もしくはコマンドがシェルビルトインコマンドを呼び出す場合にのみ使わ
れます。
不達状態レポートに含むために取り込まれるコマンド出力(標準出力およびエラ
ー出力)の量は制限されます。コマンドは command_time_limit 秒以内に終了し
ない場合、強制的に終了します。コマンド終了コードは <sysexits.h> で定 義
された慣習に従うことが望まれます。
環 境変数でエクスポートされるメッセージの量は制限されます。シェルで特別
な意味を持ち得る文字はアンダースコアで置き換えられます。使える 文 字 は
command_expansion_filter 設定パラメータで指定します。
SHELL 受信ユーザのログインシェル。
HOME 受信ユーザのホームディレクトリ。
USER 裸の(bare)受信者名。
EXTENSION
オプションの受信者アドレスの拡張部。
DOMAIN 受信者アドレスのドメイン部。
LOG名前
裸の(bare)受信者名。
LOCAL 受信者アドレスのローカル部分全体(@ の左側)。
RECIPIENT
受信者アドレス全体。
SENDER 送信者アドレス全体。
さらにリモートクライアントの情報が以下の環境変数を通して利用可能にな り
ます:
CLIENT_ADDRESS
リ モートクライアントのネットワークアドレス。Postfix 2.2で利用可
能です。
CLIENT_HELO
リモートクライアント EHLO コマンドのパラメータ。Postfix 2.2で 利
用可能です。
CLIENT_HOSTNAME
リモートクライアントのホスト名。Postfix 2.2で利用可能です。
CLIENT_PROTOCOL
リモートクライアントのプロトコル。Postfix 2.2で利用可能です。
SASL_METHOD
リモートクライアントの AUTH コマンドで指定されたSASL認証の方法。
Postfix 2.2で利用可能です。
SASL_SENDER
リモートクライアントの MAIL FROM コマンドで指定されたSASL送信 者
アドレス。 Postfix 2.2で利用可能です。
SASL_USERNAME
リ モー ト ク ライアントのAUTHコマンドで指定されたSASLユーザ名。
Postfix 2.2で利用可能です。
PATH 環境変数は常にシステムに依存するデフォルトのパスにリセットされ、さ
らに export_environment 設定パラメータによって承認された名前の環境変 数
は変更されずにエクスポートされます。
カレントのワークディレクトリはメールキューディレクトリです。
local(8) デーモンは "From sender time_stamp" エンベロープヘッ ダ、Post-
fix に与えられた受信者アドレスを持つ X-Original-To: ヘッダ、および最終
的な受信者のエンベロープアドレスを持つオプションの Delivered-To: ヘッダ
を それぞれのメッセージの前に付け、さらに送信者のエンベロープアドレスを
持った Return-Path: を付けますが、空行は加えません。
外部ファイルへの配送
配 送 フ ォーマットは配送先ファイル名の文法に依存します。デフォルトでは
UNIX 形式のメールボックスフォーマットを使います。 qmail 互換の maildir
配送をするには、/ で終わる名前を指定します。
allow_mail_to_files 設定パラメータは外部ファイルへの配送を制限します。
デフォルトの設定 (alias, forward) では :include: ファイル内でファイルへ
配送することを禁じています。
UNIX 形 式 のメールボックス配送では、local(8) デーモンは "From sender
time_stamp" エンベロープヘッダ、Postfix に与えられた受信者アドレスを 持
つ X-Original-To: ヘッダ、最終的なエンベロープ受信者アドレスを持つオプ
ションの Delivered-To: ヘッダをそれぞれのメッセージの前に付加し、さらに
> 文字を "From " で始まる行の前につけて、空行を加えます。送信者のエンベ
ロープアドレスは Return-Path: ヘッダから得られます。配送先が通常のフ ァ
イ ルであれば、配送中は排他的にアクセスするためにロックします。問題があ
れば、メールボックスを元の長さに戻そうと試みます。
maildir 配送の場合は、local デーモンは 最終的なエンベロープ受信者アドレ
ス を持つオプションの Delivered-To: ヘッダおよび Postfix に与えられた受
信者アドレスを持つ X-Original-To: ヘッダを前に付加します。送信者のエ ン
ベロープアドレスは Return-Path: ヘッダから得られます。
拡張アドレス
オプションの recipient_delimiter 設定パラメータは拡張アドレス部をローカ
ル受信者名から分離する方法を指定します。
例えば、"recipient_delimiter = +" とすると、 name+foo 宛のメールはエ イ
リ ア スの name+foo または エイリアスの name、~name/.forward+foo または
~name/.forward にリストされた配送先、ユーザ name が所有するメールボック
スに配送するか、配送できないとして送り返されます。
いずれの場合も local(8) デーモンは最終的な受信者アドレスを持つ `Deliv-
ered-To:' ヘッダ行をオプションで前に付加します。
配送の権限
外部のファイルや外部コマンドへの配送は、配送がなされたものを受けとっ た
ユーザの権限で実行されます。ユーザがいない場合には、local(8) デーモンは
:include: ファイルやエイリアスデータベースの所有者の権限を使います。 こ
れ らのファイルがスーパーユーザの所有であるときは、配送は default_privs
設定パラメータで指定された権限でおこなわれます。
標準
RFC 822 (ARPA インターネットテキストメッセージ)
診断
問題や処理は syslogd(8) に記録されます。不正なメッセージファイルはキ ュ
ーマネージャが後で corrupt キューに移動させられるようにマークされます。
notify_classes パラメータの設定によっては、ポストマスターにバウンスやそ
の他問題が通知されます。
セキュリティ
local(8) 配送エージェントは 1) プライベートPostfixキューおよび IPCメ カ
ニズムにアクセスする、2) 受信者のふりをして受信者が指定したファイルやコ
マンドに配送するという、二つの個性が必要です。
セキュリティホールを開けてしまうことになりかねないため、 local(8) 配 送
エージェントは alias_maps で $1 などの正規表現の置き換えを許しません。
local(8) は alias_maps の中で proxymap(8) サーバを使うという要求を静か
に無視します。代わりにテーブルを直接オープンし ま す。Postfix バー ジョ
ン2.2より前では、local(8) 配送エージェントは致命的エラーで終了します。
バグ
セ キュリティ上の理由から、外部コマンドや外部ファイルのメッセージ配送状
態はファイルにチェックしません。結果として、たまにプログラムは複数回 コ
マ ンドや外部ファイルに配送するかもしれません。残念なことよりも安全を求
めます。
相互再帰的なエイリアスや ~/.forward ファイルは早期に発見することがで き
ません。生じたメール転送ループは Delivered-To: メッセージヘッダを使うこ
とで止めます。
設定パラメータ
local(8) プロセスは限られた短時間しか動かないため、main.cf への変更は自
動 的に拾われます。この変更を早くしたければ "postfix reload" コマンドを
使ってください。
以下の文章はパラメータの概要のみを提供します。例を含 む 詳 細 は post-
conf(5) を参照してください。
互換性の制御
biff (yes)
ローカル biff サービスを使うかどうか。
expand_owner_alias (no)
対 応 す る "owner-aliasname" エイリアスを持つエイリアス "alias-
name" への配送時に、エンベロープ送信者アドレス と し て "owner-
aliasname" エイリアスを展開したものをセットします。
owner_request_special (yes)
ア ドレスのローカル部分が owner-listname および listname-request
となっているものを特別扱いします: recipient_delimiter が "-" に
なっていても、そのようなアドレスを分割しません。
sun_mailtool_compatibility (no)
古い SUN mailtool 互換機能。
配送方法の制御
local(8) 配送方法の優先度は高いものから低いものへ: aliases、.forward フ
ァ イ ル 、mailbox_transport 、mailbox_command_maps 、 mailbox_command
、home_mailbox 、mail_spool_directory 、 fallback_transport 、 そ して
luser_relay です。
alias_maps ('postconf -d' の出力を参照)
local(8) 配送に使われるエイリアスデータベース。
forward_path ('postconf -d' の出力を参照)
ユーザが指定した配送方法が書かれた .forward ファイルを見つけるた
めの、 local(8) 配送エージェント検索リスト。
mailbox_transport (empty)
UNIX passwd データベースでの有無にかかわらず、全てのローカル受信
者へのメールボックス配送に local(8) 配送エージェントが使う、オプ
ションのメッセージ配送 transport。
mailbox_command_maps (empty)
local(8) メールボックス配送で使われる、受信者ごとの外部コマンド
を持つ、オプションの検索テーブル。
mailbox_command (empty)
メールボックス配送に local(8) 配送エージェントが使う、オプション
の外部コマンド。
home_mailbox (empty)
オプションのメールボックスファイルの local(8) ユーザのホームディ
レクトリからの相対パス名。
mail_spool_directory ('postconf -d' の出力を参照)
local(8) UNIX 形式のメールボックスが置かれるディレクトリ。
fallback_transport (empty)
aliases(5) データベースや UNIX passwd データベースに名前が見つか
ら ない場合に、local(8) 配送エージェントが使う、オプションのメッ
セージ配送 transport。
luser_relay (empty)
知らない local(8) 受信者全ての、オプションの配送先。
Postfix 2.2以降で使えます:
command_execution_directory (empty)
外部コマンドに配送するために、local(8) 配送エージェントのワー ク
ディレクトリ。
メールボックスロック制御
deliver_lock_attempts (20)
メールボックスファイルや bounce(8) ログファイルの排他的ロック を
獲得する試行の最大回数。
deliver_lock_delay (1s)
メ ールボックスファイルや bounce(8) ログファイルの排他的ロックを
獲得する試行間の時間。
stale_lock_time (500s)
古いメールボックスの排他的ロックファイルが取り除かれるまでの時間
。
mailbox_delivery_lock ('postconf -d' の出力を参照)
配送しようとする前に UNIX 形式の local(8) メールボックスにロック
する方法。
リソースおよび速度の制御
command_time_limit (1000s)
外部コマンドへの配送の時間制限。
duplicate_filter_limit (1000)
aliases(5) または virtual(5) エイリアスの展開や showq(8) キュ ー
の表示に対して、アドレス複製フィルタが記憶するアドレスの最大数。
local_destination_concurrency_limit (2)
local メール配送 transport を使った同じ受信者への並列配送の最 大
数 ("local_destination_recipient_limit = 1" の場合)、または同じ
ローカルドメインへの並列配送の最大数 ("local_destination_recipi-
ent_limit > 1" の場合)。
local_destination_recipient_limit (1)
local メール配送 transport を使ったメッセージ配送ごとの、最大の
受信者数。
mailbox_size_limit (51200000)
local(8) の個々のメールボックスまたは maildir の最大サイズ、もし
くはゼロ (制限なし)。
セキュリティ制御
allow_mail_to_commands (alias, forward)
外部コマンドへの local(8) メール配送を制限します。
allow_mail_to_files (alias, forward)
外部ファイルへの local(8) メール配送を制限します。
command_expansion_filter ('postconf -d' の出力を参照)
$mailbox_command の $name 展開で local(8) 配送エージェントが許す
文字を制限します。
default_privs (nobody)
外部ファイルまたはコマンドへの配送で、local(8) 配送エージェン ト
が使うデフォルトの権限。
forward_expansion_filter ('postconf -d' の出力を参照)
$forward_path の $name 展開で local(8) 配送エージェントが許す文
字を制限します。
Postfixバージョン2.2以降で使えます:
execution_directory_expansion_filter ('postconf -d' の出力を参照)
local(8) 配 送 エー ジェントが $command_execution_directory の
$name 展開で許す文字を制限します。
その他の制御
config_directory ('postconf -d' の出力を参照)
Postfix main.cf および master.cf 設定ファイルのデフォルトの場 所
。
daemon_timeout (18000s)
ビルトイン監視タイマーによって終了するまでの、Postfix デーモンプ
ロセスが要求を扱うことができる時間。
export_environment ('postconf -d' の出力を参照)
Postfix プロセスが非 Postfix プロセスに渡す環境変数のリスト。
ipc_timeout (3600s)
内部通信チャネルを使った情報の送受信の時間制限。
local_command_shell (empty)
local(8) が非 Postfix コマンドに配送する際の、オプションのシェル
プログラム。
max_idle (100s)
Postfix デーモンプロセスが終了するまでに次のサービス要求を待つ最
大時間。
max_use (100)
Postfix デーモンプロセスが終了するまでの接続要求の最大数。
prepend_delivered_header (command, file, forward)
Postfix local(8) 配送エージェントが Delivered-To: メッセージヘッ
ダを前置する、メッセージ配送の場面。
process_id (read-only)
Postfix コマンドまたはデーモンプロセスのプロセス ID。
process_name (read-only)
Postfix コマンドまたはデーモンプロセスのプロセス名。
propagate_unmatched_extensions (canonical, virtual)
検索キーから検索結果へと拡張アドレスをコピーするアドレス検索テー
ブル。
queue_directory ('postconf -d' の出力を参照)
queue_file_attribute_count_limit (100)
Postfix キューファイルに格納される (name=value) 属性の最大数。
recipient_delimiter (empty)
ユーザ名と拡張アドレス (user+foo) の間の区切り。
require_home_directory (no)
メール配送の試行前に local(8) 受信者のホームディレクトリが存在し
なければならないかどうか。
syslog_facility (mail)
Postfix ロギングの syslog facility 名。
syslog_name (postfix)
例 えば "smtpd" が "postfix/smtpd" となるようにするために syslog
レコードのプロセス名の前に付けられるメールシステムの名前。
ファイル
以下のものは例です; 詳細はシステムによって異なります。
$HOME/.forward, ユーザごとのエイリアシング
/etc/aliases, システム全体のエイリアスデータベース
/var/spool/mail, システムのメールボックス
関連項目
qmgr(8), キューマネージャ
bounce(8), 配送状態レポート
newaliases(1), エイリアスデータベースの生成/更新
postalias(1), エイリアスデータベースの生成/更新
aliases(5), エイリアスデータベースの書式
postconf(5), 設定パラメータ
master(5), 一般的なデーモンオプション
syslogd(8), システムロギング
ライセンス
The Secure Mailer license はこのソフトウェアと一緒に配布されなければ い
けません。
歴史
Delivered-To: メッセージヘッダは Daniel Bernstein による qmail システム
で現れました。
maildir 構造は Daniel Bernstein による qmail システムで現れました。
作者
Wietse Venema
IBM T.J. Watson Research
P.O. Box 704
Yorktown Heights, NY 10598, USA
LOCAL(8)