- 1.メールのプロトコル
- 2.SMTPのシーケンス
- 3.【参考】SMTPの通信をコマンドプロンプトで実行(telnet)
- 4.POP3(Post Office Protocol version3)
- 5.IMAP4(Internet Message Access Protocol version4)
- 6.APOP(Authenticated Post Office Protocol)
1.メールのプロトコル
(1)送信プロトコル
❶SMTP(Simple Mail Transfer Protocol) 【ポート番号:25】
英語のとおり、メールを転送するプロトコルである。
このプロトコルには問題点がある。それは、認証をしないこと。皆さんもメールの設定において、POPサーバのユーザ名とパスワードは設定するが、SMTPサーバのユーザ名とパスワードは設定したことがないと思う。つまり、不正な人間が誰でもメールを送れてしまうこと。
→解決策
❷POP before SMTP
認証が必要なPOP3による通信を行わせ、その通信が成功した送信元IPアドレスを、一定時間(たとえば5分)、SMTPの通信を許可するものです。なので、特別なポート番号を使うのではなく、25番ポートをそのまま使います。
ただ、今ではSMTP-AUTHが中心で、ほとんど使われていません。
※「SMTP AUTH方式には社内PCのメールソフトが対応していません。PCのメールソフトが対応していないくても利用できるPOP before SMTP方式を適用してください。(H20SV問1)」とあるように、SMTP AUTHの場合は、クライアントソフト側で認証用のユーザID、パスワードの設定が必要である。一方、POP before SMTPはクライアント側の設定は関係ない。サーバ側でPOP通信が成功した数秒間、そのIPアドレスからのSMTPを許可するからだ。
❸SMTP AUTH 【ポート番号:587】
・AUTHは認証(Authentication)。POPと同様に、ユーザ名とパスワード認証を行う。
・過去問ではSMTP-AUTHを使ったメールセキュリティ対策として「通常のSMTPとは独立したサブミッションポートを使用して、メールサーバ接続時の認証を行う。(H22春SC午前2問15)」と述べられている。
・過去問ではSMTP-AUTH認証に関して「クライアントがSMTPサーバにアクセスしたときに利用者認証を行い、許可された利用者だけから電子メールを受け付ける(H21春SC午前2問3)」と述べられている。
■SMTPのステータスコード
200番台 成功
300番台 成功し、続きのデータを要求
400番台 一時的なエラー
500番台 永久的なエラー
HTTPのステータスコードと、それほど遠くはありません。
HTTPのステータスコード
ネットワークスペシャリスト試験の過去問(H18秋NW午後Ⅰ問4)では、以下の問題があります。
過去問(H18秋NW午後Ⅰ問4) |
---|
外部メールサーバでの遮断時,SMTP通信の応答コードに,【 d 】なエラーを示す400番台ではなく,【 e 】なエラーを示す500番台を利用し,遮断した迷惑メールを再度受信することを抑止する。 |
↓
↓
↓
↓
↓
d:一時的
e:永久的
また、SMTPの通信は暗号化されていません。
→解決策
❹SMTP over TLS (SMTPS) 【ポート番号:465】
SMTP over TLSは、非暗号のSMTPの通信を、TLSを用いて暗号化するものです。SMTPをTLSによって暗号化する仕組みには、STARTTLSもあります。SMTPSとSTARTTLSに関する記事も参照ください。
(2)受信プロトコル
❶POP(Post Office Protocol) 【ポート番号:110】
Post Officeとは郵便局のこと。郵便局のように、郵便(メール)を預かると考えれば、イメージがわくのではないでしょうか。
このプロトコルにも問題点があります。
問題点1)パスワードが平文であること
パスワードが平文なので、盗聴されるとなりすましの危険がある。
→解決策
❷APOP(Authenticated POP) ※ポート番号はPOP3と変わらず110番
メールサーバとの通信時にパスワードのみを暗号化します。
メールの通信そのものが暗号化されるわけではありません。もちろん、メールサーバがAPOPに対応している必要があります。
問題点2)メール管理が大変
メールが大量になるとメール容量が増える。
→解決策
❸IMAP4(Internet Message Access Protocol ver4) 【ポート番号:143】
メール管理がサーバ側で行える。欲しいメールだけを取得できる。
3番目の添付ファイルだけを取得する、なども可能。
問題点3)メールが暗号化されていない。
IMAPもPOP3も、メール本文だけでなくパスワードも暗号化されていません。インターネット経由でメールサーバにアクセスする場合はTLSによる暗号化は必須と言えます。
→解決策
❹POP3S 【ポート番号:995】
そこで、POP3S(POP3 over TLS)によって、POP通信をTLS(古くはSSL)で暗号化します。
❺IMAPS
IMAPをTLSで暗号化するプロトコルとして、IMAPS(ポート番号993)がある
2.SMTPのシーケンス
メールを送信するSMTPプロトコルについて解説します。
SMTPのセッションの開始を表すコマンドは、HELO(Hello)またはEHLO(Extended Hello)です。EHLOは「Extended(拡張された)」という言葉があるとおり、拡張機能を確認するために使われます。たとえば、SMTP-AUTHや、STARTTLSなどは、通信相手のサーバもこれに対応していなければ、利用できません。STARTTLSであれば、EHLOの応答にSTARTTLSの文字が含まれます。
SMTPプロトコルでは,メール本文を送信する前に,次の図のようにMAIL FROMコマンドにて送信元のメールアドレスを通知し,RCPT TOコマンドにて宛先メールアドレスを通知します。
内容を覚えなくていいのですが、以下は参考まで。
1)Client→Server 3way-handshake SYN
2)Client←Server 3way-handshake SYN,ACK
3)Client→Server 3way-handshake ACK
4)Client←Server 220 サーバの準備OK
5)Client→Server HELO ClientPC1 ←自分のホスト名を送る
6)Client←Server 250 OK
7)Client→Server MAIL FROM user1@XXXX.example.com ←送信者のメールアドレス
8)Client←Server 250 OK
9)Client→Server REPT TO aite@YYYY.example.co.jp ←宛先のメールアドレス
10)Client←Server 250 OK
11)Client→Server DATA ←メールデータを送るというメッセージ。中身は空
12)Client←Server 354 ←OKです。終わるときは"."を入力してください。
13)Client→Server Message Body ←メールのBody(内容)
14)Client→Server End Of Message ← 最初に指定された"."を入力し、メッセージの終わりを告げる。
15)Client←Server 250 OK
16)Client→Server QUIT ←メールの送信そのものの終了。
17)Client←Server 221 ←了解。終了しますよ。
18)Client→Server 3way-handshake FIN,ACK ※この前にFINパケットが欲しいところだが、キャプチャすると存在しない。上記の221メッセージが代用しているかもしれない。
19)Client←Server 3way-handshake ACK
■ネットワークスペシャリスト試験の過去問(R1秋NW午前Ⅱ)
過去問(R1秋NW午前Ⅱ) |
---|
問9 SMTP(ESMTPを含む)のセッション開始を表すコマンドはどれか。 ア DATA イ EHLO ウ MAIL エ RCPT |
↓
↓
↓
↓
↓
正解は、イのEHLO
3.【参考】SMTPの通信をコマンドプロンプトで実行(telnet)
SMTPのシーケンスを以下に書きます。
試験にでるというよりは、イメージを湧かせるためです。
さらりと眺めて置く程度でよいでしょう。
クライアント ⇒ SMTPサーバ
HELO(クライアントのホスト名を通知)
MAIL FROM(クライアントのメールアドレス)
RCPT TO(宛先のメールアドレス)
DATA(メールヘッダ+メール本文)
QUIT(コネクションの終了)
試しにやってみる。
コマンドプロンプトから、telnet SMTPサーバ名 25(SMTPのポート番号)
SMTPのコマンドを実行
メールを受信してみると、正しく受信されている。
では、エンベロープとメールソフトで表示されるユーザ名が違うところを見てもらうためにも、以下を実行します。メールサーバは192.168.0.25で、postfix/deovecotでメールサーバを構築しています。
telnet 192.168.0.10 25
HELO <a.com> または自分の端末のIPアドレスを入れて、EHLO [10.1.1.10]
MAIL FROM:<test@a.com>
RCPT TO:<user1@example.com>
DATA
Subject: dummy mail
From: b@b.com
To: c@c.com
Hello
.
QUIT
メール本文を終えるには「.」をつける
以下、実際に受信してみると、DATAの中に入れたメールアドレスが表示されている。
以下は上記を実際に設定した様子の動画です。
https://drive.google.com/file/d/1P0QlMjqfhk-mfe8kj05jF8jpadQAZ07v/view?usp=sharing
4.POP3(Post Office Protocol version3)
❶POP3
POP3は、電子メールを受信するプロトコルの一つ。普及度合いはかなり高い。APOPやIMAP4などの他のプロトコルもあるが、これらに比べて圧倒的に普及している。Post Officeは郵便局の意味で、メールを郵便(手紙)と考えれば、この名が付いたのも理解できるのではないでしょうか。
H20秋FE午前問50では、「電子メールシステムで使用されるプロトコルであるPOP3の説明」として,「メールサーバのメールボックスから電子メールを取り出すときに使用するプロトコル」と述べている。
POP3は、かなり普及していますよね。
私もPOP3を使っています。
POP3に何か問題でもあるのですか?
まあ、運用でカバーできる範囲だが、いくつか問題というか課題がある。
まずは、ネットワークスペシャリスト試験の過去問(H23NW午後Ⅱ問2)を見てみたい。
過去問(H23NW午後Ⅱ問2) |
---|
Y社では,PCのフォルダに保存したメールの障害時に備えた対応作業は,社員に任せている。 POP3とIMAP4の違いは,メーラを使っているだけではほとんど意識されない。しかし,③複数のPCで同じメールアカウントを使用するときには,違いが分かる。 設問4 〔現在のメールシステムの構成と利用状況〕について, (1)~(3)に答えよ。 (1)社員に任せている,障害時に備えた対応作業の内容を,30字以内で述べよ。 (2)本文中の下線③のときに,POP3で発生する問題を,30字以内で述べよ。 |
↓
↓
↓
↓
↓
■試験センターの解答例は以下である。
設問4 (1) PCに作成されたフォルダのメールのバックアップ
(2) 複数のPCから,同じメールを読むことができない。
どちらも、それほど致命的な問題ではないが、IMAP4であれば、メールをサーバ側で管理するので、(1)の問題に対処できる。
また、IMAP4はWebメールのように、メールボックスをサーバに持つので、(2)の問題にも対処できる。
❷POP3S(POP3 over SSL)
APOPはパスワードのみ暗号化されるが、POP通信そのものをSSLで暗号化するのがPOP3Sである。httpに対するhttpsと同じ位置づけで、POP3に対するSSL対応がPOP3Sである。
ポート番号は995。
H21NW午後1問2の穴埋めにて、ポート番号995のプロトコルを問う出題があった。
メールソフトは対応しているものが多いが、メールサーバ側ではそれほど普及していないのが現実だと思う。
以下がメールソフト(WindowLiveメール)
5.IMAP4(Internet Message Access Protocol version4)
IMAP4の特徴は何か?
それはわかります。
「メールボックスの管理をサーバ側で行うこと」ですね。
でも、なんとなくイメージがわかないんですよ。
実際にやったことがないから。
その通り。メールサーバ側でメールボックスを管理する。POPは自分のPCにメールをダウンロードする必要がある。POPはせいぜい、LISTコマンドを使ってメールの件数とファイルサイズを見るくらいである。
また、IMAP4の4はVersion4のことで、IMAP4とPOPの互換性は無い
実際に設定してみると、イメージがわく。GmailなどのWebメールを利用しているのであれば、IMAP4を設定してみよう。
以下に、おそらく皆さんが設定できるであろうメールの使い方の3パターンを書いた。
①POP3
②Webメール(HTTPS)
③IMAP
である。実際に設定して使ってみることで、違いが分かる。①と③の操作性の違いはほとんどないこともわかるだろう。
過去問では、IMAP4に関して以下の記述がある。
メールサーバからメールを受信するためのプロトコルで、次の二つの特徴をもつ (1)メールをメールサーバ上のメールボックスで管理することによって、発信者やタイトルを確認してからメールをダウンロードするかどうかを決めることができる。 (2)文字列などでメールサーバ上のメールボックス内のメッセージ検索ができる。 (H19NW午前 問35より) |
電子メールシステムにおいて、利用者端末がサーバ~電子メールを受信するために使用するプロトコルで、選択したメールだけを利用者端末へ送信する機能、サーバ上のメールを検索する機能、メールのヘッダだけを取り出す機能などをもつものはどれか。 (H18SV午前問16より) |
過去問(H25春IP問84)ではIMAP4の説明として、「PCで電子メールを読むときに,PCにメールをサーバからダウンロードするのではなくサーバ上で保管し管理する。未読管理やメールの削除やフォルダの振分け状態などが会社や自宅にあるどのPCからも同一に見えるようにできるメールプロトコル」と述べられています。
これが分かりやすいIMAP4のメリットだと言えます。
ですから、自宅のPCからでも外出先のタブレットからでも同じメールを読むことができます。POP3の場合は、メールをPCに取り込んでしまいますから、PCに取り込んだメールを外出先のタブレットで見ることはできません。
◆メールデータの移行にはIMAP
また、IMAPはメールデータを移行する際に良く利用される。H21NW午後1問2では、IMAPを利用したメール移行が詳しく述べられている。一部を抜粋する。
IMAPやIMAPSを利用すればASPサーバにメールデータをアップロードできることが分かった。 |
FTPやHTTP、またはPOPではダメなの?
なぜIMAPなの?
まず、POPは送信機能がないのでできません。
FTPやHTTPでもメールデータをアップロードすることは当然できます。
ただ、メールの移行をIMAPでやったことがある人なら分かると思いますが、IMAPでやるととても便利です。
FTPなどでメールデータをアップロードしようとすると、やっかいです。
メールは受信ボックス、送信ボックス、削除済みなどと複数のボックスに分かれていて、その振り分けを保ったままサーバに送ることは難しい。パソコン間であれば、メールソフトのエクスポート機能とインポート機能を利用すればいい話であるが、受信するメールサーバ側にはそんな機能は普通は持っていない。メールソフトによってエクスポートされる形式が異なるため、ツールを作るのも困難です。
一方IMAPであれば、とても簡単に行えます。IMAPを使ったことが無い人がほとんどかもしれない。メールの移行においては、IMAPを使うことは多い。IMAPには、POPと違ってメールをアップロードする機能がある。例えば、OutlookExpressを利用すれば、既存のメールをIMAPのサーバにドラックアンドドロップで簡単に移行できる。これは言葉では説明しにくいが、とても便利である。
実際の設定としては、IMAPだからといってPOPと違った特別な設定があるかというと、そうではない。POPの設定と同じである。
6.APOP(Authenticated Post Office Protocol)
POP3では、パスワードを平文で送っている。APOPはAuthenticated POPなので、認証されたPOPという意味である。ちょっと直訳とは離れている気がしないでもないが、パスワードを暗号化して送る。ただし、メール本文は暗号化されない。
いまどきパスワードを平文ってありあえないですね。
こんなに普及しているのに。
盗聴されないのですか?
確かにそう。パケットキャプチャすれば、他人のメールパスワードがわかる。
社内なら閉ざされているからまだわかる。が、家庭ではプロバイダへの経路はインターネット経由なので、盗聴されたらおしまい。
とはいえ、パスワードどころか、そもそもメール本文も暗号化されていないから、パスワードだけ暗号化してもあまり意味がないけどね。
皆さんも薄々感じているであろうが、APOPはあまり普及してない。
その理由は以下であろう。
①APOPに対応していない
・POPサーバとメールソフトの両方がAPOPに対応している必要がある。
・APOPに対応しているメールソフトはBeckey!。OutlookやOutlookExpressは未対応。
②セキュリティがそれほど向上しない。
・メールのパスワードだけという中途半端な暗号化
・セキュリティ上の脆弱性があるということで、POP3SやWEBメールによるHTTPS通信が推奨されている。
(旧リンク)http://www.ipa.go.jp/security/vuln/200704_APOP.html