SENDMAIL(8)

名称
sendmail - 電子メール配送デーモン

書式
sendmail [flags] [address ...] newaliases mailq [-v]

解説
sendmail はメッセージを他の人に送ります。必要ならばネットワークを 通してメッセージを正しい場所に転送します。

ただし、 sendmail はユーザインタフェースとして使われることは考慮さ れていません。ユーザにとって使いやすいフロントエンドは別のプログラムで 提供されます。 sendmail は、あらかじめメールとして整形されたメッセージ を配送するためだけに使われます。

sendmail を引数を指定せずに起動すると、 sendmail は標準入力を EOF (エンド・オブ・ ファイル)か `.'だけを含む行まで読み込み、メッセージのなかに記述されている アドレスにメッセージのコピーを送ります。アドレスの文法や内容にもとづいて 経路に使用するネットワークを決定します。

ローカルアドレスは、ファイルの中を検索して適当なエイリアスを行います。 先頭にバックスラッシュ `\' のついたアドレスについては、エイリアスは 行なわれません。 通常、送り手はエイリアスの対象に含まれません。つまり、もし `john' が `group' にメールを送って、 `john' が `group' に 含まれている場合、送ったメッセージは `john' には送られません。

  パラメータ

-Btype
    ボディのタイプを type に設定します。現在有効なのは、 `7BIT' か `8BITMIME' です。

-ba ARPANET モードに移行します。すべての入力行は CR-LF で終わらなければならず、 すべてのメッセージの末尾には CR-LF がつきます。また、``From:'' と ``Sender:'' フィールドは送り手の名前としてチェックされます。

-bd デーモンモードで実行します。バークレー IPC が必要です。 sendmail は fork(2) を行い、バックグラウンドで動作し、ソケット番号 25 で SMTP コネクションを 待ちます。通常このモードは、 /etc/rc から実行されています。

-bD フォアグラウンドで動作する以外は -bd と同じです。

-bh 現在のホストの状況のデータベースを表示します。

-bH 現在のホストの状況のデータベースをパージします。

-bi エイリアスデータベースを初期化します。

-bm 普通にメールを配送します(デフォルト)。

-bp メールキューのリストを表示します。

-bs 標準入出力で RFC821 にもとづいた SMTP プロトコルを使います。この フラグは、 -ba フラグのうち SMTP 互換の全ての操作を含みます。

-bt アドレスのテストモードで起動します。このモードは対話 モードでアドレスを入力し、処理の過程を表示します。設定ファイル をデバッグするのに使います。

-bv 名前のチェックだけを行います。メッセージの収集や配送は行い ません。ベリファイモードは、ユーザやメーリングリストが有効かどうかを確認する ために使います。

-Cfile
    別の設定ファイルを使います。 sendmail は、別の設定ファイル を使用する場合は root として実行することはできません。

-dX デバッグ値を X に設定します。

-Ffullname
    送り手のフルネームを設定します。

-fname
    ``from'' に入る名前(つまり、送り手の名前です)を設定します。 -f は、``trusted''なユーザ(普通は root, daemon, network です)が使うか、 送り手が自分自身の名前を指定して使う場合のみ指定することができます。

-hN ホップカウントを N に設定します。ホップカウントは、 メールが処理されるたびに増えていきます。ホップカウントがリミットになった とき、メールは「エイリアスがループしている」という旨のエラーメッセージと いっしょに送り返されます。 もしこのフラグが指定されなければ、メッセージのなかの ``Received:'' 行がカウント されます。

