EN JA
SENDMAIL(8)
SENDMAIL(8) FreeBSD System Manager's Manual SENDMAIL(8)

名称

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

書式

sendmail [ flags] [ address ...]
 
newaliases
 
mailq [ -v]
 
hoststat
 
purgestat
 
smtpd

解説

sendmail は、メッセージを一人または複数の受け手 ( recipient) に送ります。必要ならばインターネットワークを通してメッセージを正しい場所に転送します。

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

引数を指定せずに起動すると、 sendmail は、標準入力をファイルの終端まで、または `.'だけを含む行まで読み込み、そこで確認したメッセージのコピーを、列挙されたアドレスに送ります。アドレスの文法や内容にもとづいて経路に使用するネットワークを決定します。

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

パラメータ

-Ac
動作モードが最初のメール送信依頼であることを示していない場合でも、 submit.cf を使用します。
-Am
動作モードが最初のメール送信依頼であることを示している場合でも、 sendmail.cf を使用します。
-B type
ボディのタイプを 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
名前のチェックだけを行います。メッセージの収集や配送は行いません。ベリファイモードは、ユーザやメーリングリストが有効かどうかを確認するために使います。
-C file
別の設定ファイルを使います。 sendmail は、別の設定ファイルを使用する場合には、拡張された権限 (ユーザ ID 設定またはグループ ID 設定) を断念します。
-D logfile
デバッグ出力を標準出力の代わりに指定されたログファイルへ出力します。
-d category . level...
category のデバッグフラグを level に設定します。 category は、整数またはトピックを指定する名前であり、 level は、希望するデバッグ出力のレベルを指定する整数です。一般的に、レベルが高いほど出力が多くなります。コンマで分けることで複数のフラグを指定できます。デバッグカテゴリの数値の表は、sendmail ソースディストリビューションの TRACEFLAGS ファイルで見つけることができます。
 
オプション -d0.1 は、 sendmail のバージョンとコンパイル時に指定されたオプションを表示します。
 
その他のカテゴリのほとんどは、ソースコードに書かれていますが、 sendmail のソースコードと合わせて使う場合にのみ有用です。
-F fullname
送り手のフルネームを設定します。
-f name
``from'' に入る名前 (つまり、エンベロープ中の送り手 ( envelope sender) の名前です) を設定します。最初の送信依頼の間に From: ヘッダが失われている場合、このアドレスは、From: ヘッダの中でも用いられる場合があります。エンベロープ中の送り手アドレスは、メッセージ伝送状態の通知の受け手として用いられ、また、Return-Path: ヘッダにも現れます。 -f は、``trusted'' なユーザ (普通は、 root, daemon, network です) が使うか、送り手が自分自身の名前を指定して使う場合のみ指定することができます。それ以外の場合、X-Authentication-Warning ヘッダがメッセージに付加されます。
-G
メッセージのリレー (ゲートウェイ) 送信。例えば、 rmailsendmail を呼ぶときがそうです。
-h N
ホップカウントを N に設定します。ホップカウントは、メールが処理されるたびに増えていきます。ホップカウントが上限に達したとき、メールは、「エイリアスがループしている」という旨のエラーメッセージといっしょに送り返されます。もしこのフラグが指定されなければ、メッセージのなかの ``Received:'' 行がカウントされます。
-i
着信メッセージの行で先導するドットを取り除きません、そして、着信メッセージの終わりとしてそれ自体で行のドットを扱いません。このフラグは、データをファイルから読み込むような場合に使用する必要があります。
-L tag
syslog メッセージ中で使われる識別子を、指定した tag に設定します。
-N dsn
配送状況の通知条件を dsn に設定します。 dsn には、 `never' (何も通知しない) または、コンマで区切った、 `failure' (配送が失敗した場合に通知する) `delay' (配送が遅れた場合に通知する) `success' (配送が正常に行われた場合に通知する) の組み合わせを指定する事ができます。
-n
エイリアスを行いません。
-O option= value
オプション option を、指定した value に設定します。この形式では、長いオプション名が使用されます。詳しくは、後に記述します。
-o x value
オプション x を、指定した value に設定します。この形式では、一文字のオプション名しか使用できません。短いオプション名については、このマニュアルには記述されていません。詳しくは、 Sendmail Installation and Operation Guide を参照して下さい。
-p protocol
メッセージを受け取るために利用するプロトコル名を設定します。設定できるのは、``UUCP'' のようなプロトコル名だけかプロトコル+ホスト名、たとえば ``UUCP:ucbvax'' などです。
-q[ time]
キューのなかにあるメッセージを指定した時間間隔で処理します。 time を省略した場合は、キューの内容を一度だけしか処理しません。 time は、秒を表す `s'、分を表す `m' (デフォルト)、時間を表す `h'、日を表す `d'、週を表す `w' の単位を付けた数字で指定します。たとえば、 `-q1h30m' や `-q90m' は、タイムアウトを 1 時間 30 分に設定します。デフォルトでは、 sendmail は、デーモンとしてバックグラウンドで実行されます。このオプションは、問題なく -bd と共に指定可能です。
-qp[ time]
-q time と似ていますが、sendmail は、キューを処理する子プロセスを定期的に fork するのではなく、キューの処理とスリープを交互に行う 1 個の永続的な子プロセスを fork します。スリープ時間は、引数で指定します。デフォルトは、1 秒です。直前のキュー実行においてキューが空だった場合、プロセスは、常に最低 5 秒は、スリープします。
-qf
キューに保存されているメッセージを 1 度だけ処理します。この際、 fork() せずに、フォアグラウンドで実行します。
-qG name
name という名前のキューグループ中のジョブのみ処理します。
-q[ !]I substr
キュー ID の文字列に substr が含まれるジョブのみを処理します。 ! が指定されると、その逆となります。
-q[ !]Q substr
隔離された理由の文字列に substr が含まれる隔離されたジョブのみを処理します。 ! が指定されると、その逆となります。
-q[ !]R substr
受け手のリストの文字列に substr が含まれるジョブのみを処理します。 ! が指定されると、その逆となります。
-q[ !]S substr
送り手の文字列に substr が含まれるジョブのみを処理します。 ! が指定されると、その逆となります。
-Q[reason]
指定された理由で通常のキューの要素を隔離します。理由が指定されなければ、隔離されたキューの要素の隔離を止めます。上述の要素の選択処理のいずれかと合わせてのみ使うべきです。
-R return
メッセージがバウンスした時に返送されるメッセージの量を設定します。 return パラメータには、メッセージ全体を返送する場合は、 `full' を、ヘッダのみを返送する場合は、 `hdrs' を指定します。
-r name
-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/

US Patent Numbers 6865671, 6986037.

歴史

sendmail コマンドは、 4.2BSD で登場しました。
$Date: 2011/03/07 23:44:48 $