Solaris のシステム管理 (ネットワークサービス)

sendmail の version 8.12 からの変更点

この節では、次のトピックについて説明します。

sendmail の version 8.12 からの TCP ラッパーのサポート

TCP ラッパーは、特定のネットワークサービスを要求するホストのアドレスをアクセス制御リスト (ACL) と突き合わせて検査することによるアクセス制御の実装方法を提供します。要求は、状況に応じて、許可されたり拒否されたりします。このアクセス制御メカニズムを提供する以外に、TCP ラッパーは、ネットワークサービスに対するホストの要求を記録します。これは、有用な監視機能です。アクセス制御のもとに置かれるネットワークサービスの例として、rlogindtelnetdftpd などがあります。

version 8.12 より、sendmail で TCP ラッパーが使用できるようになりました。この検査によってほかのセキュリティー対策が省略されることはありません。sendmail で TCP ラッパーを有効にすることにより、検査が追加され、ネットワーク要求元の妥当性が検証されてから要求が許可されます。hosts_access(4) のマニュアルページを参照してください。


注 –

inetd(1M) および sshd(1M) での TCP ラッパーは、Solaris 9 リリースからサポートされています。


ACL については、『Solaris のシステム管理 (セキュリティサービス)』「アクセス制御リストによる UFS ファイルの保護」を参照してください。

sendmail の version 8.12 からの submit.cf 構成ファイル

version 8.12 より、sendmail に新しい構成ファイル /etc/mail/submit.cf が含まれるようになりました。この submit.cf ファイルを使用して、sendmail をデーモンモードではなく、メール配信プログラムモードで実行できます。デーモンモードとは異なり、メール配信プログラムモードでは root 権限は必要ありません。そのため、この新しいパラダイムを使用すると、セキュリティーが向上します。

submit.cf の機能については、次を参照してください。

次の事項に注意してください。

sendmail.cfsubmit.cf の機能の相違点

構成ファイル sendmail.cf は、デーモンモードで使用します。このファイルを使用すると、sendmail は、メール転送エージェント (MTA) として動作します。sendmail は、root によって起動されます。


/usr/lib/sendmail -L sm-mta -bd -q1h

sendmail.cf 特有のほかの機能については、次を参照してください。

sendmail の version 8.12 からの機能の変更

submit.cf が追加されたため、次の機能が変更されました。

sendmail の version 8.12 から追加されたまたは推奨されないコマンド行オプション

次の表では、 sendmail の追加されたコマンド行オプションまたは推奨されないコマンド行オプションについて説明します。コマンド行のほかのオプションについては、sendmail(1M) のマニュアルページを参照してください。

表 14–19 sendmail の version 8.12 から追加されたまたは推奨されないコマンド行オプション

オプション 

説明 

-Ac

オペレーションモードが初期メール配信を示していない場合でも、構成ファイル submit.cf を使用します。submit.cf についての詳細は、sendmail の version 8.12 からの submit.cf 構成ファイル」を参照してください。

-Am

オペレーションモードが初期メール配信を示している場合でも、構成ファイル sendmail.cf を使用します。詳細は、sendmail の version 8.12 からの submit.cf 構成ファイル」を参照してください。

-bP

各キューのエントリ数を出力します。 

-G

コマンド行から送信されたメッセージが、初期送信のためでなく、中継のためであることを示します。アドレスが絶対パスではない場合は、メッセージは拒否されます。正規化は実行されません。ftp://ftp.sendmail.orgsendmail とともに配布しているリリースノートで説明しているように、将来のリリースでは、不適切な形式のメッセージが拒否される可能性があります。

-L tag

指定された syslog メッセージに使用する識別子を タグ (tag) に設定します。

- q[!]I substring

受信者にこの部分文字列 (substring) を含むジョブだけを処理します。オプションに ! を追加すると、受信者にこの部分文字列 (substring) を含まないジョブだけを処理します。

- q[!]R substring

キュー ID にこの部分文字列 (substring) を含むジョブだけを処理します。オプションに ! を追加すると、キュー ID にこの部分文字列 (substring) を含まないジョブだけを処理します。

