Debian パッケージ courier-mta

sendmail

名称

sendmail -- 電子メールの送信

書式

sendmail [option...] [--] [address...]

rmail [-f sender] {address} [address...]

説明

sendmail コマンドは電子メールを読み込み受信者にそれを配送します。sendmail コマンドはCourierメールサーバの一部ですが、 昔ながらのsendmail MTAの振る舞いをエミュレートします。 今までのSendmail 用に書かれたプログラムは Couriersendmailでも動作すると思われます。 この sendmail ラッパーはsendmail 8.9のたいていのコマンド引数を解釈します。 Courierにとって意味のない-oオプションなどは単に無視されます。

この sendmail は、昔ながらのsendmailに常に -oi オプションと -t オプションが指定されているかのように動作します。 たいていのアプリケーションはこのような想定で問題ありません。 いくつかのアプリケーションはsendmailの起動時に -oi オプションと -t オプションをつけずに、 つけなかった場合のsendmailの動作を想定している場合があります。 このようなアプリケーションではこのsendmailラッパーの動作では 何らかの問題が発生するかもしれません。

sendmailは標準入力からメッセージを読み込み、適切にヘッダを変更し、 指定された受信者にそれを配送します。

コマンドラインに受信者(のリスト)が指定された場合には、 sendmailは指定された受信者にメッセージを配送します。 もしコマンドラインに受信者を指定しない場合は、sendmailはメッセージを読み込み、To:Cc:Bcc:各ヘッダから受信者のリストを作成します。

sendmail はメッセージの配送の前に Bcc:ヘッダを常に削除します。

下に挙げる機能のうちいくつかは、 Courierに存在する他のモジュールによって実装されており、 sendmailがそのモジュールを自動的に起動します。 この動作はアプリケーションやエンドユーザからは意識する必要はありません。

オプション

-f address

From:ヘッダ行の電子メールアドレスを指定します。これはアドレス部分だけで、 名前部分ではありません。

-F "name"

From:ヘッダ行の名前部分を指定します。

-N options

配送ステータス通知指示オプションを指定します。optionsはコンマで区切られた次のキーワードのリストです: neversuccessfaildelay。何も指定されない場合、 -N オプションはシステム管理者の設定により "delay, fail" か "fail"になります。 "success" は各受信者に正しくメールを配送すると、 送信者に受領通知を送ります。 "fail" は何らかの理由で配送できなかった場合に配送不能通知を送ります。 "delay" は一定時間配送ができない(けれども完全に失敗したわけではない)場合に 配送通知を送ります。 "never"はどんな場合でも配送通知メッセージを送りません。 ただし、下記バグ項目を参照してください。

-n

実際に配送せず、ヘッダを書き換えた後のメッセージを標準出力へ出力します。

-o, -t, -q

昔ながらのsendmailではないため、これらのsendmail用オプションは無視されます。

-R full

配送ステータス通知メッセージに元のメッセージを全て含むように 要求します。

-R hdrs

配送ステータス通知メッセージに元のメッセージのヘッダだけを含むように 要求します。

-V "envid"

配送ステータス通知メッセージに envid を含むように指定します。 主にメールロボット用です。

-S "level"

このメッセージの配送時の最低セキュリティレベルを設定します。 これはCourier専用のオプションでCourier専用SMTP拡張を用います。 levelは "NONE" か "STARTTLS" です。 "NONE" は通常のセキュリティレベル(セキュリティなし)を示します。 "STARTTLS" はメッセージの転送時に SSL/TLS を使用しなければならないことを 示します。 なおセキュリティレベルは、受信者がそのメールを 受信者の操作で転送した場合には保持されません。 (もちろんその受信者は転送メール自体のセキュリティレベルを 新たに指定することができます。)

-bcc

Bcc:ヘッダのみ読み込みます。通常、 コマンドラインに受信者が指定されない場合、 sendmailは受信者のリストを To:Cc:Bcc: の各ヘッダから得ます。 (Bcc: ヘッダはその後常に削除されます。) -bccオプションを指定すると、To: ヘッダと Cc: ヘッダはこの目的では使われません。 このオプションは受信者が明示的に sendmailのコマンドラインに指定された場合には無視されます。

-bs

標準入力につながれた ESMTP と会話します。 このオプションは実際にはCourierのESMTPサーバを起動しており、 それがESMTPの完全な実装を提供しています。

-verp

このメッセージにVERPを用います。

リターンアドレス

リターンアドレスとは、当該メッセージに対して配送ステータス通知メッセージ (配送不能通知、受領通知) が送られるアドレスです。

sendmail はエンベロープ送信者 (つまりリターンアドレス) userid@host を、-bsオプションが指定されない場合、次のような手順で取得します。 -bs オプションが指定された場合はもちろん、 エンベーロープ送信者はESMTPのコマンドから取得されます。

-f オプションが指定された場合、 -f オプションで指定されたアドレスが用いられます。

そうでない場合、リターンアドレスの userid の部分は以下の環境変数から順に取得されます: MAILSUSERMAILUSERLOGNAMELOGUSER。もしこれらの環境変数が定義されていない場合、 システムアカウントの名前が用いられます。

リターンアドレスのhost 部分は環境変数MAILSHOST から取得します。MAILSHOSTが定義されていない場合、 環境変数MAILHOST が利用されます。両方とも指定されていない場合、 設定されたマシン名が利用されます。