-i  入力されるメッセージ中の `.' だけを含む行を無視します。 このフラグは、データをファイルから読み込むような場合に使用する必要があります。

-N dsn
    配送状況の通知条件を dsn に設定します。 dsn には、 ‘never’ (何も通知しない)または、コンマで区切った、 ‘failure’ (配送が失敗した場合に通知する) ‘delay’ (配送が遅れた場合に通知する) ‘success’ (配送が正常に行われた場合に通知する) の組み合わせを指定する事ができます。

-n  エイリアスを行いません。

-O option=value
    オプション option を、指定した value に設定します。この形式では長いオプション名が使用されます。 詳しくは後に記述します。

-ox value
    オプション x を、指定した value に設定します。 この形式では、一文字のオプション名しか使用できません。 短いオプション名についてはこのマニュアルには記述されていません。 詳しくは、 を参照して下さい。

-pprotocol
    メッセージを受け取るのに利用するプロトコル名を設定します。 設定できるのは、 ``UUCP'' のようなプロトコル名だけかプロトコル+ホスト名、たとえば ``UUCP:ucbvax'' などです。

-q[time]
    キューのなかにあるメッセージを処理する間隔を設定します。 time を省略した場合は、キューの内容を一度だけしか処理しません。 time は、 ‘s’ (秒)、 ‘m’ (分)、 ‘h’ (時間)、 ‘d’ (日)、 ‘w’ (週)の単位を付けた数字で指定します。 たとえば、 ‘-q1h30m’ や ‘-q90m’ は、タイムアウトを 1 時間 30 分に設定します。 time が指定されると、 sendmail はデーモンとしてバックグラウンドで 実行されます。 デーモンとして実行させる際には、同時にオプション -bd を つけておくほうが安全です。

-qIsubstr
    キュー ID の文字列に substr が含まれるジョブのみを処理します。

-qRsubstr
    受信者のリストの文字列に substr が含まれるジョブのみを処理します。

-qSsubstr
    送信者の文字列に substr が含まれるジョブのみを処理します。

-R return
    メッセージがバウンスした時に返送されるメッセージの量を設定します。 return パラメータには、メッセージ全体を返送する場合は ‘full’ を、ヘッダのみを返送する場合は ‘hdrs’ を指定します。

-rname
    -f フラグと同じですが、古い形式です。

-t  受信者をメッセージから読み取ります。To:, Cc:, Bcc: フィールドが受信者 のアドレスとして読み込まれます。Bcc: フィールドはメッセージの転送前に 削除されます。

-U  最初の(ユーザからの)発送である事を示します。 このフラグは、 Mail や exmh の様なユーザエージェントから呼び出す場合は 必ず 指定する必要があり、 rmail 等のネットワーク配送エージェントから呼び出す場合は、 絶対に 指定してはいけません。

-V envid
    オリジナルのエンベロープ ID を設定します。 これは、DSN をサポートするサーバ間では SMTP 上を伝達し、 DSN に従ったエラーメッセージの中で返送されます。

-v  詳細モードに移行します。展開されるエイリアスなどが報告されます。

-X logfile
    指定された logfile に、メーラに出たり入ったり するすべてメッセージに関する情報を記録します。メーラをデバッグする際の 最後の手段としてのみ使ってください。非常に大量の情報があっという間に記録 されます。

  オプション
sendmail には、設定することができる多くの処理オプションがあります。 通常、これらのオプションはシステム管理者のみが使います。 オプションは、コマンドラインから -o フラグを使って(短いオプション名で)指定したり、 -O フラグを使って(長いオプション名で)指定したり、 設定ファイルから指定することができます。ここに記述して いるのは部分的なもので、コマンド行から指定する場合に便利な物だけを、 長いオプション名で示しています。完全なリスト(と詳細)は、 を参照してください。 オプションには以下の物があります。

AliasFile=file
    別のエイリアスファイルを使います。

HoldExpensive
    接続するのに時間がかかるホストと接続するときは、 すぐに接続せず、リクエストはキューに入れられます。

CheckpointInterval=N
    sendmail が、 N 個の配送に成功するたびにキューファイルに チェックポイントを設定します(デフォルトは 10 個です)。これによって、 システムのクラッシュによって長いメーリングリストの配送が中断 されたときでも、再開時に同じ人に重複して配送されることを防ぎます。

DeliveryMode=x
    配送モードを x に設定します。配送モードには ‘i’ 対話的(同期的)配送モード、 ‘b’ バックグラウンド(非同期的)配送モード、 ‘q’ キューモード(実際の配送は、キューが実行されるときに行われる)、 ‘d’ 延期モード(データベースの検索(特に DNS や NIS )が行われない以外は ‘q’ と同じ)があります。

ErrorMode=x
    エラー処理をモード x に設定します。 ‘m’ はエラーメッセージを送り返します。 ‘w’ はエラーメッセージを送り手の端末に書き出します (送り手がログインしていなければ、メールを返します)。 ‘p’ は、エラーメッセージを端末に表示します(デフォルト)。 ‘q’ は、エラーメッセージを捨てます(exit コードだけを返します)。 ‘e’ は、BerkNet 用に特別処理をします。 もし、モード ‘m’ や ‘w’ を使っている場合に、エラーとなったメッセージが エラーメールとして送り返されず、送り手が sendmail を実行している マシン上のユーザならば、 メッセージのコピーは送り手のホームディレクトリにある dead.letter に追加されます。

SaveFromLine
    メッセージのはじめに UNIX-style From 行を残します。

MaxHopCount= N
    メールがループしていると判断されない、最大のホップ数を 指定します。

IgnoreDots
    `.' だけを含む行をメッセージの終わりとして解釈しません。

SendMimeErrors
    エラーメッセージをMIMEフォーマットで送り返します。 設定されていない場合は、DSN (Delivery Status Notification: 配送状況通知) SMTP 拡張は無効になります。

ConnectionCacheTimeout=timeout
    コネクションキャッシュの timeout を設定します。

ConnectionCacheSize=N
    コネクションキャッシュのサイズを N に設定します。

LogLevel=n
    ログレベルを n にします。

MeToo
    エイリアスに自分自身が含まれている場合、``me''(送り手自身)にも送ります。

CheckAliases
    newaliases(1) コマンドの実行の際、 エイリアスの右側の項目(エイリアスの値)を有効性をチェックします。

OldStyleHeaders
    もしオプションが設定されていれば、メッセージが古いスタイルのヘッダ を持つことがあることを意味します。 このオプションが設定されていなければ、このメッセージが新しい スタイルを持っていることが保証されます(2 つのアドレスの間はスペースのかわり にコンマで区切られます)。このオプションが設定されていると、大抵の場合、 ヘッダのフォーマットを正しく決定するためのアルゴリズムが用いられます。