- q[!]S substring

送信者にこの部分文字列 (substring) を含むジョブだけを処理します。オプションに ! を追加すると、送信者にこの部分文字列 (substring) を含まないジョブだけを処理します。

-qf

キューにあるメッセージをシステムコール fork を使用しないで一度処理し、フォアグラウンドでプロセスを実行します。fork(2) のマニュアルページを参照してください。

-qGname

name で指定するキューグループにあるメッセージだけを処理します。

-qptime

各キュー用にフォークされた子プロセスを使用して、キューに保存されているメッセージを指定した間隔で処理します。次にキューが実行されるまでの間、その子プロセスはスリープしています。この新しいオプションは -qtime に似ています。qtime は、定期的に子をフォークしてキューを処理します。

-U

ftp://ftp.sendmail.orgsendmail とともに配付しているリリースノートで説明しているように、このオプションは version 8.12 以降では使用できません。メールユーザーエージェントでは、引数 -G を使用することをお勧めします。

sendmail の version 8.12 から PidFile オプションおよび ProcessTitlePrefix オプションに追加された引数

次の表では、PidFile オプションおよび ProcessTitlePrefix オプションにおけるマクロ処理の追加引数について説明します。これらのオプションについては、sendmail(1M) のマニュアルページを参照してください。

表 14–20 PidFile オプションおよび ProcessTitlePrefix オプションの引数

マクロ 

説明 

${daemon_addr}

0.0.0.0 などのデーモンアドレスを提供します。 

${daemon_family}

inetinet6 などのデーモンファミリーを提供します。

${daemon_info}

SMTP+queueing@00: 30:00 などのデーモン情報を提供します。 

${daemon_name}

MSA などのデーモン名を提供します。 

${daemon_port}

25 などのデーモンポートを提供します。 

${queue_interval}

キューを実行する間隔を提供します (00:30:00 など)。 

sendmail の version 8.12 から追加定義されたマクロ

次の表では、sendmail プログラムで使用するための追加マクロについて説明しています。マクロの値は、内部で割り当てられています。詳細は、sendmail(1M) のマニュアルページを参照してください。

表 14–21 sendmail に追加定義されたマクロ

マクロ 

説明 

${addr_type}

現在のアドレスを、エンベロープの送信側または受信者アドレスと認定します。 

${client_resolve}

${client_name} の解釈処理コールの結果、 つまり OKFAILFORGED、または TEMP を保持します。

${deliveryMode}

DeliveryMode オプションの値ではなく、sendmail が使用している現在のデリバリモードを指定します。

${dsn_notify}${dsn_envid}${dsn_ret}

対応する DSN パラメータ値を保持します。 

${if_addr}

インタフェースがループバックネット上にない場合に、受信接続用インタフェースのアドレスを提供します。このマクロは、特に仮想ホスティングに便利です。 

${if_addr_out}${if_name_out}${if_family_out}

${if_addr} の再利用を避けます。次の値を、それぞれ保持します。

送信接続用インタフェースのアドレス 

送信接続用インタフェースのホスト名 

送信接続用インタフェースのファミリ 

${if_name}

受信接続用のインタフェースのホスト名を提供します。これは、特に仮想ホスティングに便利です。  

${load_avg}

実行キューにあるジョブの現在の平均数を確認して報告します。 

${msg_size}

ESMTP ダイアログにあるメッセージサイズの値 (SIZE=parameter) を保持してから、メッセージを収集します。その後、sendmail によって計算されたメッセージサイズを保持したマクロを check_compat で使用します。check_compat については、表 14–25 を参照してください。

${nrcpts}

妥当性検査を行なった受信者の数を保持します。 

${ntries}

配信を試みた回数を保持します。 

${rcpt_mailer}${rcpt_host}${rcpt_addr}${mail_mailer}${mail_host}、および ${mail_addr}

