はじめに
今日は、SMTP(Simple Mail Transfer Protocol)がどのような流れでメールを送信しているのかをパパっと解決していきます。
SMTPメール送信の概要
①SMTPサーバ
↓DNSリゾルバ、MXレコード、Aレコード
②DNSサーバ
↓SMTPプロトコル
③送信
基本的な流れ
1.送信者のSMTPサーバーが、宛先のメールアドレスを受け取ります。
- 例えば、宛先が「user@example.com」だとします。この場合、「example.com」がドメイン名です。
送信者のSMTPサーバーっていうのは、わざわざ自分で用意したSMTPサーバというよりも、メールクライアント(Gmailアプリ、Outlook、Yahoo!メールなど)のSMTPサーバを指します。なので、私たちはアプリさえ入れていれば勝手にSMTPサーバが利用できているっていう訳です。
2.DNSサーバーへの問い合わせ:
- 送信者のSMTPサーバーは、まず宛先ドメイン(例: example.com)に対応するMXレコード(Mail Exchangeレコード)を探します。このMXレコードには、そのドメインのメールを受け取るサーバーの情報が入っています。
MXレコード(Mail Exchangeレコード)には、特定のドメインに対して「そのドメインのメールをどのサーバーが受け取るか」を指し示す情報が含まれています。
3.DNSサーバーの役割:
- SMTPサーバーが問い合わせると、DNSサーバーは「example.com」のMXレコードを返します。このレコードには、メールを処理するサーバーの名前が書かれています。
- また、MXレコードだけではなく、そのサーバーのIPアドレスを特定するために、Aレコード(Addressレコード)も使います。これで、メールを送る先のサーバーのIPアドレスがわかります。
Aレコード(Address Record)は、ドメイン名に対応するIPv4アドレスを返すDNSレコードのことです。例えば、example.comというドメインに対応するサーバーのIPアドレスが192.0.2.1であれば、AレコードはそのIPアドレスを返します。
4.メールの送信:
- SMTPサーバーは、MXレコードで得た情報を使って、宛先のメールサーバーに接続し、メールを送信します。
具体的な例
- 送信者のメールサーバー(smtp.sender.com)が「user@example.com」にメールを送ろうとします。
- smtp.sender.comはDNSサーバーに「example.com」のMXレコードを問い合わせます。
- DNSサーバーは「example.com」のメールを処理するサーバーとして、例えば「mail.example.com」を返します。そして、その「mail.example.com」のIPアドレス(Aレコード)も一緒に返します。
- smtp.sender.comは「mail.example.com」のIPアドレスに対してSMTPプロトコルを使って接続し、メールを送信します。
追加のポイント
- MXレコードには優先順位が設定されていることがあり、複数のメールサーバーが登録されている場合、最も優先度の高いサーバーにまず接続を試みます。
- DNSのキャッシュも重要です。問い合わせた結果はキャッシュに保存され、同じドメインにメールを送る際には再度問い合わせなくても済む場合があります。
DNSのキャッシュは、クライアント側のSMTPサーバや、DNSリゾルバに保存されます。
DNSリゾルバ
DNSリゾルバは、クライアントのSMTPサーバーが最初に問い合わせるサーバーです。このリゾルバーはDNSキャッシュを保存しており、以前に問い合わせた結果を保持しています。
- キャッシュがある場合:
DNSリゾルバーがキャッシュに目的のドメイン情報を持っていれば、そのキャッシュ情報を返します。これにより、再度問い合わせを行わずにすぐに結果が得られます。 - キャッシュがない場合:
リゾルバーがキャッシュに情報を持っていない場合、次の順序で他のDNSサーバーに問い合わせを行います。- ルートDNSサーバー: DNSリゾルバーはまずルートDNSサーバーに問い合わせを行います。ルートDNSサーバーは、次にどのTLDサーバー(例: .com、.net)に問い合わせるべきかを教えてくれます。
- TLDサーバー: ルートDNSサーバーからの指示に従い、リゾルバーはTLDサーバーに問い合わせます。TLDサーバーは、そのドメインに関する正確な情報を持つ権威DNSサーバーの場所を教えてくれます。
- 権威DNSサーバー: 最後に、リゾルバーは権威DNSサーバーに問い合わせ、そのドメインに関する正式なDNS情報(例: Aレコード、MXレコード)を取得します。
最終的に、DNSリゾルバーは取得した情報をクライアントのSMTPサーバーに返します。この一連の流れが、DNSリゾルバーの役割です。
まとめ
要するに…
SMTPのメール送信の流れは、まずユーザーがメールクライアントなどのアプリを利用してメールを送信しようとします。そうすると、そのメールクライアントのSMTPサーバーがメールの送信先のドメインを確認します。このドメインを確認する際に、SMTPサーバーはDNSサーバーに問い合わせを行います。DNSサーバーからは、そのドメインに関連するMXレコード(メールの受信サーバーを示すレコード)が返されます。もしMXレコードが設定されていない場合は、Aレコード(サーバーのIPアドレスを示すレコード)が返されることもあります。SMTPサーバーはこれらの情報をもとに、宛先のメールサーバーにメールを送信します。
おわりに
お疲れ様でしたポン!ITって複雑でとっつきにくってイメージですけど、ゆっくりと紐解いていけば、意外と理解できたりしますよね!
という、ことでこれからも今日みたいに、ゆっくりでもいいので着実に成長していきましょう!当たり前ですが、無理だと思ってやらないのは限りある人生においてとても勿体ないでことですよね!
ということで、これからもジャンジャン挑戦していきましょう!では、さらばじゃっ