sendmail コマンド
目的
ローカル送達またはネットワーク送達のためにメールの経路指定を行います。
構文
sendmail [ -ba | -bd | -bD | -bh | -bH | -bi | -bm | -bp | -bs | -bv | -bt [ -Ac File] [ -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 Option [ Value ] ] [ -pProtocol ] [ -q [Time] ] [ -qGname ] [ -qISubstr ] [ -qRSubstr ] [ -qSSubstr ] [ -R Return ] [ -r addr ] [ -t ] [ -V Envid ] ] [ -v ] [ -X LogFile ] Address
説明
- AIX 7.2、技術レベル 5 以降、「sendmailコマンドは「sendmailコマンドバージョン8.18.1を使用する。 sendmailコマンドは、セキュリティ強化のため、rootユーザーの代わりに新しい「
smmspユーザーと「smmspグループによって実行される。 - sendmail v8.7以降では、名前解決の順序は、ドメインネームシステム(DNS)、ネットワークインフォメーションサービス(NIS)、ネットワークインターフェイスサービス(NIS)、ローカルの順である。 このデフォルト順序を指定変更したい場合は、/etc/netsvc.conf ファイルで順序を指定するか、NSORDER 環境変数を指定します。
sendmail コマンドは、フォーマットされたテキスト・メッセージを受け取り、1 人以上のユーザーにそのメッセージを経路指定します。 ネットワーク上で使用される「sendmailコマンドは、宛先システムの要求に合わせてメッ セージヘッダ情報のフォーマットを変換する。 sendmailプログラムは、アドレスの構文と内容を使って、宛先システムのネットワークを決定する。
sendmailコマンドは、以下のユーザーにメッセージを配信する:
- ローカルシステムのユーザー。
- ユーザーはTCP/IPプロトコルを使用してローカルシステムに接続した。
- ユーザーは、BNU(Basic Networking Utilities)コマンドプロトコルを使用してローカルシステムに接続した。
sendmailコマンドは、あらかじめフォーマットされたメッセージのみを送出する場合にのみ使用し、ユーザー・インターフェース・ルーチンではありません。 sendmail コマンドは、メッセージ・テキストの標準入力を読み取ります。 sendmail コマンドは、メッセージの終わりの文字を読み取るといつでも、リストされているすべてのアドレスにメッセージのコピーを送信します。 メッセージの終わりの文字は、EOF (Ctrl-D) 制御シーケンスか、1 行に単一のピリオドのいずれかになります。
sendmail メールフィルターAPI (Milter)
sendmailMail Filter APIは、処理中のメール・メッセージへのアクセスを提供する。 これにより、サードパーティーのプログラムは、メタ情報とコンテンツをフィルタリングすることができる。 sendmailMail Filter APIを使用して開発されたフィルターはスレッドを使用するため、フィルターのプロセスごとの制限を変更する必要があるかもしれません。 例えば、フィルターが頻繁に使用される場合は、'setrlimitサブルーチンを使用して、開いているファイル記述子の数を増やす。
- sendmailの設定にフィルタを指定する
- フィルターを指定するには、キー文字 X (外部用) を使用します。 以下の例はフィルターの一部である:
Xfilter1, S=local:/var/run/f1.sock, F=RXfilter2, S=inet6:999@localhost, F=T, T=C:10m;S:1s;R:1s;E:5mXfilter3, S=inet:3333@localhost
sendmail メールフィルターのフラグ
- R
- フィルターが利用できない場合、接続を拒否する。
- T
- フィルタが利用できない場合、一時的に接続を失敗させる。
F=Rも F=Tも指定されていない場合、'sendmailコマンドはフィルターが存在しないかのようにメッセージを渡す。 セパレーターはコンマ(,)である。
sendmail メールフィルターのタイムアウト
T=xで上書きすることができます:- 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 コマンドが MTA モードのメール・サーバー・デーモンとして実行される場合に使用されます。 デフォルトでは、sendmail.cf ファイルは /var/spool/mqueue ディレクトリー内のメール・キューを使用します。 システム・ブート時に、sendmail MTA デーモンはデフォルトで /etc/rc.tcpip ディレクトリーで開始されます。 sendmail MTA デーモンを手動で開始するには、次のコマンドを入力します。
# startsrc -s sendmail -a " -bd -q30m" - /etc/mail/submit.cf
- この構成ファイルは、sendmail コマンドが MSP モードで稼働するために使用します。 デフォルトでは、submit.cf ファイルは /var/spool/clientmqueue ディレクトリー内のシステム・メール・キューを使用します。 sendmail コマンドは、以下のシナリオにおいて MSP モードで稼働します。
- sendmail コマンドがコマンド・ラインで実行されるか、E メールを送信するために別のメール機能 (mail コマンドなど) によって呼び出される場合。
- sendmail コマンドがクライアント・キュー・ランナーとして呼び出される場合。 sendmail クライアント・キュー・ランナーは /var/spool/clientmqueue ディレクトリーで未配信メッセージを特定し、それらのメッセージを配信のために sendmail MTA デーモンに送ります。 sendmailコマンドをMSPモードのキュー・ランナーとして手動で実行するには、以下のコマンドを入力する:
# /usr/lib/sendmail -Ac -q 30m
/etc/rc.tcpip ファイルを編集することにより、システムがブートするたびに自動的に開始するように sendmail MTA デーモンを設定することもできます。 /etc/rc.tcpip ファイルの編集手順については、 システム・ブート時の sendmail デーモンの開始を参照してください。
sendmailプロセスの再起動とリフレッシュ
sendmail コマンドで使用される構成ファイルは、任意のテキスト・エディターを使用して編集できるテキスト・ファイルです。 これらの構成ファイルを編集後、変更を有効にするには、MTA デーモンと MSP を再始動またはリフレッシュする必要があります。
sendmail コマンドの現行プロセス ID は、/etc/mail/sendmail.pid ファイルに保管されます。 sendmailコマンドが新しく編集したコンフィギュレーション・ファイル を再読込できるようにするには、次の「killコマンドを入力する:
#kill -15 `head -1 /etc/mail/sendmail.pid`
srcmstr コマンドが実行されている場合は、refresh コマンドを実行して、構成データベース、別名データベース、および NLS データベースを再構築できます。
#refresh -s sendmail
sendmail MSP を手動で開始した場合や、sendmail プロセスが srcmstr コマンドで制御されていない場合は、次の kill コマンドを使用して sendmail プロセスを停止できます。
# kill <pid of the sendmail: Queue runner >
AIX 7.2への移行、テクノロジーレベル4
AIX 7.2、技術レベル3またはそれ以前を実行しており、「sendmailコマンドを構成している場合、AIX 7.2、技術レベル4に移行すると、「sendmailコマンドはMTAデーモンとして実行される。 移行作業を開始する前に「sendmail.cf設定ファイルをバックアップするには、次のコマンドを入力する:
# cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.old
移行操作の完了後、以前の sendmail.cf 構成ファイルは新しい sendmail.cf 構成ファイルに移行されます。
- 移行後に「sendmail.cfファイルが見つからない場合に「sendmail.cfバックアップファイルを復元するには、次のコマンドを入力する:
# cp /etc/mail/sendmail.cf.old /etc/mail/sendmail.cf sendmailプロセスを再起動してリフレッシュするには、以下のコマンドを入力する:# startsrc -s sendmail -a " -bd -q30m"# refresh -s sendmailこれらのコマンドは、sendmail コマンドを MTA として実行します。
sendmail コマンドは、データベースを再読み取りし、sendmail.cf 構成ファイルでの操作を続行します。
別名の定義
sendmailコマンドは、'sendmailコマンドがローカルメールを処理するときに使うエイリアスを定義することができる。 別名とは、複雑なネットワーク・アドレスの代わりに使用できる代替名です。 別名を使用して配布リストを作成することもできます。
別名は /etc/mail/aliases ファイルに定義してください。 このファイルは編集可能なテキストファイルです。 sendmail コマンドは、このファイルのデータベース・バージョンを使用します。 /etc/mail/aliasesファイルに加えた変更が有効になる前に、'sendmail-biコマンドまたは'newaliasesコマンドを実行して新しいエイリアスデータベースを構築する必要がある。
AIXの Sendmail 8.11.0では、バークレーデータベース(DB)のサポートが利用可能です。 sendmailコマンドは、エイリアスデータベースが再構築されるまで、データベースマネージャー(DBM)フォーマットでエイリアスを読み込み続ける。 データベースが再作成されると、Sendmail は Berkeley DB フォーマットで別名を読み取り、/etc/mail/aliases.db ファイルに保管します。
testaliasに送られたメールは'TESTとして失敗し、2行目が格納されるときに'testに変換される。TEST: user@machine
testalias: TEST
すべてのシステムには、「postmasterエイリアスとして指定されたユーザーまたはユーザーエイリアスがなければならない。 デフォルトの postmaster 別名は、ルート・ファイルです。 この別名は、/etc/mail/aliases ファイルの別のユーザーに割り当てることができます。 postmaster 別名を使用することにより、そのシステム外の他のユーザーによる既知の ID へのメールを送信、
およびシステム上のユーザーへのメールに関する情報の取得が可能になります。 また、ユーザーのシステム上のユーザーは、postmaster ID に問題の通知を送信できます。
sendmail コマンドは最初に、ハッシュ・スタイル別名ファイルの形式でデータベースを開きます。 失敗した場合、またはNEWDBサポートがコンパイルされなかった場合、コマンドは新しいデータベース・マネージャー(NDBM)データベースを開きます。 それが失敗すると、sendmail コマンドは別名ソース・ファイルを内部シンボル・テーブルに読み込みます。
フラグ
| 項目 | 説明 |
|---|---|
| -Ac ファイル | 動作モードに基づいて代替構成ファイルを選択するには、sendmail コマンドを指定します。 -bm、-bs、-t のいずれかのフラグを指定した場合、sendmail コマンドは submit.cf 構成ファイルを使用します。 他のフラグを指定した場合、旧バージョンとの互換性のために、sendmail コマンドは sendmail.cf 構成ファイルを使用します。 file 変数を指定しない場合、sendmail コマンドはデフォルトで submit.cf 構成ファイルを使用します。 |
| -Bタイプ | 本文のタイプを type に設定します。 現在有効な値は 7BI または 8BITMIMEです。 注: -b フラグは同時には指定できません。
|
| -ba | sendmailコマンドを 'ARPANETモードで開始する。 コマンドへのすべての入力行は、復帰とライン・フィード (CR-LF) で終っていなければなりません。 sendmail コマンドは最後に CR-LF の付いたメッセージを生成し、
From: フィールドと Sender: フィールドを調べて、
送信元の名前を見付けます。 sendmail コマンドのバージョン 8.17.1 からは、非標準のシーケンス (<LF>.<CR><LF>) や (<LF>.<LF>) ではなく、標準のデータ終了シーケンス (<CR><LF>.<CR><LF>) を期待するように動作が更新されています。 |
| -bd | シンプル・メール転送プロトコル (SMTP) のメール・ルーターとしてバックグラウンドで実行するデーモンとして、 sendmail コマンドを開始します。 |
| -bD | sendmailコマンドを SMTP メールルーターとしてフォアグラウンドで動作するデーモンとして起動する。 |
| -bh | 永続ホスト状況データベースを出力します。 |
| -bH | 永続ホスト状況データベースを削除します。 |
| -bi | /etc/mail/aliasesファイルに定義された情報からエイリアスデータベースを構築する。 このフラグを付けて'sendmailコマンドを実行することは、'newaliasesコマンドを実行することと同じである。 |
| -bm | デフォルトでは通常の方法でメールを配信する。 |
| -bp | メール・キューのリストを出力します。 このフラグを付けて'sendmailコマンドを実行することは、'mailqコマンドを実行することと同じである。 |
| -bs | RFC821に記述されているSMTPを使い、標準入力からメールを収集する。 また、このフラグには、SMTP と互換性のある -ba フラグのすべての操作が含まれています。 |
| -bt | sendmail コマンドをアドレス検査モードで始動します。 このモードを使用すると、対話型アドレスを入力して、sendmail コマンドがアドレスの解析を行うステップの表示を見ることができます。 検査モード・プロンプトが表示されたら、単一の規則セットまたはコンマで区切った複数の規則セットと、 1 つのアドレスを入力してください。 このモードは、新しい構成ファイルのアドレス解析規則をデバッグするのに使用してください。 |
| -bv | sendmailコマンドを、コマンドのAddressパラメータフィールドに指定されたユーザーIDを検証するリクエストで開始する。 sendmail コマンドは、 どの ID がメーラー・コマンドに対して変換されるかを示すメッセージで応答します。 メッセージの収集および送信は行いません。 このモードは、ユーザー ID、別名、またはメーリング・リストのフォーマットの妥当性を検査するのに使用します。 |
| -Cファイル | File変数で指定された代替設定ファイルを使用して、'sendmailコマンドを開始する。 このフラグを -bt とともに使用して、新しい構成ファイルを実行構成ファイルとしてインストールする前に検査してください。 |
| -D ログファイル | 指定されたログ・ファイルにデバッグ出力を送信します。 -D オプション は -d オプションの前に指定する必要があります。 |
| -d 値 | デバッグ値を Value 変数で指定された値に設定します。 有効な値は'21.nのみで、nは0以外の整数である。 このフラグはアドレス解析に関する情報を作成し、通常は -bt フラグとともに使用されます。 n の値が大きくなるほど、作成される情報は詳しくなります。 このフラグを使用するには、root 権限が必要です。 |
| -F FullName | 送信者のフルネームを FullName 変数で指定する文字列に設定します。 |
| -f名前 | 差出人の名前を設定します。 最初の実行依頼で From: ヘッダーが失われた場合は、そのヘッダーにもこのアドレスを使用できます。 エンベロープの送信者アドレスは、配送状況通知の受信者として使用され、「Return-path:ヘッダーにも表示されることがある。 このフラグは、信頼されたユーザー(通常はroot、daemon、uucp)か、または、あなたがなろうとしている人物とあなたが同じ人物である場合にのみ使用しなければならない。 そうでない場合は、メッセージに'X-Authentication-Warningヘッダーが追加される。 |
| -G | メッセージのリレー (ゲートウェイ) 実行依頼。 例えば、rmail コマンドが sendmail コマンドを呼び出す場合です。 |
| -h 番号 | ホップ・カウントを Number 変数で指定する値に設定します。 ホップ数は、メッセージがSMTPルーター('sendmailコマンドのローカルコピーだけではない)によって処理された回数である。 メールルーターはメッセージが処理されるたびにホップカウントを増やす。 制限に達すると、それを示すメッセージがエラー・メッセージとともに戻され、 メール・システムで無限ループが発生するのを防止します。 |
| -i | 着信メッセージの行にドットのみがある場合はそれを無視します。 これは、ファイルからデータを読み込む場合に設定しなければならない。 |
| -L | syslogメッセージで使われる識別子を指定されたタグに設定する。 |
| -M値 | マクロ x を、指定された value に設定します。 |
| -NDsn | データ・ソース名(DSN)に配信ステータス通知条件を設定します。 配信状況通知条件は以下の通り:
|
| -n | sendmail コマンドが別名を解釈しないようにします。 |
| -O オプション=価値 | Option を、指定する Value に設定します。 これは、オプション名が長い場合に使用します。 |
| -oオプション [ 価値 ] | Option 変数を設定します。 オプションに値が付く場合は、Value 変数の値も指定しなければなりません。 注:有効な値については、『Performance Tools Guide and Reference』の'sendmail.cfファイルのsendmailコマンドのオプションを参照のこと
|
| -pプロトコル | 送信プロトコルを設定します。 このフラグを設定することをお勧めします。 Protocolを'Protocol:Host形式で設定すると、送信プロトコルと送信ホストの両方を設定できる。 例えば、'-pUUCP:uunetは送信プロトコルをUUCPに、送信ホストを'uunetに設定する。 既存のプログラムの中には、-oM フラグを使用して r および s マクロを設定するものもありますが、これは、-p フラグを使用した場合と同じ結果になります。 |
| -qIサブストリング | プロセス・ジョブを、キュー ID のサブストリングとしての Substr を含むプロセス・ジョブに制限します。 |
| -qG名前 | キュー内のプロセス・ジョブは、名前だけでグループ化される。 |
| -qRサブストリング | プロセス・ジョブを、いずれかの受信者のサブストリングとしての Substr を含むプロセス・ジョブに制限します。 |
| -qSサブストリング | プロセス・ジョブを、送信者のサブストリングとしての Substr を含むプロセス・ジョブに制限します。 |
| -q[時間] | Time変数で指定された間隔で、キューに保存されたメッセージを処理する。 Time 変数を指定しないと、このフラグは直ちにキューを処理します。 |
| -Rリターン | メッセージがバウンスする場合に戻されるメッセージの量を設定します。 Return パラメーターは、
全メッセージを戻す full にすることも、ヘッダーのみを戻す hdrs にすることもできます。 |
| -rアドレス | -f の古い形式。 |
| -t | コマンド・ラインに指定されたユーザーにだけではなく、メッセージ・ヘッダーの To:、Cc:、および Bcc: フィールドに指定された受信者にもメッセージを送信します。 |
| -VEnvid | オリジナルのエンベロープ ID を設定します。 これは、SMTP によって、DSN をサポートするサーバーに伝搬され、DSN 準拠のエラー・メッセージで戻されます。 |
| -v | sendmail コマンドを verbose モードで始動します。 sendmail コマンドは、送信状況および別名の拡張に関するメッセージを表示します。 |
| -XLogFile | メーラーの問題をデバッグするために、'sendmailに出入りするすべてのトラフィックをLogFileに記録する。 このフラグはすぐに多数のデータを生成してしまうので、控えめに使用すること。 |
また、ユーザーは sendmail 構成処理オプションの設定または除去を行うこともできます。 これらのオプションは、メール・システムの責任者が使用します。 これらのオプションを設定するには、コマンドラインの'-oフラグ、またはコンフィギュレーション'/etc/mail/sendmail.cfファイルの'Oコントロールラインを使用する。
終了状況
sendmail コマンドは、終了状況値を戻します。 これらの終了値は、/usr/include/sysexits.h ファイルに定義されています。 以下の表は、これらの戻り値の意味を要約したものです。
| 項目 | 説明 |
|---|---|
| EX_CANTCREAT (EX_CANTCREAT) | ユーザーが指定したファイルを、sendmail コマンドが作成できません。 |
| 構成 (EX_CONFIG) | 構成ファイルのフォーマットにエラーが発見されました。 |
| データ・エラー (EX_DATAERR) | 入力データに何らかの誤りがありました。 |
| EX_IOERR | 入出力中にエラーが発生しました。 |
| EX_NOHOST (EX_NOHOST) | sendmailコマンドが指定されたホスト名を認識しない可能性がある。 |
| EX_入力なし | 入力ファイル (システム・ファイルではない) が、存在していないか、読み取れませんでした。 |
| EX_NOPERM | 要求された操作を実行するのに必要な許可をユーザーが持っていません。 |
| EX_NOUSER (EX_NOUSER) | sendmailコマンドが指定されたユーザーIDを認識しない可能性がある。 |
| 「EX_OK」 | sendmail コマンドが正常に終了しました。 |
| EX_OSERR (EX_OSERR) | 一時的なオペレーティング・システム・エラーが発生しました。 例えば、新しいプロセスの作成の失敗などです。 |
| EX_OSFILE | システム・ファイル・エラーが発生しました。 例えば、「/etc/passwdようなシステム・ファイルが存在しないか、オープンできないか、あるいは他のタイプのエラーで使用できない。 |
| 「EX_PROTOCOL」 | プロトコル交換中に発見された何らかの誤りを、リモート・システムが戻しました。 |
| 「EX_SOFTWARE」 | 内部ソフトウェア・エラー (引数の誤りなど) が発生しました。 |
| 「EX_TEMPFAIL」 | sendmailコマンドがリモートシステムへの接続を作成しない可能性がある。 あとで再び要求を試みてください。 |
| EX_UNAVAILABLE | sendmail コマンドが必要としたサービスまたはリソースが使用できませんでした。 |
| EX_使用例 | コマンドの構文に誤りがありました。 |
セキュリティー
イベントの監査
| イベント | 情報 |
|---|---|
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/mail/submit.cf | sendmail 構成ファイルのテキスト・バージョンが入っています。 このファイルが存在する場合、このファイルはデフォルトの構成ファイルと見なされます。 |
| /etc/sendmail.st | メール経路指定の統計情報が入っています。 |
| /usr/lib/smdemon.cleanu | /var/spool/mqueueディレクトリにあるログファイルのエージングコピーを保持する。 |
| /var/spool/mqueue | メール・キュー内のメッセージに関連する一時ファイルとログ・ファイルが含まれる。 |
| /usr/bin/uux | 基本ネットワーク・ユーティリティー (BNU) メールを送信するためのメーラー・コマンドが入っています。 |
| /usr/bin/bellmail | ローカル・メールを送信するためのメーラー・コマンドが入っています。 |