sendmail コマンド

目的

ローカル送達またはネットワーク送達のためにメールの経路指定を行います。

構文

sendmail-ba | -bd | -bD | -bh | -bH | -bi | -bm | -bp | -bs | -bv | -bt-C File ] [-D Log File] [  -d Value ] ] [  -B Type ] [  -F FullName ] [  -f Name ] [-G] [  -h Number ] [  -i ] [ -Mx Value] [  -n ] [  -N Dsn ] [  -O Option=Value ] [  -o OptionValue ] ] [  -p Protocol ] [  -qTime] ] [-qGname] [  -qISubstr  ] [  -qRSubstr ] [  -qSSubstr ] [  -R Return ] [  -r addr ] [  -t ] [  -V Envid ] ] [  -v ] [  -X LogFile ] Address

注: Address パラメーターは、-bd-bi-bp-bt、および -q [ Time ] フラグではオプショナルです。

説明

注: sendmail V8.7 では、ネーム・レゾリューションの配列は、 ドメイン・ネーム・システム (DNS)、ネットワーク・インターフェース・サービス (NIS)、 そしてローカルとなります。これをオーバーライドしたい場合は、/etc/netsvc.conf ファイルまたは NSORDER 環境変数を指定します。

sendmail コマンドは、フォーマットされたテキスト・メッセージを受け取り、1 人以上のユーザーにそのメッセージを経路指定します。 ネットワークで使用された場合、sendmail コマンドはメッセージのヘッダー情報のフォーマットを宛先システムの要件に一致するように変換します。プログラムは構文およびアドレスの内容を使用して、宛先システムのネットワークを判別します。

sendmail コマンドはメッセージを以下の宛先に送信します。

  • ローカル・システム上のユーザー
  • TCP/IP プロトコルを使用してローカル・システムに接続されるユーザー
  • Basic Networking Utilities (BNU) コマンド・プロトコルを使用してローカル・システムに接続されているユーザー

sendmail コマンドは、フォーマット設定前のメッセージ送信するためにのみ使用します。sendmail コマンドは、 ユーザー・インターフェース・ルーチンとして使用されることを意図していません。 他のコマンドが、使いやすいインターフェースを提供しています。

sendmail コマンドは、メッセージ・テキストの標準入力を読み取ります。 sendmail コマンドは、メッセージの終わりの文字を読み取るといつでも、リストされているすべてのアドレスにメッセージのコピーを送信します。メッセージの終わりの文字は、EOF (Ctrl-D) 制御シーケンスか、1 行に単一のピリオドのいずれかになります。

sendmail メール・フィルター API (Milter)

sendmail メール・フィルター API では、第三者プログラムがメタ情報と内容をフィルタリングできるようにメール・メッセージが処理されるときに、メール・メッセージにアクセスできます。 sendmail メール・フィルター API を使用して開発されるフィルターは、スレッドを使用するため、フィルター内のプロセスごとの制限を変更することが必要な場合があります。 例えば、フィルターの使用頻度が高い場合は、setrlimit サブルーチンを使用してオープン・ファイル・ディスクリプターの数を増加します。

sendmail 構成内のフィルターの指定

