メールのインフラ
SMTP
SMTPはSimple Mail Transfer Protocolの略です。メールサーバー同士がメールを送り合うためのルールの集まりです。送るメールはすべて、SMTPを使ってサーバーからサーバーへ届けられます。
SMTPとは?(SMTPの意味)
SMTPはSimple Mail Transfer Protocolの略です。プロトコルとは、2台のコンピューターがやりとりするときに従う、決まったルールの集まりです。SMTPは、メールを送るためのルールの集まりです。現在の版はRFC 5321で定められています。RFCとは、インターネットの標準を定める公開文書です。
サーバーとは、常に動いていて、ほかのコンピューターのために仕事をするコンピューターです。メールサーバーは、メールを送ったり、受け取ったり、保存したりします。つまり「SMTPとは何か」の短い答えはこうです。メールサーバー同士がメールを受け渡す方法です。
SMTPはメールを運ぶだけです。受信トレイを表示することはありません。それはほかのプロトコルが行います。詳しくは後で説明します。
例:アナがベンにメールを送る
アナはGmailを使っています。ベンはNorthwindという会社で働いています。ベンのアドレスはben@northwind.comで、会社はMicrosoft 365のOutlookを使っています。アナはメールを書き、「送信」をクリックします。何が起きるかを見てみます。
- Gmailの送信サーバーが、アナのメールを受け取ります。
- @ より後ろの部分、northwind.comを読みます。これがドメイン、つまりインターネット上でのベンの会社の名前です。
- DNSでnorthwind.comのMXレコードを調べます。DNSとは、インターネットの公開ディレクトリです。MXレコードは、ドメインのメールを受け取るサーバーを示します。
- MXレコードはMicrosoftのサーバーを指しています。Gmailのサーバーは、そのサーバーへの接続を開きます。
- Gmailのサーバーは、
EHLOコマンドで名乗ります。次にMAIL FROMで送信者のアドレスを伝えます。 RCPT TO:<ben@northwind.com>で受信者のアドレスを伝えます。- Microsoftのサーバーが
250と応答します。そのアドレスあてのメールを受け付けるという意味です。 - Gmailのサーバーが、
DATAコマンドでメールそのものを送ります。 - Microsoftのサーバーがもう一度
250と応答します。メールを受け付け、ベンのメールボックスに入れます。 - Gmailのサーバーが
QUITで接続を終えます。
アナにもベンにも、これらの手順は見えません。アナには「送信済み」が表示され、ベンには新しいメールが届きます。
SMTPサーバーとは
SMTPサーバーとは、SMTPを使ってメールを送ったり受け取ったりするサーバーです。例では、Gmailの送信サーバーも、Microsoftの受信サーバーも、どちらもSMTPサーバーです。その上で動くソフトウェアをメール転送エージェント(MTA)と呼びます。
SMTPサーバーに関わるのは、メールソフトやアプリを設定するときです。たとえば、ウェブサイトのお問い合わせフォームからGmailアカウントを通じてメールを送りたいとします。フォームには、GmailのSMTPサーバーのアドレス smtp.gmail.com が必要です。ポート番号、ユーザー名、パスワードも必要です。フォームは各メールをそのサーバーに渡し、サーバーがそれを送ります。
大量のメールを送る企業は、通常SendGridやAmazon SESなどのメール配信サービス(ESP)を使います。これらのサービスは、顧客のためにSMTPサーバーを運用しています。
SMTPのポート:25、587、465
ポートとは、接続がどのサービスあてかをサーバーに伝える番号です。SMTPでは、よく使われるポート番号が3つあります。
| ポート | 用途 | 暗号化 |
|---|---|---|
| 25 | メールサーバーから別のメールサーバーへのメールの送信 | 任意。STARTTLSで有効にします |
| 587 | アプリやメールソフトから、自分のSMTPサーバーへのメールの受け渡し | ログイン前にSTARTTLSで有効にします |
| 465 | ポート587と同じ用途 | 最初から暗号化されます |
STARTTLSとは、開いている接続を暗号化された接続に切り替えるコマンドです。暗号化すると内容が読めない形に変わるので、2台のサーバーの間にいる誰にも読まれません。
アプリやメールソフトを設定する場合は、ポート587か465を使います。多くの家庭向けインターネットプロバイダーやクラウドのホスティング事業者は、ポート25での外向きの接続をブロックしています。感染したコンピューターがスパムを送るのを防ぐためです。
SMTPとIMAP、POP3の違い
SMTPはメールを送ります。メールを読むことはできません。読むことは、ほかの2つのプロトコルが担当します。
- SMTPは、メールソフトからサーバーへ、サーバーからサーバーへと、メールを送り出します。
- IMAPは、サーバーに残っているメールをメールソフトで読めるようにします。スマートフォンでもノートパソコンでも、同じ受信トレイが表示されます。
- POP3は、メールを1台の端末にダウンロードします。古い設定では、ダウンロード後にサーバーからメールを削除することがよくありました。
そのため、OutlookやApple Mailなどのメールソフトは2つの設定を使います。受信トレイを読むにはIMAPかPOP3を使います。送るにはSMTPを使います。
SMTPサーバーが拒否するとき
SMTPの応答は、すべて3桁のコードで始まります。最初の数字で、応答の種類がわかります。
- 2xxは成功です。
250は、要求が受け付けられたという意味です。 - 4xxは一時的な問題です。送信側のサーバーは後で再送します。例:
451、後でもう一度送ってください。 - 5xxは恒久的な失敗です。もう一度送っても失敗します。例:
550 5.1.1、メールボックスが存在しません。
本物のメールに5xxの応答が返ると、ハードバウンスになります。4xxの応答はソフトバウンスです。よくあるコードとそれぞれの意味は、SMTPエラーコードのページにまとめています。
まだ知らない送信者に、わざと4xxの応答を返すサーバーもあります。これをグレーリスティングと呼びます。最初の送信は失敗し、後の再送が受け付けられます。
SMTPとメールアドレス検証
メールアドレス検証ツールは、上の例と同じSMTPのやりとりを使いますが、手順8の前でやめます。RCPT TO でアドレスについて確認し、250 の応答なら、サーバーがそのアドレスあてのメールを受け付けるという意味です。550 5.1.1 の応答なら、メールボックスが存在しないという意味です。その後、検証ツールは QUIT を送るので、メールは1通も送られません。メールアドレスの一括検証ツールは、このメールアドレス検証をリスト全体に対して行うので、バウンスするアドレスを削除できます。
関連する用語
- MXレコードMXレコードとは、そのドメインのメールをどのサーバーが受け取るかを示す、ドメインの設定です。name@example.comにメールを送ると、メールサーバーはexample.comのMXレコードを調べて、メールの配信先を見つけます。
- ESP(メール配信サービス)ESP(メール配信サービス)とは、利用者の代わりにメールを送るサービスを提供する会社です。企業は、ニュースレター、領収書、パスワードの再設定メールを多くの人に送るために使います。Mailchimp、Brevo、SendGridがその例です。
- ハードバウンスハードバウンスとは、受信側のサーバーが恒久的に拒否したメールです。アドレスが存在しない、ドメインが存在しない、またはサーバーがメールをブロックした場合に起きます。同じメールをもう一度送っても、また失敗します。
- グレーリスティンググレーリスティングは、スパム対策の1つです。メールサーバーは、知らない送信者からの最初のメールを拒否し、数分後に送信者が再送したときに同じメールを受け付けます。本物のメールサーバーは再送しますが、ほとんどのスパム送信ソフトは再送しません。