QueueDirectory=queuedir
    キューメッセージを保存するディレクトリを選択します。

StatusFile=file
    指定した名前のファイルに統計情報をセーブします。

Timeout.queuereturn=time
    キューのなかの配送されなかったメッセージのタイムアウト時間を設定します。 この時間内に(ホストのダウンなどにより)配送が行われなかったときには、 失敗した旨のメッセージが送り返されます。デフォルトは 5 日です。

UserDatabaseSpec=userdatabase
    このオプションが設定されると、情報を送る際にユーザデータ ベースに対する問い合わせが行われます。 この方法をエイリアス機構の補助として使用する事ができます。ただし、 エイリアスはそのホストローカルでのみ有効なので、データベースが意図的に 分散されている場合は使用できません。 sendmail が USERDB 付きでコンパイルされていなければ使うことはできません。

ForkEachJob
    キューを処理する間、 fork(2) を行います。メモリが少ないマシン では便利です。

SevenBitInput
    到着するメッセージを 7 ビットにします (8 ビット目は落します)。

EightBitMode=mode
    8 ビットの入力を 7 ビットの宛先へ送る場合の処理方法を mode に設定します。 処理方法には、 m (mime 化) 7 ビット MIME 形式へ変換、 p (パス) 8 ビットのまま配送(プロトコルには違反します)、 s (厳密) メッセージをバウンス、 があります。

MinQueueAge=timeout
    配送の試行の間、ジョブがキューに蓄積される時間を設定します。

DefaultCharSet=charset
    特に指定されていない場合に、8 ビットのデータである事を示す ラベルとして使用されるデフォルトのキャラクタを設定します。

DialDelay=sleeptime
    コネクションの確立が失敗した場合に、再試行までに sleeptime だけスリープします。オンデマンドでダイアル接続するサイトでの使用に便利です。

NoRecipientAction=action
    受信者ヘッダ (To: Cc: あるいは Bcc:) がない場合の動作を action に設定します。 none メッセージを変更しない、 add-to To: ヘッダにエンベロープで指定された受信者を加える、 add-apparrently-to Apparrently-To: ヘッダにエンベロープで指定された受信者を加える、 add-bcc 空の Bcc: ヘッダを加える、 add-to-undisclosed ‘To: undisclosed-recipients:;’ というヘッダを加える、という動作が指定できます。

MaxDaemonChildren=N
    待ち受け SMTP デーモンが同時に動作できる子プロセスの最大数を N に設定します。

ConnectionRateThrottle=N
    SMTP ポートへの 1 秒当りの最大コネクション数を N に設定します。

エイリアスのなかで最初の文字が `|' で始まるものは、メールの内容をパイプで コマンドに送るものと解釈されます。引数などをつけるために空白文字が 必要な場合はクォートする (" でくくる)必要があります。以下に、例を示します:

    msgs: "|/usr/bin/msgs -s"

エイリアスには、 “:include:filename” という文法もあります。 sendmail は、 メールの受け手のエイリアスとして、指定されたファイルを読みます。 以下に、例を示します:

    poets: ":include:/usr/local/lib/poets.list"

上記の例の場合は、 /usr/local/lib/poets.list を読み、`poets' のグループの ためのアドレスリストを作ります。

sendmail は、以下に示すような終了コードを返します。これらの コードは、 <sysexits.h> に定義されています。
EX_OK
    すべてのアドレスについて完全に成功しました。
EX_NOUSER
    ユーザ名が認識できません。
EX_UNAVAILABLE
    処理に必要なリソースを得ることができません。
EX_SYNTAX
    アドレスに文法的な間違いがあります。
EX_SOFTWARE
    引数が間違っている等の、内部的なエラーです。
EX_OSERR
    “cannot fork” のような、一時的な OS エラーです。
EX_NOHOST
    ホスト名が認識できません。
EX_TEMPFAIL
    メッセージはすぐには送られませんでしたが、 キューには入れられました。

newaliases というコマンドで実行されると、 sendmail はエイリアス データベースを再構築します。 mailq というコマンドで実行されると、 sendmail はメールキューの内容を表示します。

関連ファイル
/etc/sendmail.cf とデーモンプロセス ID ファイルを除き、以下のファイルのパスはすべて /etc/sendmail.cf 内部で決められています。以下は一例に過ぎません。

/etc/aliases
    エイリアス名の生データ
/etc/aliases.db
    エイリアス名のデータベース
/etc/sendmail.cf
    設定ファイル
/usr/share/misc/sendmail.hf
    ヘルプファイル
/var/log/sendmail.st
    統計情報ファイル
/var/spool/mqueue/*
    テンポラリファイル

関連項目
mail(1), syslog(3), aliases(5), mailaddr(7), mail.local(8), rc(8), rmail(8);

DARPA Internet Request For Comments Sendmail - An Internetwork Mail Router, SMM, No. 9. Sendmail Installation and Operation Guide, SMM, No. 8.

歴史
sendmail コマンドは 4.2BSD から登場しました。