フィルターを指定するには、キー文字 X (外部用) を使用します。 以下に、3 つのフィルター例を示します。
Xfilter1, S=local:/var/run/f1.sock, F=R
Xfilter2, S=inet6:999@localhost, F=T, T=C:10m;S:1s;R:1s;E:5m
Xfilter3, S=inet:3333@localhost
フィルターは、ご使用の .mc ファイルに指定できます。 次のフィルターは、/var/run ディレクトリーの UNIX-ドメイン・ソケットに接続します。
INPUT_MAIL_FILTER(`filter1', `S=local:/var/run/f1.sock, F=R')
次のフィルターは、ローカル・ホストのポート 999 の IPv6 ソケットを使用します。
INPUT_MAIL_FILTER(`filter2', `S=inet6:999@localhost, F=T, T=C:10m;S:1s;R:1s;E:5m')
次のフィルターは、ローカル・ホストのポート 3333 の IPv4 ソケットを使用します。
INPUT_MAIL_FILTER(`filter3', `S=inet:3333@localhost')

sendmail メール・フィルター・フラグ

R
フィルターが使用不可の場合に接続をリジェクトします。
T
フィルターが使用不可の場合に、一時的に接続の使用を止めます。

F=R または F=T のいずれも指定されていない場合、sendmail コマンドは、フィルターが存在していないかのようにメッセージを渡します。セパレーターは、コンマ (,) です。

sendmail メール・フィルター・タイムアウト

デフォルトの sendmail タイムアウトは、x を用いてオーバーライドできます。T= statement には、4 つのフィールドがあります。
C
フィルターに接続する際のタイムアウト (0 の場合は、システム・タイムアウトを使用します)。
S
MTA からフィルターに情報を送る際のタイムアウト。
R
フィルターからの応答を読み取る際のタイムアウト。
E
フィルターへのメッセージ終結の送信から、最終確認通知を待つまでの全体のタイムアウト。
各エントリー間のセパレーターは、セミコロン (;) です。
デフォルト値は以下のとおりです。
  • T=C:0m;S:10s;R:10s;E:5m
InputMailFilters オプションで、起動するフィルターとその順序付け方法が決まります。
InputMailFilters=filter1, filter2, filter3
これは、ご使用の .mc ファイル内の INPUT_MAIL_FILTER コマンドの順序に従って自動的に設定されます。 この値は、ご使用の .mc ファイルに confINPUT_MAIL_FILTERS を設定してリセットすることもできます。 このオプションは、3 つのフィルターをフィルターの指定順序で呼び出します。

ご使用の .mc ファイルに INPUT_MAIL_FILTER() ではなく MAIL_FILTER() を使用することによって、フィルターを、入力フィルター・リストに追加せずに定義できます。

注: InputMailFilters が定義されていない場合、フィルターは使用されません。

構成ファイルの使用方法

sendmail コマンドは、構成ファイル (デフォルトは /etc/mail/sendmail.cf ファイル) を使用して稼働パラメーターを設定し、アドレスをどのように構文解析するかを判別します。このファイルは、他のテキスト・エディターでも編集できるテキスト・ファイルです。sendmail.cf の変更後、sendmail デーモンを再表示します。

sendmail コマンドの現行プロセス ID は、/etc/mail/sendmail.pid ファイルに保管されます。 以下のように kill -15 コマンドを出して、sendmail コマンドに、新しく編集された sendmail.cf を再読み取りさせます。


kill -15 `head -1 /etc/mail/sendmail.pid`

srcmstr コマンドが実行中の場合は、 以下のように refresh コマンドを実行して、構成データベース、 別名データベース、NLS データベースを再作成できます。


refresh -s sendmail

sendmail コマンドは、これらのデータベースを再読み取りして、 新しいデータで動作を継続します。

別名の定義

sendmail コマンドは、ローカル・メールを処理するときに使用する別名を定義できます。別名とは、完全なネットワーク・アドレスの代わりに使用できる代替名です。 別名を使用して配布リストを作成することもできます。

別名は /etc/mail/aliases ファイルに定義してください。このファイルは、ユーザーが編集できるテキスト・ファイルです。sendmail コマンドは、このファイルのデータベース・バージョンを使用します。/etc/mail/aliases ファイルに対して行った変更が有効になる前に、sendmail -bi コマンドまたは newaliases コマンドを実行して、新規別名データベースを作成する必要があります。

Berkeley DB サポートは、AIX® for Sendmail 8.11.0 で使用可能です。Sendmail は、別名データベースが再作成しなおされるまで、DBM フォーマットで別名の読み取りを続けます。データベースが再作成された後は、Sendmail は Berkeley DB フォーマットで別名を読み取り、これを /etc/mail/aliases.db ファイルに保管します。

注: /etc/mail/aliases ファイルの別名を定義する場合、ネストした別名には小文字だけを使用してください。別名の右側の大文字は、小文字に変換されてから、別名データベースに保管されます。以下の例では、testalias へのメールの送信は失敗します。 理由は、2 番目の行が保管されるときに、TESTtest に変換されるからです。

TEST: user@machine
testalias: TEST

システムはすべて、postmaster 別名として指定されているユーザーまたはユーザー別名を持っていなければなりません。 デフォルトの postmaster 別名は、ルート・ファイルです。 この別名は、/etc/mail/aliases ファイルの別のユーザーに割り当てることができます。postmaster 別名を使用することにより、そのシステム外の他のユーザーによる既知の ID へのメールを送信、 およびシステム上のユーザーへのメールに関する情報の取得が可能になります。 また、ユーザーのシステム上のユーザーは、postmaster ID に問題の通知を送信できます。

sendmail コマンドは最初に、ハッシュ・スタイル別名ファイルの形式でデータベースを開きます。それが失敗した場合、または NEWDB サポートがコンパイルされなかった場合、コマンドは NDBM データベースを開きます。それが失敗すると、sendmail コマンドは別名ソース・ファイルを内部シンボル・テーブルに読み込みます。

フラグ

項目 説明
-B Type 本文のタイプを type に設定します。現行の正当な値は 7BI または 8BITMIME です。

注: -b フラグは同時には指定できません。

-ba sendmail コマンドを ARPANET モードで始動します。 コマンドへのすべての入力行は、復帰とライン・フィード (CR-LF) で終っていなければなりません。 sendmail コマンドは最後に CR-LF の付いたメッセージを生成し、 From: フィールドと Sender: フィールドを調べて、 送信元の名前を見付けます。
-bd シンプル・メール転送プロトコル (SMTP) のメール・ルーターとしてバックグラウンドで実行するデーモンとして、 sendmail コマンドを開始します。
-bD シンプル・メール転送プロトコル (SMTP) メール・ルーターとしてフォアグラウンドで実行するデーモンとして、 sendmail コマンドを開始します。
-bh 永続ホスト状況データベースを出力します。
-bH 永続ホスト状況データベースを削除します。
-bi /etc/mail/aliases ファイルに定義された情報から別名データベースを作成します。このフラグを指定して sendmail コマンドを実行すると、 /usr/sbin/newaliases コマンドを実行した場合と同じ結果になります。
-bm 通常の方法でメールを送信します。 (これはデフォルトです。)
-bp メール・キューのリストを出力します。 このフラグを指定して sendmail コマンドを実行すると、/usr/sbin/mailq コマンドを実行した場合と同じ結果になります。
-bs RFC821 に記述されているように、Simple Mail Transfer Protocol (SMTP) を使用して、標準入力からメールを収集します。 また、このフラグには、SMTP と互換性のある -ba フラグのすべての操作が含まれています。
-bt sendmail コマンドをアドレス検査モードで始動します。 このモードを使用すると、対話型アドレスを入力して、sendmail コマンドがアドレスの解析を行うステップの表示を見ることができます。 検査モード・プロンプトが表示されたら、単一の規則セットまたはコンマで区切った複数の規則セットと、 1 つのアドレスを入力してください。 このモードは、新しい構成ファイルのアドレス解析規則をデバッグするのに使用してください。
-bv コマンドの Address パラメーター・フィールドに指定されたユーザー ID を検査する要求で sendmail コマンドを始動します。sendmail コマンドは、 どの ID がメーラー・コマンドに対して変換されるかを示すメッセージで応答します。 メッセージの収集および送信は行いません。 このモードは、ユーザー ID、別名、またはメーリング・リストのフォーマットの妥当性を検査するのに使用します。
-C File File 変数で指定された代替構成ファイルを使用して、sendmail コマンドを始動します。このフラグを -bt とともに使用して、新しい構成ファイルを実行構成ファイルとしてインストールする前に検査してください。
-D Log File 指定されたログ・ファイルにデバッグ出力を送信します。 -D オプション は -d オプションの前に指定する必要があります。
-d Value デバッグ値を Value 変数で指定された値に設定します。 有効な値は 21.n だけで、n には任意のゼロ以外の整数が入ります。 このフラグはアドレス解析に関する情報を作成し、通常は -bt フラグとともに使用されます。 n の値が大きくなるほど、作成される情報は詳しくなります。 このフラグを使用するには、root 権限が必要です。
-F FullName 送信者のフルネームを FullName 変数で指定する文字列に設定します。
-fName 送信者 (メールのエンベロープ送信側) の名前を設定します。最初の実行依頼で From: ヘッダーが失われた場合は、そのヘッダーにもこのアドレスを使用できます。このエンベロープ送信側のアドレスは、Delivery Status Notification (DSN) の受信側として使用されるほか、Return-path: ヘッダーにも表示されます。このフラグは、トラステッド・ユーザー (通常は root、デーモン、および uucp) が使用する場合か、取得しようとしているユーザー・ロールと現在のユーザー・ロールが同じ場合にのみ、使用するようにしてください。それ以外の場合は、メッセージに X-Authentication-Warning ヘッダーが追加されます。
-G メッセージのリレー (ゲートウェイ) 実行依頼。例えば、rmail コマンドが sendmail コマンドを呼び出す場合です。
-h Number ホップ・カウントを Number 変数で指定する値に設定します。 ホップ・カウントとは、SMTP ルーターがメッセージを処理した回数です ( sendmail コマンドの単なるローカル・コピーではありません)。 メール・ルーターは、メッセージが処理されるたびにホップ・カウントを 1 ずつ増やします。 制限に達すると、それを示すメッセージがエラー・メッセージとともに戻され、 メール・システムで無限ループが発生するのを防止します。
-i 着信メッセージの行にドットのみがある場合はそれを無視します。 ファイルからデータを読み取る場合は、この設定が必要です。
-L 与えられたタグに、syslog メッセージで使用されている ID を設定します。
-Mx Value マクロ x を、指定された value に設定します。
-N Dsn DSN に配布状況通知条件を設定します。 配布状況通知条件には、never (通知がない場合、もしくはコンマで分離した値のリスト)、 failure (配布に失敗した場合の通知)、 delay (配布が遅れた場合の通知)、 および success (メッセージが正常に配布された場合の通知) があります。
-n sendmail コマンドが別名を解釈しないようにします。
-O Option=Value Option を、指定する Value に設定します。 これは、オプション名が長い場合に使用します。
-o Option [ Value ] Option 変数を設定します。 オプションに値が付く場合は、Value 変数の値も指定しなければなりません。

有効な値については、「Performance Tools Guide and Reference」の sendmail.cf ファイル内の sendmail コマンドのオプションを参照してください。

-pProtocol 送信プロトコルを設定します。 このフラグを設定することをお勧めします。 ProtocolProtocol:Host の形式で設定すると、 送信プロトコルと送信ホストの両方を設定できます。 例えば、-pUUCP:uunet と指定すると、 送信プロトコルは UUCP、送信ホストは uunet に設定されます。 既存のプログラムの中には、-oM フラグを使用して r および s マクロを設定するものもありますが、これは、-p フラグを使用した場合と同じ結果になります。
-qISubstr プロセス・ジョブを、キュー ID のサブストリングとしての Substr を含むプロセス・ジョブに制限します。
-qGname 名前のみによって指定されるキュー・グループ内のジョブを処理します。
-qRSubstr プロセス・ジョブを、いずれかの受信者のサブストリングとしての Substr を含むプロセス・ジョブに制限します。
-qSSubstr プロセス・ジョブを、送信者のサブストリングとしての Substr を含むプロセス・ジョブに制限します。
-qTime ] Time 変数に指定した間隔で、キューに保管されているメッセージを処理します。 Time 変数を指定しないと、このフラグは直ちにキューを処理します。
-RReturn メッセージがバウンスする場合に戻されるメッセージの量を設定します。 Return パラメーターは、 全メッセージを戻す full にすることも、ヘッダーのみを戻す hdrs にすることもできます。
-r addr -f の古い形式。
-t コマンド・ラインに指定されたユーザーにだけではなく、メッセージ・ヘッダーの To:Cc:、および Bcc: フィールドに指定された受信者にもメッセージを送信します。
-VEnvid オリジナルのエンベロープ ID を設定します。 これは、SMTP によって、DSN をサポートするサーバーに伝搬され、DSN 準拠のエラー・メッセージで戻されます。
-v sendmail コマンドを verbose モードで始動します。 sendmail コマンドは、送信状況および別名の拡張に関するメッセージを表示します。
-X LogFile メーラー障害のデバッグのため、LogFilesendmail 内外のすべてのトラフィックの利用記録を取ります。このフラグは、短時間に大量のデータを生成するので、注意して使用してください。

また、ユーザーは sendmail 構成処理オプションの設定または除去を行うこともできます。 これらのオプションは、メール・システムの責任者が使用します。 これらのオプションを設定するには、コマンド・ラインで -o フラグを使用するか、 または構成 (/etc/mail/sendmail.cf) ファイルで O 制御行を使用します。

終了状況

sendmail コマンドは、終了状況値を戻します。 これらの終了値は、/usr/include/sysexits.h ファイルに定義されています。 以下の表は、これらの戻り値の意味を要約したものです。

項目 説明
EX_CANTCREAT ユーザーが指定したファイルを、sendmail コマンドが作成できません。
EX_CONFIG 構成ファイルのフォーマットにエラーが発見されました。
EX_DATAERR 入力データに何らかの誤りがありました。
EX_IOERR 入出力中にエラーが発生しました。
EX_NOHOST sendmail コマンドが、指定されたホスト名を認識できませんでした。
EX_NOINPUT 入力ファイル (システム・ファイルではない) が、存在していないか、読み取れませんでした。
EX_NOPERM 要求された操作を実行するのに必要な許可をユーザーが持っていません。
EX_NOUSER sendmail コマンドが、指定されたユーザー ID を認識できませんでした。
EX_OK sendmail コマンドが正常に終了しました。
EX_OSERR 一時的なオペレーティング・システム・エラーが発生しました。 例えば、新しいプロセスの作成の失敗などです。
EX_OSFILE システム・ファイル・エラーが発生しました。 例えば、システム・ファイル (/etc/passwd など) が存在しないか、オープンできないか、 または別の種類のエラーがあるためにシステム・ファイルを使用できないといったエラーです。
EX_PROTOCOL プロトコル交換中に発見された何らかの誤りを、リモート・システムが戻しました。
EX_SOFTWARE 内部ソフトウェア・エラー (引数の誤りなど) が発生しました。
EX_TEMPFAIL sendmail コマンドが、リモート・システムとの接続に失敗しました。 あとで再び要求を試みてください。
EX_UNAVAILABLE sendmail コマンドが必要としたサービスまたはリソースが使用できませんでした。
EX_USAGE コマンドの構文に誤りがありました。

セキュリティー

RBAC ユーザーおよび Trusted AIX ユーザーへの注意: このコマンドは特権命令を実行できます。 特権命令を実行できるのは特権ユーザーのみです。 権限および特権についての詳細情報は、「セキュリティー 」の『特権コマンド・データベース』を参照してください。 このコマンドに関連した特権および権限のリストについては、lssecattr コマンドまたは getcmdattr サブコマンドの項を参照してください。

監査イベントは以下のとおりです。

イベント 情報
SENDMAIL_Config 構成イベント
SENDMAIL_ToFile ファイル作成イベント

sendmail のバージョンを表示するには、次のコマンドを実行します。

echo ¥$Z | sendmail -d0

システムは、以下のようなメッセージで応答します。

Version AIX5.2/8.11.6p2
 Compiled with: LDAPMAP MAP_REGEX LOG MATCHGECOS MIME7TO8 MIME8TO7
             NAMED_BIND NDBM NETINET NETINET6 NETUNIX NEWDB NIS NISPLUS
                QUEUE SCANF SMTP USERDB XDEBUG

============ SYSTEM IDENTITY (after readcf) ============
      (short domain name) $w = dodgers
  (canonical domain name) $j = dodgers.usca.ibm.com
         (subdomain name) $m = usca.ibm.com
              (node name) $k = dodgers
========================================================

Recipient names must be specified
# oslevel -r
5200-02
#

ファイル

項目 説明
/usr/sbin/sendmail sendmail コマンドが入っています。
/usr/sbinmailq/ メール・キューが入っています。
/usr/sbin/newaliases 別名データベースが入っています。
/usr/sbin/mailstats /usr/lib/sendmail.st ファイル内の統計情報が入っています。
/etc/mail/aliases sendmail コマンド別名のテキスト・バージョンが入っています。
/etc/mail/aliases.db 別名用の Berkeley DB フォーマット済みデータベースが入っています。
/etc/mail/aliases.dir 別名用の DBM フォーマット済みデータベースが入っています。
/etc/mail/aliases.pag 別名用の DBM フォーマット済みデータベースが入っています。
/etc/mail/sendmail.cf sendmail 構成ファイルのテキスト・バージョンが入っています。
/etc/sendmail.st メール経路指定の統計情報が入っています。
/usr/lib/smdemon.cleanu /var/spool/mqueue ディレクトリー内にあるログ・ファイルの経年処理コピーを保持します。
/var/spool/mqueue メール・キューのメッセージに関係する一時ファイルおよびログ・ファイルが入っています。
/usr/bin/uux 基本ネットワーク・ユーティリティー (BNU) メールを送信するためのメーラー・コマンドが入っています。
/usr/bin/bellmail ローカル・メールを送信するためのメーラー・コマンドが入っています。