次にリターンアドレスは Coueirの"local"モジュールのアドレス書き換えルールにより書き換えられます。 (-bs オプションが指定された場合は "esmtp"モジュールにより書き換えられます。)

最後に、 -verp オプションが指定された場合、リターンアドレスは VERPされます。

変数化リターンアドレス (VERP)

VERPとはリターンアドレスに受信者のメールアドレスを含める手法です。 すべてのMTAが RFC 1894形式の配送ステータス通知をサポートしているとは限りません。 VERPのメリットはマシン可読な配送ステータス通知がなくても、 配送できないアドレスをメーリングリストのソフトウェアが識別できることです。

このオプションは主にCourier製メーリングリストマネージャをサポートするために 提供されています。 現時点でこのオプションを利用するのはこのソフトウェアだけです。 Qmailサーバはほぼ同じような機能を持っており、 独自のメーリングリストマネージャで利用されます。 しかし、これらの間にはいくつかの機能的な違いがあるため、 Courierのメーリングリストマネージャと Qmailのメーリングリストマネージャは互いに入れ替えできません。

細かな点を除けば、 CourierのVERPの実装はQmailのそれと非常に似ています。 user@domain.comからのメッセージがアドレス X へ送られる場合、 リターンアドレスはuser-Y@domain.comの形式になり、Y の部分は以下のように定義されます:

1. X 中の最後の @ 文字は=文字に置き換えられます。

2. 残りの X の文字は @、+、%、: 、!のような特殊文字を除き、 そのまま Y にコピーされます。

3. 特殊文字は +に続く2桁の16進数で置き換えられます。

-verpオプションをつけて複数の受信者にメッセージを送信する場合、 Courierは各受信者にメッセージのコピーを作成してそれぞれ送信します。 これはリターンアドレスがそれぞれの受信者で異なるため、 別々のメッセージとして送信する必要があるからです。

ただし例外があります。

VERP化されたメッセージがCourierサーバからCourierサーバへ ESMTPで送信される場合です。この場合にはESMTP拡張を利用して、 メッセージのVERP状態が保持されたまま1つのメッセージとして送信されます。 このESMTP拡張についてはCourierソースコードに格納されている draft-varshavchik-verp-smtpextドキュメントを参照してください。

送信者アドレス

sendmailは次のようにして From:ヘッダを設定します。 これはメッセージのリターンアドレス (エンベロープ送信者) と 同じではありません。

もし -bs オプションが指定された場合、以下は適用されません。-bsオプションが指定された場合にはすべての環境変数が無視されます。

From:ヘッダがメッセージに存在して 環境変数 MAILUSER が設定されている場合、 From: ヘッダに指定されたアドレスのユーザ名部分が MAILUSERの値で置き換えられます。

From:ヘッダがメッセージに存在して 環境変数 MAILHOST が設定されている場合、 From: ヘッダに指定されたアドレスのホスト名部分が MAILHOSTの値で置き換えられます。

From: ヘッダがメッセージに存在して、 -Fオプションが指定されるか、 環境変数 MAILNAME あるいは NAME が設定されている場合、 From: ヘッダの名前部分が-Fオプションで指定された名前または環境変数 MAILNAME または NAMEの値で置き換えられます。

From:ヘッダが存在しない場合、以下のようにして作成されます。 送信者の名前部分は -F オプションで指定されます。 -Fオプションがない場合、環境変数 MAILNAMENAME の値が用いられます。どれも設定されていない場合、 システムアカウントの名前部分(Gecos)が利用されます。 送信者アドレスのユーザ名部分は環境変数 MAILUSERLOGNAMEUSER の値が用いられます。どれも設定されていない場合、 システムのユーザIDが用いられます。 送信者アドレスのホスト名部分は環境変数 MAILHOST の値が用いられます。設定されていない場合、 サーバのシステムホスト名が用いられます。

終了コード

sendmailはメッセージが正しく配送受付された場合は 終了コード0で終了します。 メッセージの配送受付でなんらかの問題が発生した場合は、sendmail はエラーメッセージを表示して0以外の終了コードで終了します。 -bsオプションをつけた場合は、致命的な問題が発生した場合を除き、 常に終了コード0で終了します。

rmail

もし rmail として起動された場合には、 サブセットとしてこれらのオプションだけが使用可能です:-f-verp-N-R-V-o-t。他のオプションは使用できません。加えて、 受信者のアドレスは必ずコマンドラインから指定します。 rmailエイリアスはUUCP経由でメールを受信するのに使うことを意図しています。 UUCPコンパチブルな他のソフトウェアをインストールして、 Courierをインストールしたディレクトリのrmailを使うように設定します。

rmail としての起動は uucp ユーザ以外からはできません。さらに、環境変数UU_MACHINEUU_USER が設定されていなければなりません。 さらに、上記で説明したヘッダとアドレスの書き換えは適用されず、 UUCP用のヘッダ書き換え手順が実行されます。 詳しくはcourieruucp(8)マニュアルページを参照してください。

バグ

RFC 1894に指定された配送ステータス通知指定を 理解しないメールゲートウェイが未だにあるので、 -N never オプションを指定しても配送通知を受け取ることがあります。

ヘッダ書き換えルールはQmailと似ていますが、全く同じではありません。 各環境変数の優先順位や、どこで使われるのかがQmailのものと違い、 異なった結果となることがあります。

関連項目

courier(8), courieruucp(8) mailq(8), cancelmsg(1), http://www.sendmail.org, http://www.qmail.org.