sendmail − 電子メール配送デーモン |
sendmail [flags] [address
...] |
sendmail はメッセージを一人または複数の受け手 (recipient) に送ります。 必要ならばインターネットワークを通してメッセージを正しい場所に転送し ま す。 sendmail はユーザインタフェースとして使われることは考慮されていません。 ユーザにとって使いやすいフロントエンドは別のプログラムで提供されま す。 sendmail は、あらかじめメールとして整形されたメッセージを配送するためだ けに使われます。 引数を指定せずに起動すると、 sendmail は標準入力をファイルの終端ま で、 ま た は ‘.’だけを含む行まで読み込み、そこで確認したメッセージのコピー を、列挙されたアドレスに送ります。アドレスの文法や内容にもとづいて経 路 に使用するネットワークを決定します。 ロー カルアドレスは、あるファイルの中を検索して適当なエイリアスを行いま す。先頭にバックスラッシュ ‘\’ のついたアドレスについては、エイリアスは 行 なわれません。 8.10 から、送り手はエイリアス展開の対象に含まれるよう になりました。つまり、‘john’ が ‘group’ にメールを送る際に、 ‘john’ が ‘group’ に 含まれているならば、送ったメッセージは ‘john’ にも送られま す。 |
パラメータ |
−Ac |
動作モードが最初のメール送信依頼であることを示していない場 合でも、 submit.cf を使用します。 |
||
−Am |
動作モードが最初のメール送信依頼であることを示している場合 でも、 sendmail.cf を使用します。 |
||
−Btype |
ボディのタイプを type に設定します。現在有効 な の は、 7BIT か 8BITMIME です。 |
||
−ba |
ARPANET モードに移行します。すべての入力行は CR-LF で終わ らなければならず、すべてのメッセージの末尾には CR-LF がつ き ま す。また、‘‘From:’’ と ‘‘Sender:’’ フィールドは送り手の名前とし てチェックされます。 |
||
−bd |
デーモンモードで実行します。 sendmail は fork を行い、バッ ク グラウンドで動作し、ソケット番号 25 で SMTP コネクションを待 ちます。通常このモードは、 /etc/rc から実行されています。 |
||
−bD |
フォアグラウンドで動作する以外は −bd と同じです。 |
||
−bh |
継続的なホスト状況データベースの現在の値を表示します。 |
||
−bH |
継続的なホスト状況データベースから期限切れのエントリを抹消 します。 |
||
−bi |
エイリアスデータベースを初期化します。 |
||
−bm |
普通にメールを配送します(デフォルト)。 |
||
−bp |
メールキューのリストを表示します。 |
||
−bP |
キューの中のエントリ数を表示します。共有メモリサポート付き の場合のみ、使用可能です。 |
||
−bs |
標準入出力で RFC821 にもとづいた SMTP プロトコルを使 い ま す。このフラグは、 −ba フラグのうち SMTP 互換の全ての操作を含み ます。 |
||
−bt |
アドレスのテストモードで起動します。このモードは対話モード で ア ド レスを入力し、処理の過程を表示します。設定ファイルをデ バッグするのに使います。 |
||
−bv |
名前のチェックだけを行います。メッセージの収集や配送は行い ま せん。ベリファイモードは、ユーザやメーリングリストが有効かど うかを確認するために使います。 |
||
−Cfile |
別の設定ファイルを使います。 sendmail は、別の設定 ファ イ ルを使用する場合には、拡張された権限 (ユーザ ID 設定またはグ ループ ID 設定) を断念します。 |
−D logfile |
デバッグ出力を標準出力の代わりに指定されたログファイルへ出力 し ます。 |
−dcategory.level... |
category のデバッグフラグを level
に設定します。 category は整
数またはトピックを指定する名前であり、 level
は希望するデバッグ 出
力のレベルを指定する整数です。一般的に、レベルが高いほど出力
が多くなります。コンマで分けることで複数のフラグを指定 で き
ま す。 デ バッ グ カ テゴリの数値の表は sendmail
ソースディストリ ビューションの TRACEFLAGS
ファイルで見つけることができます。 |
−Ffullname |
送り手のフルネームを設定します。 |
−fname |
‘‘from’’ に入る名前(つまり、エンベロープ 中 の 送 り 手 (envelope sender) の名前です)を設定します。最初の送信依頼の間に From: ヘッダが失われている場合、このアドレスは From: ヘッダの中 で も 用 いられる場合があります。エンベロープ中の送り手アドレス は、メッセージ伝送状態の通知の受け 手 と し て 用 い ら れ、 ま た、Return-Path: ヘッダにも現れます。 −f は、‘‘trusted’’ なユー ザ (普通は root, daemon, network です) が使うか、送り手が自分自 身 の名前を指定して使う場合のみ指定することができます。それ以外 の場合、X-Authentication-Warning ヘッダがメッセージに付加されま す。 |
|
−G |
メッセージのリレー (ゲートウェイ) 送信。例えば、 rmail が sendmail を呼ぶときがそうです。 |
|
−hN |
ホップカウントを N に設定します。ホップカウントは、メー ル が 処理されるたびに増えていきます。ホップカウントが上限に達した とき、メールは「エイリアスがループしている」という旨 の エ ラー メッ セージといっしょに送り返されます。もしこのフラグが指定され なければ、メッセージのなかの ‘‘Received:’’ 行がカウントさ れ ま す。 |
|
−i |
入力されるメッセージ中の ‘.’ だけを含む行を無視します。この フラグは、データをファイルから読み込むような場合に使用する必 要 があります。 |
|
−L tag |
syslog メッセージ中で使われる識別子を、指定した tag に 設定します。 |
|
−N dsn |
配送状況の通知条件を dsn に設定しま す。 dsn に は、 ‘never’ (何も通知しない)または、コンマで区切った、 ‘failure’ ( 配送が失敗した場合に通知する) ‘delay’ (配送が遅れた場合に通知す る) ‘success’ (配送が正常に行われた場合に通知する) の組み合わせ を指定する事ができます。 |
|
−n |
エイリアスを行いません。 |
−O option=value |
オプション option を、指定した value に設定します。この形式では 長いオプション名が使用されます。詳しくは後に記述します。 |
−ox value |
オ プション x を、指定した value に設定します。この形式では、一 文字のオプション名しか使用できません。短いオプション名につい て は こ の マ ニュアルには記述されていません。詳しくは、 Sendmail Installation and Operation Guide を参照して下さい。 |
−pprotocol |
メッセージを受け取るために利用するプロトコル名を設定します。 設 定 できるのは、‘‘UUCP’’ のようなプロトコル名だけかプロトコル+ホ スト名、たとえば ‘‘UUCP:ucbvax’’ などです。 |
−q[time] |
キューのなかにあるメッセージを指定した時間間隔で処理 し ま す。 time を省略した場合は、キューの内容を一度だけしか処理しません。 time は、秒を表す ‘s’、分を表す ‘m’ (デフォルト)、時間 を 表 す ‘h’、 日 を 表す ‘d’、週を表す ‘w’ の単位を付けた数字で指定しま す。たとえば、 ‘−q1h30m’ や ‘−q90m’ は、タイムアウトを 1 時 間 30 分に設定します。デフォルトでは、 sendmail はデーモンとして バックグラウンドで実行されます。このオプションは、問題なく −bd と共に指定可能です。 |
−qp[time] |
−qtime と似ていますが、sendmail は、キューを処理する子プロセス を定期的に fork するのではなく、キューの処理とスリープを交互 に 行う 1 個の永続的な子プロセスを fork します。スリープ時間は引数 で指定します。デフォルトは 1 秒です。直前のキュー実行にお い て キューが空だった場合、プロセスは常に最低 5 秒はスリープします。 |
−qf |
キューに保存されているメッセージを 1 度だけ処理します。 こ の際、fork() せずに、フォアグラウンドで実行します。 |
−qG name |
name という名前のキューグループ中のジョブのみ処理します。 |
−q[!]Isubstr |
キュー ID の文字列に substr が含まれるジョブのみを処理します。 ! が指定されると、その逆となります。 |
−q[!]Qsubstr |
隔離された理由の文字列に substr が含まれる隔離されたジョブの み を処理します。 ! が指定されると、その逆となります。 |
−q[!]Rsubstr |
受 け手のリストの文字列に substr が含まれるジョブのみを処理しま す。 ! が指定されると、その逆となります。 |
−q[!]Ssubstr |
送り手の文字列に substr が含まれるジョブのみを処理し ま す。 ! が指定されると、その逆となります。 |
−Q[reason] |
指 定された理由で通常のキューの要素を隔離します。理由が指定され なければ、隔離されたキューの要素の隔離を止めます。上述の要素 の 選択処理のいずれかと合わせてのみ使うべきです。 |
−R return |
メッ セージがバウンスした時に返送されるメッセージの量を設定しま す。 return パラメータには、メッセージ全体を返送 す る 場 合 は ‘full’ を、ヘッダのみを返送する場合は ‘hdrs’ を指定します。 |
−rname |
−f フラグと同じですが、古い形式です。 |
||
−t |
受け手をメッセージから読み取ります。To:, Cc:, Bcc: フィール ドが受け手のアドレスとして読み込まれます。Bcc: フィールドはメッ セージの転送前に削除されます。 |
−V envid |
オ リジナルのエンベロープ ID を設定します。これは、DSN をサポー トするサーバ間では SMTP 上を伝達し、 DSN に従ったエラーメッセー ジの中で返送されます。 |
−v |
詳細モードに移行します。エイリアスの展開などが報告されま す。 |
−X logfile |
指定された logfile に、メーラに出入りする情報すべてを記録 し ま す。 メー ラ をデバッグする際の最後の手段としてのみ使ってくださ い。非常に大量の情報があっという間に記録されます。 |
−− |
コマンドフラグ処理を停止し、残りの引数をアドレスとして使 用 します。 |
オプション |
sendmail には、設定することができる多くの処理オプションがあります。通 常、これらのオプションはシステム管理者のみが使います。オプションは、 コ マンドラインから −o フラグを使って (短いオプション名で) 指定したり、 −O フラグを使って (長いオプション名で) 指定したり、設定ファイルから指定 す る ことができます。ここに記述しているのは部分的なもので、コマンド行から 指定する場合に便利な物だけを、長いオプション名で示しています。完全な リ スト (と詳細) は、 Sendmail Installation and Operation Guide を参照して ください。オプションには以下の物があります。 |
AliasFile=file |
別のエイリアスファイルを使います。 |
HoldExpensive |
接続するのに時間がかかるホストと接続するときは、すぐに 接 続 せ ず、リクエストはキューに入れられます。 |
CheckpointInterval=N |
sendmail が、 N 個の配送に成功するたびにキューファイルにチェッ クポイントを設定します(デフォルトは 10 個です)。これによっ て、 シ ステムのクラッシュによって長いメーリングリストの配送が中断さ れたときでも、再開時に同じ人に重複して配送されることを 防 ぎ ま す。 |
DeliveryMode=x |
配 送モードを x に設定します。配送モードには ‘i’ 対話的(同期的) 配送モード、 ‘b’ バックグラウンド(非同期的)配 送 モー ド、 ‘q’ キュー モード(実際の配送は、キューが実行されるときに行われる)、 ‘d’ 延期モード( −D オプションで指定されたマップ (デフォルトはホ ストマップ) に対しデータベースの検索が行われない以外は ‘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 |
コネクションキャッシュのタイムアウトを設定します。 |
ConnectionCacheSize=N |
コネクションキャッシュのサイズを設定します。 |
LogLevel=n |
ログレベルを設定します。 |
MeToo=False |
エイリアスに自分自身が含まれていても、‘‘me’’(送り手自身)には 送 りません。 |
CheckAliases |
newaliases(1) コマンドの実行の際、エイリアスの右辺(エイリアスの 値)の有効性をチェックします。 |
OldStyleHeaders |
このオプションが設定されていれば、メッセージが古いスタ イ ル の ヘッ ダを持つことがあることを意味します。このオプションが設定さ れていなければ、このメッセージが新しいスタイルを持っているこ と が保証されます(2 つのアドレスの間はスペースのかわりにコンマで区 切られます)。このオプションが設定されていると、ヘッダ の フォー マッ トをたいていの場合に正しく決定する適応アルゴリズムが用いら れます。 |
QueueDirectory=queuedir |
キューメッセージを保存するディレクトリを選択します。 |
StatusFile=file |
指定した名前のファイルに統計情報をセーブします。 |
Timeout.queuereturn=time |
キューのなかの配送されなかったメッセージのタイムアウト時間を 設 定 します。この時間内に(ホストのダウンなどにより)配送が行われな かったときには、失敗した旨のメッセージが送り返されます。デ フォ ルトは 5 日です。 |
UserDatabaseSpec=userdatabase |
セッ トした場合、ユーザデータベースを見て、フォワード情報を得ま す。この方法をエイリアス機構の補助として使用する事ができま す。 こ の方法は、データベースが分配されることを意図している点が異な ります。一方、エイリアスは、そのホストローカルでのみ有効で す。 sendmail が USERDB 付きでコンパイルされていなければ使うことはで きません。 |
ForkEachJob |
キューを処理する間、各ジョブごとに fork を行います。メモリが 少 ないマシンでは便利です。 |
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 に設定します。 |
エイリアスのなかで最初の文字が ‘|’ で始まるものは、メールの内容をパイプ でコマンドに送るものと解釈されます。 sendmail に引数の間から空白文字 を 削除させないようにする場合は名前をクォートする (" でくくる)必要がありま す。以下に、例を示します: |
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 は メー ル キュー の内容を表示します。 hoststat というコマンドで実行される と、 sendmail は、継続的なホスト状態データベースの内容を表示 し ま す。 purgestat というコマンドで実行されると、 sendmail は、継続的なホスト状 態データベースから期限切れのエントリを抹消します。 smtpd というコマンド で 実 行されると、 −bd オプションを指定されたの同じように、 sendmail は デーモンとして動作します。 |
sendmail は、多くの問題の原因だと責められることがよくありますが、実際の と ころ、それらの問題は、ディレクトリのモードが過剰に許可された状態であ るなど、他の問題に起因するものです。このため、 sendmail は、シ ス テ ム ディ レクトリとファイルのモードをチェックし、それらディレクトリ、ファイ ルが信頼するに足るものかどうかを決定します。 DontBlameSendmail オプショ ン を設定することにより、このチェックをオフにし、システムのセキュリティ を低下することもできますが、基本的には、パーミッションの問題は修正さ れ ねばなりません。詳細な情報は、 http://www.sendmail.org/tips/DontBlameSendmail.html を参照して下さい。 |
/etc/mail/sendmail.cf そ れ 自 身を除き、以下のファイルのパスはすべて /etc/mail/sendmail.cf の内部で指定されています。以下の値は概略に過ぎ ま せん。 |
/etc/mail/aliases |
エイリアス名の生データ |
/etc/mail/aliases.db |
エイリアス名のデータベース |
/etc/mail/sendmail.cf |
設定ファイル |
/etc/mail/helpfile |
ヘルプファイル |
/etc/mail/statistics |
統計情報ファイル |
/var/spool/mqueue/* |
テンポラリファイル |
mail(1), syslog(3), aliases(5), mailaddr(7), mail.local(8), rc(8), rmail(8) DARPA Internet Request For Comments RFC819, RFC821, RFC822. Sendmail Installation and Operation Guide, No. 8, SMM. http://www.sendmail.org/ |
sendmail コマンドは 4.2BSD から登場しました。 |