引数 RCPT および MAIL を構文解析した結果を保持します。つまり、メール配信エージェント ($#mailer)、ホスト ($@host)、およびユーザー ($:addr) から解釈処理された RHS (Right-Hand Side) トリプレットを保持します。

sendmail の version 8.12 から追加されたマクロ

この節では、構成ファイル sendmail を構築するのに使用する追加マクロについて説明した表を示します。

表 14–22 構成ファイル sendmail を構築するのに使用する追加マクロ

マクロ 

説明 

LOCAL_MAILER_EOL

ローカルメールプログラムの行末を示すデフォルト文字列を置きかえます。 

LOCAL_MAILER_FLAGS

デフォルトで Return-Path: ヘッダーを追加します。

MAIL_SETTINGS_DIR

メール設定ディレクトリのパスを格納します (末尾のスラッシュを含む)。 

MODIFY_MAILER_FLAGS

*_MAILER_FLAGS を拡張します。このマクロは、フラグを設定、追加、または削除します。

RELAY_MAILER_FLAGS

中継メールプログラムの追加フラグを定義します。 

sendmail の version 8.12 から追加された MAX マクロ

次のマクロを使用して、受け入れ可能なコマンドを最大数設定し、sendmail による配信の遅れを防止することができます。これらの MAX マクロは、コンパイル時に設定できます。次の表にある最大値は、現在のデフォルト値でもあります。

表 14–23 追加された MAX マクロ

マクロ 

最大値 

各マクロが検査するコマンド 

MAXBADCOMMANDS

25 

未知のコマンド 

MAXNOOPCOMMANDS

20 

NOOPVERBONEXXUSR

MAXHELOCOMMANDS

HELOEHLO

MAXVRFYCOMMANDS

VRFYEXPN

MAXETRNCOMMANDS

ETRN


注 –

マクロによる確認を無効にするには、マクロの値を 0 に設定します。


sendmail の version 8.12 から追加または改訂された m4 構成マクロ

この節では、sendmail において追加または改訂された m4 構成マクロの表を示します。これらのマクロを宣言するには、次の構文を使用します。


symbolic-name(`value')

新しい sendmail.cf ファイルを構築する必要がある場合は、「sendmail 構成を変更する」第 13 章メールサービス (手順)を参照してください。

表 14–24 sendmail において追加または改訂された m4 構成マクロ

m4 マクロ

説明 

FEATURE()

詳細は、sendmail の version 8.12 からの FEATURE() の宣言についての変更点」を参照してください。

LOCAL_DOMAIN()

このマクロは、クラス w ($=w) にエントリを追加します。

MASQUERADE_EXCEPTION ()

マスカレードできないホストやサブドメインを定義する新しいマクロ。 

SMART_HOST()

このマクロは user@[host] のように、括弧で囲まれたアドレスに使用できます。

VIRTUSER_DOMAIN() または VIRTUSER_DOMAIN_FILE()

これらのマクロを使用する場合は、$=R$={VirtHost} を含めます。$=R は、中継が許可された一連のホスト名です。

sendmail の version 8.12 からの FEATURE() の宣言についての変更点

FEATURE() の宣言についての変更点については、次の表を参照してください。

FEATURE の新しい名前および改訂された名前を使用するには、次の構文を使用します。


FEATURE(`name', `argument')

新しい sendmail.cf ファイルを構築する必要がある場合は、「sendmail 構成を変更する」第 13 章メールサービス (手順)を参照してください。

表 14–25 追加または改訂された FEATURE() の宣言

FEATURE() の名前

説明 

compat_check

引数 : 次の段落の例を参照してください。 

この新しい FEATURE() によって、送信者アドレスと受信者アドレスからなるアクセスマップ内でキーを検索できます。この FEATURE() は、文字列 <@> で区切ります。たとえば、sender@ sdomain<@>recipient @rdomain のようにします。

delay_checks

引数 : friend にすると、スパムメールの friend テストを実行できます。また、hater にすると、スパムメールの hater テストを実行できます。

すべての検査作業を遅らせる新しい FEATURE()FEATURE(`delay_checks') を使用すると、クライアントが接続する場合、またはクライアントが MAIL コマンドを発行する場合に、ルールセット check_mail および check_relay は呼び出されません。代わりに、これらのルールセットはルールセット check_rcpt によって呼び出されます。詳細については、/etc/mail/cf/README ファイルを参照してください。

dnsbl

引数 : この FEATURE() は、最大次の 2 つの引数を受け入れます。

  • DNS サーバー名

  • リジェクトメッセージ

DNS 参照の戻り値を検査する回数を複数にできる新しい FEATURE()。この FEATURE() を使用して、参照が一時的に失敗した場合の動作を指定できます。

enhdnsbl

引数 : ドメイン名。 

dnsbl の強化バージョンの新しい FEATURE() 。この FEATURE を使用して、DNS 参照の戻り値を検査できます。詳細は、/etc/mail/cf/README を参照してください。

generics_entire_domain

引数 : なし。 

genericstable$=G のサブドメインに適用するのにも使用できる新しい FEATURE()

ldap_routing

引数 : 詳細は、http://www.sendmail.org の「リリースノート」を参照してください。

LDAP アドレスルーティングを実装する新しい FEATURE()

local_lmtp

引数 : LMTP (Local Mail Transfer Protocol) を使用できるメールプログラムのパス名。デフォルトは mail.local であり、今回の Solaris リリースでは LMTP を使用できます。

ローカルメールプログラムの DSN (delivery status notification) 診断コードのタイプを SMTP の正しい値に設定する FEATURE()

local_no_masquerade

引数 : なし。 

ローカルメールプログラムをマスカレードしないようにするために使用する新しい FEATURE()

lookupdotdomain

引数 : なし。 

アクセスマップの .domain を参照するのに使用する新しい FEATURE()

nocanonify

引数 : canonify_hosts またはなし。

FEATURE() には次の機能が含まれます。

CANONIFY_DOMAIN または CANONIFY_DOMAIN_FILE で指定した、ドメインのリストを演算子 $[ および $] に渡して正規化することができます。

canonify_hosts がそのパラメータとして指定されている場合には、<user@host> など、ホスト名だけを含むアドレスを正規化できます。

複数のコンポーネントを持つアドレスの末尾にドットを追加できます。 

no_default_msa

引数 : なし。 

sendmail のデフォルト設定を m4 構成ファイルでオフにする新しい FEATURE()。このファイルは、複数の異なるポート上で待機するために生成されたもので、RFC 2476 に実装されています。

nouucp

引数 : reject にすると、! トークンを使用できません。 nospecial にすると、! トークンを使用できます。

! トークンをアドレスのローカルの部分に使用するかどうかを決定する FEATURE()

nullclient

引数 : なし。 

通常の構成ですべてのルールセットを提供する FEATURE()。スパムメール対策チェックを実行します。

preserve_local_plus_detail

引数 : なし。 

sendmail がアドレスをローカル配信エージェントに渡す際に、アドレスの +detail の部分を保存できる新しい FEATURE()

preserve_luser_host

引数 : なし。 

LUSER_RELAY を使用している場合に、受信者のホスト名を保存できる新しい FEATURE()

queuegroup

引数 : なし。 

電子メールのアドレス全体または受信者のドメインに基づいたキューグループを選択できる新しい FEATURE()

relay_mail_from

引数 : ドメインは、任意の引数です。

メールの送信側がアクセスマップに RELAY として指定されており、それをヘッダー行 From: でタグ付けされている場合に、リレーを許可する新しい FEATURE()。省略可能な引数 domain を指定すると、メール送信側のドメイン部も検査されます。

virtuser_entire_domain

引数 : なし。 

$={VirtHost} を適用するのに使用する FEATURE()。$={VirtHost} は、VIRTUSER_DOMAIN または VIRTUSER_DOMAIN_FILE を使って生成できる virtusertable エントリを一致させるための新しいクラス。

また、FEATURE(`virtuser_entire_domain') を使用して、クラス $={VirtHost} をサブドメイン全体に適用することもできます。

次の FEATURE () 宣言はサポートされなくなりました。

表 14–26 宣言がサポートされていない FEATURE()

FEATURE() の名前

代わりの FEATURE 

rbl

削除されたこの FEATURE() の代わりに、FEATURE(`dnsbl') および FEATURE(`enhdnsbl') を使用してください。

remote_mode

/etc/mail/cf/subsidiary.mc では、FEATURE(`remote_mode') の代わりに MASQUERADE_AS(`$S') を使用できます。$S は、sendmail.cf における SMART_HOST の値。

sun_reverse_alias_files

FEATURE(`genericstable')

sun_reverse_alias_nis

FEATURE(`genericstable')

sun_reverse_alias_nisplus

FEATURE(`genericstable')

sendmail の version 8.12 からの MAILER() の宣言についての変更点

MAILER() を宣言すると、配信エージェントのサポートを指定できます。配信エージェントを宣言するには、次の構文を使用します。


MAILER(`symbolic-name')

次の変更に注意してください。

メールプログラムの詳細は、「メールプログラムと sendmailを参照してください。新しい sendmail.cf ファイルを構築する必要がある場合は、「sendmail 構成を変更する」第 13 章メールサービス (手順)を参照してください。

sendmail の version 8.12 から追加された配信エージェントのフラグ

次の表では、配信エージェントの追加されたフラグについて説明しています。デフォルトでは、これらのフラグは設定されていません。これらの 1 文字のフラグはブール型です。このフラグを設定したりその設定を解除したりするには、次の例のように、フラグを構文ファイルの F= 文に含めるか除外します。


Mlocal,    P=/usr/lib/mail.local, F=lsDFMAw5:/|@qSXfmnz9, S=10/30, R=20/40,
Mprog,     P=/bin/sh, F=lsDFMoqeu9, S=10/30, R=20/40, D=$z:/,
Msmtp,     P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990,
Mesmtp,    P=[IPC], F=mDFMuXa, S=11/31, R=21, E=\r\n, L=990,
Msmtp8,    P=[IPC], F=mDFMuX8, S=11/31, R=21, E=\r\n, L=990,
Mrelay,    P=[IPC], F=mDFMuXa8, S=11/31, R=61, E=\r\n, L=2040,
表 14–27 メールプログラムの追加されたフラグ

フラグ 

説明 

%

このフラグを使用するメールプログラムは、ETRN 要求や次のいずれかのキューオプションを使ってキューにあるメッセージを選択しないかぎり、最初の受信者宛にメールを配信したり、キューを実行したりしません。 -qI-qR、または -qS

1

このフラグは、\0 などのヌル文字を送信するメールプログラムの機能を無効にします。

2

このフラグは、ESMTP の使用を無効にし、代わりに SMTP を使用するように要求します。 

6

このフラグを指定すると、メールプログラムでヘッダーを 7 ビットにすることができます。 

sendmail の version 8.12 から追加された配信エージェントの設定

次の表では、配信エージェントを定義するコマンド M とともに使用できる新しい設定について説明しています。次の構文は、設定を新たに付加する方法、および構成ファイルの既存の設定に新しい引数を付加する方法を示しています。


Magent-name, equate, equate, ...

次の例には、新しい設定 W= が含まれています。この設定は、すべてのデータが送信されたあとでメールプログラムが戻るまでの最長待ち時間を指定します。


Msmtp, P=[IPC], F=mDFMuX, S=11/31, R=21, E=\r\n, L=990, W=2m

m4 の構成値の定義を変更するには、次の例のような構文を使用します。


define(`SMTP_MAILER_MAXMSGS', `1000')

この例では、smtp メールプログラムで 1 回の接続で配信されるメッセージ数を 1000 に制限しています。

新しい sendmail.cf ファイルを構築する必要がある場合は、「sendmail 構成を変更する」第 13 章メールサービス (手順)を参照してください。


注 –

通常、mailer ディレクトリで、この設定の定義を変更するのは、微調整が必要な場合だけです。


表 14–28 配信エージェントの追加された設定

設定 

説明 

/=

引数 : ディレクトリのパス。 

メールプログラムのプログラムを実行する前に chroot() を適用するディレクトリを指定します。

m=

引数 : define() ルーチンを使って事前に定義した次の m4 の値。

    smtp メールプログラムには SMTP_MAILER_MAXMSGS


    local メールプログラムには LOCAL_MAILER_MAXMSGS


    relay メールプログラムには RELAY_MAILER_MAXMSGS


smtplocal、または relay の各メールプログラムで、1 回の接続で配信するメッセージの数を制限します。

W=

引数 : 増分時間。 

すべてのデータの送信後、メールプログラムが戻るまでの最長待ち時間を指定します。 

sendmail の version 8.12 から追加されたキューの機能

次に、キューの追加された機能について詳しく説明します。

作業手順については、「キューディレクトリの管理 (作業マップ)」を参照してください。

sendmail の version 8.12 からの LDAP の変更点

次に、LDAP (Lightweight Directory Access Protocol) を sendmail で使用する際の変更点について説明します。

次の例では、これらのトークンが「 *」検索でどのように違うかを説明します。

表 14–29 トークンの比較

LDAP のマップ指定 

同等の指定 

結果 

-k"uid=%s"

-k"uid=*"

ユーザー属性を持つ任意のレコードに一致します 

-k"uid=%0"

-k"uid=\2A"

*」という名前を持つユーザーに一致します

次の表では、LDAP マップの追加されたフラグについて説明しています。

表 14–30 LDAP マップの追加されたフラグ

フラグ 

説明 

-1

一致したレコードが 1 つだけだった場合、そのレコードを返します。複数のレコードが一致して返される場合には、結果として、レコードが検出されなかったことと同じとなります。 

-r never|always|search|find

LDAP 別名の参照を解除するオプションを設定します。 

-Z size

一致したもののうち、返すレコード数を制限します。 

sendmail の version 8.12 からの組み込まれたメールプログラムの変更

前のバージョンに組み込まれていたメールプログラム [TCP] は使用できません。代わりに、新しく組み込まれたメールプログラム P=[IPC] を使用してください。プロセス間通信 ([IPC]) 組み込みメールプログラムで、それをサポートするシステム上の UNIX ドメインソケットへの配信を行えるようになりました。このメールプログラムは、指定したソケットで待機している LMTP 配信エージェントとともに使用できます。次に、メールプログラムの例を示します。


Mexecmail, P=[IPC], F=lsDFMmnqSXzA5@/:|, E=\r\n, 
S=10, R=20/40, T=DNS/RFC822/X-Unix, A=FILE /var/run/lmtpd

[IPC] メールプログラムの最初の引数の値が妥当であるか検査されるようになりました。次の表では、最初のメールプログラム引数に設定可能な値について説明しています。

表 14–31 最初のメールプログラム引数に設定可能な値

値 

説明 

A=FILE

UNIX ドメインソケットによる配信に使用します。 

A=TCP

TCP/IP 接続に使用します。 

A=IPC

最初のメールプログラム引数としては使用できません。 

sendmail の version 8.12 から追加されたルールセット

次の表では、追加されたルールセットとその動作について説明しています。

表 14–32 新しいルールセット

ルールセット 

説明 

check_eoh

ヘッダーから収集した情報を相関させ、欠けているヘッダーを検査します。このルールセットは、マクロストレージマップとともに使用し、すべてのヘッダーが収集されたあと、呼び出されます。  

check_etrn

check_rcptRCPT を使用するように、ETRN コマンドを使用します。

check_expn

check_rcptRCPT を使用するように、EXPN コマンドを使用します。

check_vrfy

check_rcptRCPT を使用するように、VRFY コマンドを使用します。

次に、ルールセットの追加機能について説明します。

sendmail の version 8.12 からのファイルの変更点

次の変更に注意してください。

sendmail version 8.12 と構成内の IPv6 アドレス

sendmail の version 8.12 より、アドレスを正しく識別するために、構成に使用する IPv6 アドレスの前に IPv6: タグを付ける必要があります。IPv6 アドレスを識別しない場合は、タグを前に付けません。