概要
接続直後に 220 CommSim ESMTP ready を自動送信する「接続時あいさつ」と、EHLO・HELO・MAIL FROM・RCPT TO・DATA・QUIT の各コマンドに応答するオートメーションで構成されます。
フレーミングは「なし」(テキスト行ベース)。長さフィールドやバイナリ構造を持たないテキストプロトコルを、テキスト一致のオートメーションだけで表現する例です。
機器構成
単一の TCP サーバセッション。SMTP クライアント(CommSim.Sample のシナリオ「SMTP」や telnet 127.0.0.1 2525)が接続します。
SMTP クライアントメール送信アプリ
⇄
CommSimSMTP スタブ(2525)
通信フロー
サーバ側が接続確立直後に 220 を先に送り、以降クライアントのコマンドに応答します。
- 接続時 ←
220 CommSim ESMTP readyあいさつ(自動) - Client →
EHLO example.com - ← CommSim
250-CommSim/250 OK - Client →
MAIL FROM:<...> - ← CommSim
250 OK - Client →
RCPT TO:<...>→DATA - ← CommSim
250 OK→354 End data ... - Client →
QUIT - ← CommSim
221 Bye
想定プロトコル
SMTP は \r\n 区切りのテキストコマンドを 1 行ずつやり取りします。バイナリ構造は持たないため、フレーミングは「なし」で、1 回の TCP 受信を 1 メッセージとして扱います。
コマンド行(例) EHLO example.com\r\n
応答行(例) 250-CommSim\r\n
250 OK\r\n使用する機能
設定内容
プロジェクト設定
| 既定データ形式 | UTF-8(テキスト) |
| フレーミング方式 | なし(None) |
| セッション | TCP サーバ / ポート 2525 |
オートメーション(優先度の昇順で評価)
| 名前 | 優先度 | トリガー / 一致 | 送信内容 |
|---|---|---|---|
| 接続時あいさつ | 10 | 接続時 | 220 CommSim ESMTP ready\r\n |
| EHLO/HELO | 10 | 前方一致 EHLO | 250-CommSim\r\n250 OK\r\n |
| HELO | 11 | 前方一致 HELO | 250 CommSim\r\n |
| MAIL FROM | 20 | 前方一致 MAIL FROM | 250 OK\r\n |
| RCPT TO | 30 | 前方一致 RCPT TO | 250 OK\r\n |
| DATA | 40 | 前方一致 DATA | 354 End data ...\r\n |
| QUIT | 50 | 完全一致 QUIT\r\n | 221 Bye\r\n |
各コマンドは引数が続くため前方一致で判定。引数を取らない
QUIT だけは誤マッチを避けて完全一致にしています。優先度で評価順を明示し、先勝ちで出し分けます。開き方:
samples/smtp/smtp.commsim を「ファイル」→「開く」(Ctrl+O)。起動後、telnet 127.0.0.1 2525 等で接続すると、まず 220 が届きます。他のサンプルも構成・フロー付きで解説しています。
サンプル集へ戻る