telnetで学ぶはじめてのメール送信 (ShanonAdventCalendar2017 - 20日目)

このエントリーをはてなブックマークに追加


 はじめまして

皆様、初めまして。
今年、シャノンに入社いたしました、takiと申します。

ざっくりと自己紹介をいたしますと、

学生時代に発酵食品について研究&食品衛生管理者取得

開発エンジニアとして就職

??

上記の通り、情報の勉強はしておらず、プログラミングも未経験でした。
我ながら謎な進み方していますが、もともとIT業界、プログラミングというものに興味があったため、望んだ道に進めていると思っています。

今年は、社会人はじめて、開発はじめて、都会はじめてのはじめて尽くしの1年でした。
そんなはじめて尽くしの中でも、はじめての配属は、メール関係のチームになったのですが、お恥ずかしながらメールがどういったものかを知りませんでした...

ということで、自己理解のために、アドベントカレンダーに参加し、「はじめてのメール」と題しまとめてみました。


はじめてのメール

・通信の種類

日常において、無意識にメールを送受信しているが、どういう仕組みなのか気になったため調べてみました。


SMTP (Simple Mail Transfer Protocol) :

メール送信時に使用されるプロトコル。
SMTPに対応したサーバをSMTPサーバといい、郵便局のような役割をします。
いざメールを送信するとなった場合、まずは、送信者のSMTPサーバに送られます。さらにそこから、受信者のSMTPサーバに送られた後に、受信者のメールボックスへと届きます。


POP (Post Office Protocol) :

メール受信時に使用されるプロトコル。
クライアントから、メールサーバに自分宛のメールが届いているか、リクエストがメールサーバに飛ぶと、メールサーバは本人かどうか、ユーザー名とパスワードを利用して認証を行います。
確認がとれた後、メールをリクエスト元に転送します。
イメージとしては、郵便局に行って、目的のものを受け取るような感じです。


IMAP (Internet Message Access Protocol) :

IMAPもメール受信時に使用されるプロトコルですが、POPとは仕組みが異なります。
POPはメールサーバからメールをダウンロードしてきますが、IMAPはメールサーバ上で保存、管理します。
そのため、PCやスマホ、タブレットなどの複数の端末からでも同じメール環境として利用することができます。


・実際にやってみる

telnetを使用して、SMTP通信を確認してみました。
ネットでtelnetの操作方法を探して、いざ挑戦。


telnet localhost 25    //(1)
Trying 108.XXX.XXX.XXX...
Connected to localhost.localdomain.
Escape character is '^]'.
220 localhost.localdomain ESMTP
HELO localhost    //(2)
250 localhost.localdomain Hello localhost [108.XXX.XXX.XXX]
MAIL FROM:<taki@example.com>    //(3)
250 OK
RCPT TO:<taki@example.com>    //(4)
250 Accepted
DATA    //(5)
354 Enter message, ending with "." on a line by itself
To:taki@example.com
Subject: test telnet smtp
From:taki@example.com

merumerumeru

.
250 OK
QUIT    //(6)
221 localhost.localdomain closing connection
Connection closed by foreign host.


うまくいった...?
いろいろ伏せていますが、括弧つき番号が書いてある部分を入力しました。
内容としては以下のようになってます。

(1)目的のSMTPサーバーと接続するポート番号を入力し、telnetコマンドで接続
SMTPサーバーはコマンドプロンプトなどで
nslookup -type=mx 使用するドメイン名
と入力すると調べることができます。
今回使用した25番ポートは、インターネット上でのメール送信のプロトコルに国際標準で割り当てられた識別番号で、メール送信のポート番号として一般的に割り当てられています。

(2)HELOコマンド
通信路の使用開始の宣言です。意味としては挨拶の「Hello」と同じです。
また、EHLOというコマンドもあり、こちらはSMTPサービス拡張仕様を利用したメール送信を行えます。
SMTPサービス拡張機能をサポートしていないサーバもあるので、拡張機能が使いたくても使えない場合があります。

(3)MAILコマンド
メール送信の開始を表すとともに、送信時にエラーが発生した場合の返信先を指定します。
MAILコマンドをサーバが受信すると、返信通路バッファ、転送経路バッファ、メールデータバッファの3つをクリアし、返信経路バッファに返信先を保存します。

(4)RCPTコマンド
メールの受取人を決めます。

(5)DATAコマンド
メッセージ送信開始をサーバに告げるコマンドで、ヘッダー情報、本文を入力します。
本文の最後にピリオドのみを入力することで、入力終了となります。

(6)QUITコマンド
接続を終了します。


今回は、送信、受信、どちらも自分のアドレスにしました。
ということで、メールボックスを見てみます。



感動、うれしい(語彙力)

POPも試そうと思ったのですがなんかうまくいきませんでした...
多分入力間違ってるんだと思います...


終わり

駄文にお付き合いいただきありがとうございました。
本当に触り程度でしたが、前より確実に力にはなりました。多分。
これからも、周りにおいていかれないように、
必死にしがみつきながら、日々、精進してまいりたいと思います。

それでは、よいクリスマスを、よい年末を


次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...