SMTP 出口機能を使用すると、インストール・システムは送られてくる不要なメール (スパム) の量を制御できるようになります。SMTP は、MVS™ が提供する動的出口機能 (CSVDYNEX マクロ) を利用します。詳しくは、z/OS MVS Programming: Authorized Assembler Services Guide を参照してください。カスタマーは、それぞれが望ましいと考えるポリシーを実装するために出口を用意します。ユーザーが定義 (および実装) した基準に基づいて、個々のメール項目を、他のリソースを消費する前にリジェクトすることができます。SMTPEXIT は、ローカル・ポリシーの実装を支援するためのプログラミング・ガイドとして提供されています。これは SEZAINST に入っています。この出口は、許可ライブラリー内の REENTRANT および AMODE 31 でなければなりません。SMTP 出口を使用するには、名前トークン (EZBTCPIPSMTPEXIT) が SYS1.PARMLIB(PROGxx) に確立されている必要があります。
ユーザー・プログラムが使用可能な場合、SMTPPROC プログラムが開始されると SMTP 出力データ・セットにメッセージ EZA5549I が生成されます。このメッセージは、ユーザー出口がアクティブであることを示します。
この出口は、SMTPPROC プログラムを停止させずに動的に置き換えることができます。これを行う手順は、次のとおりです。
EXIT DELETE EXITNAME(EZBTCPIPSMTPEXIT) MODNAME(MYEXIT) FORCE(YES)
EXIT ADD EXITNAME(EZBTCPIPSMTPEXIT) MODNAME(NEWEXIT)
SMTP 出口を設計する場合には、以下のような設計上の注意を考慮する必要があります。 この出口の実行中、リモート SMTP アプリケーションがローカル SMTP に接続されることに注意します。出口で時間がかかりすぎると、タイムアウト状態が発生して、リモート SMTP アプリケーションは接続を終了し、再試行のロジックに入ります。このような状態になると、メール・システムのパフォーマンスは著しく低下します。出口はできる限り効率的にコーディングし、出口で入出力操作や DNS リゾルバー・コールなどの余分な処理や待ち時間が発生するのを、極力避けるようにしなければなりません。メッセージのデータ部分を細かくスキャンする処理を避けられれば、メールをリジェクトする処理はより効率的なものになります。出口では処理を継続するかメッセージ全体をリジェクトすることができ、メッセージの個々のセグメントをリジェクトする機能はありません。出口では、メッセージの内容を変えることはできません。 出口はいつでもメッセージを受け入れ、そのメッセージについてのそれ以上の出口コールを使用不可にすることができます。SMTP プログラムによって現在実装されているコマンドだけが、出口プログラムに渡されます。 このようなコーディングを行う前に、RFC 2505 および RFC 2635 を読み、よく理解しておく必要があります。同時に複数の接続が発生する可能性があり、出口では接続ベースで本来あるべき状態に関する情報を持つよう、事前の対策をとっておかなければなりません。SMTP コマンドおよび標準に関する詳細は、RFC 821 および 822 に説明されています。
SMTP サーバーが SMTP 出口プログラムを呼び出し、インバウンド TCP/IP 接続だけでなく JES スプールから着信するデータも問い合わせることができるように設定することもできます。
詳しくは、「z/OS Communications Server: IP 構成解説書」を参照してください。