SMTPとは

/ネットワーク

SMTP(Simple Mail Transfer Protocol)とは、インターネットで電子メール(以下、メール)を転送するプロトコルです。

メッセージ形式

メールメッセージはヘッダとボディに分かれます。ヘッダは複数のヘッダフィールドで構成され、件名や宛先などの情報が含まれています。ボディはメール本文に当ります。

文字コード

文字コードとは、文字をコンピュータで処理するために、各文字に番号を割り振った体系です。主な文字コードは以下になります。

基本的にメールは、ASCIIコード(英語)で書かれたテキストしか送れません。日本語のメールを送るためには、別の文字コードを使う必要がありますが、全て何らかの形でASCIIコードに変換しています。

ASCIIコード 文字が7ビットで表現され、アルファベットと特殊文字など127文字で構成されます。
JIS X 208 7ビットを2つ並べて日本語の文字集合を表す。
ISO-2022-JP 7ビット体系の文字コード。文字コード切り替えるために、制御コード(エスケープシーケンス)を採用。
Shift JIS Microsoftが定めた文字コード。文字が割当てられた1バイト目のバイト数の範囲により、その文字が1バイトか2バイトかを判断。
ECU Extended Unix Code の略。AT&T社が定めた文字コード。

メールで日本語を送る場合は、ISO-2022-JP を使うのが標準とされています。これは、ISO-2022-JP が7ビット体系の文字コードだからです。旧来の7ビット体系しか扱えないメールクライアントがある場合、それ以外の文字コードでは文字化けが起こる可能性があります。

コンテンツの指定

メールに多言語や画像、音声などのコンテンツを扱うための規格が MIME(Multipurpose Internet Mail Extensions)です。MIMEは、ヘッダ部に日本語を含めるための仕組みとしての役割を持ちます。

メールを ISO-2022-JP で書いたとしても、途中のメールサーバがASCIIコードと認識してしまい、正常にメール転送が行えなくなる可能性があります。ボディ部(本文)はメール転送に関係ないので、ISO-2022-JP で書けば問題ありませんが、ヘッダ部はMIMEを利用する必要があります。

MIMEの主な機能は以下になります。

データの種類の指定
(Content-Type)
従来のテキストやHTML等のテキストファイ(text)、GIFやPNG等の画像ファイル(image)、MPEG等の動画ファイル(video)などの指定
エンコード方法の指定
(Content-Transfer-Encoding)
ボディが7ビットの文字のみのテキスト(7bit)や8ビットの文字が含まれているテキスト(8bit)、Quoted Printable形式でエンコードしたデータ(quoted-printable)や Base64形式でエンコードしたデータ(base64)などを指定
マルチパート
(Mutipart)
メールに添付ファイルを付けたり、HTMLメールを送るための手法、ボディ部に複数のパート(パートヘッダ+パートボディ)で構成

ヘッダフィールド

ヘッダフィールドの情報は以下になります。

Date: 曜日・日・月・年・時・分・秒・タイムゾーンを表示。
[Date: WW, DD MM YYYY HH:MM:SS +0900]
From: メールの作成者の名前・メールアドレスを表示。
[From: “NAME” <NNNN@XXXX.co.jp>]
Message-ID: メールを一意に識別する「msg-id」が指定。
TO:/CC:/BCC: メールの宛先を表示。
Received: トレースフィールド、経由したメールサーバの処理の記録。
[Received: from XXXX.co.jp ([***.***.***.***])]

通信プロトコル

メールクライアント(MUA:Mail User Agent)がメールサーバ(MTA:Mail Transfer Agent)にメ-ルを送信する手順は以下になります。

メールクライアント 方向 メールサーバ
メールサーバへ接続(Connected to -)


オープニングメッセージを応答
クライアント情報を送信[EHLO]


サポートしている拡張機能を応答
メッセージの差出人を指定[MAIL FROM]


確認を応答
メッセージの宛先を指定[RCPT TO]


確認を応答
メッセージの送信開始を要求[DATA]


確認を応答
メッセージの送信


確認を応答
切断を要求[QUIT]


確認を応答
切断(Connection closed by -)

SMTPコマンド

SMTPコマンドは、メールの送信や情報の確認に使われます。主なSMTPコマンドは以下になります。

コマンド 内容
HELO(Hello)
EHLO(Extended Hello)
クライアントの接続元の確認
MAIL(Mail) メッセージの送信者の指定
RCPT(Recipitent) メッセージの受信者の指定
DATA(Data) メッセージの送信開始を指定
RSET(Reset) 接続状態のリセット
QUIT(Quit) セッションの切断

SMTP応答コード

SMTP応答コードは3桁で構成され、最初の1桁目は応答が成功/失敗したといったコマンドの結果が分かるようになっています。

コード 内容
1yz コマンドの確認待ち
2yz コマンドの成功
・220:サービスの準備完了(Service ready)
・221:転送チャネルを閉じる(Service closing transmission channel)
・250:正常終了(Requested mail action okay, completed)
3yz コマンド途中の応答
・354:メールメッセージの入力(Start mail input; end with <CRLF>)
4yz 一時的なエラー
・451:コマンドが中断(Requested action aborted; error in processing)
5yz 恒久的なエラー
・500:構文エラー(Syntax error, command unrecognized)

 

IT
マネジメント、セキュリティ、ネットワーク、システム
散策路TOP
数学、応用数学、古典物理、量子力学、物性論、電子工学、IT、力学、電磁気学、熱・統計力学、連続体力学、解析学、代数学、幾何学、統計学、論理・基礎論、プラズマ物理、量子コンピュータ、情報・暗号、機械学習、金融・ゲーム理論

Wikipedia

 

タイトルとURLをコピーしました