sendmail -
電子メール配送デーモン
sendmail [
flags] [
address ...]
newaliases
mailq [
-v]
hoststat
purgestat
smtpd
sendmail
はメッセージを一人または複数の受け手
(
recipient)
に送ります。必要ならばインターネットワークを
通してメッセージを正しい場所に転送します。
sendmail
はユーザインタフェースとして使われることは考慮されていません。
ユーザにとって使いやすいフロントエンドは別のプログラムで
提供されます。
sendmail
は、あらかじめメールとして整形されたメッセージ
を配送するためだけに使われます。
引数を指定せずに起動すると、
sendmail
は標準入力をファイルの終端まで、または
`.'だけを含む行まで読み込み、
そこで確認したメッセージのコピーを、
列挙されたアドレスに送ります。アドレスの文法や内容にもとづいて
経路に使用するネットワークを決定します。
ローカルアドレスは、あるファイルの中を検索して適当なエイリアスを行います。
先頭にバックスラッシュ
`\'
のついたアドレスについては、エイリアスは
行なわれません。 8.10
から、送り手はエイリアス展開の対象に含まれるようになりました。
つまり、`john' が `group'
にメールを送る
際に、 `john' が `group'
に含まれているならば、
送ったメッセージは
`john' にも送られます。
-
-Btype
- ボディのタイプを
type
に設定します。現在有効なのは、
7BIT か 8BITMIME です。
- -ba
- ARPANET
モードに移行します。すべての入力行は
CR-LF
で終わらなければならず、
すべてのメッセージの末尾には
CR-LF
がつきます。また、``From:''
と ``Sender:''
フィールドは送り手の名前としてチェックされます。
- -bd
- デーモンモードで実行します。Berkley
IPC が必要です。 sendmail
は fork
を行い、バックグラウンドで動作し、ソケット番号
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''
に入る名前(つまり、エンベロープ中の送り手
(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
分に設定します。
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
フラグを使って(長いオプション名で)指定したり、
設定ファイルから指定することができます。ここに記述して
いるのは部分的なもので、コマンド行から指定する場合に便利な物だけを、
長いオプション名で示しています。完全なリスト(と詳細)は、
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
から登場しました。