技術解説 · 出典付きの回答

SMTPサーバーとは?定義と技術的な概要

SMTPサーバーとは、簡易メール転送プロトコル(SMTP)を実装し、クライアントや他のサーバーとの間で送信メールの送信、受信、リレーを行うアプリケーションです。デジタルの郵便局のような役割を果たし、送信者からメッセージを受け取って、インターネットを経由して受信者のメールサーバーまでルーティングします。

仕組み

処理は、メールユーザーエージェント(MUA)がSMTPサーバーにリクエストを送るところから始まります。サーバーは一連のコマンドを使います。HELOまたはEHLOで接続を確立し、MAIL FROMで送信者を識別し、RCPT TOで受信者を指定します。DATAコマンドが発行されると、サーバーはメッセージの本文とヘッダーを送信します。受信者が別のドメインにいる場合、サーバーはDNSにMXレコードを問い合わせて宛先サーバーを見つけ、そこへメッセージをリレーします。

送信者にとっての重要性

SMTPサーバーは、メールが正しくルーティングされ、受信側のシステムに受け付けられるようにするうえで非常に重要です。サーバーを適切に設定し、SPFやDKIMなどの認証レコードと組み合わせることで、メッセージが迷惑メールと判定されるのを防げます。専用のSMTPリレーサービスを使えば、開発者は会社のメインのメールサーバーのレピュテーションを危険にさらすことなく、大量のトランザクションメールを処理できます。

運用でよくある間違い

よくある間違いは、接続の種類に合わないポートを使うことです。ポート25は迷惑メールを防ぐためにISPによってブロックされていることが多く、ポート587がサブミッションの標準です。また、STARTTLSや暗黙的TLSを使わず、認証情報やメッセージの内容が平文のまま露出してしまうのもよくある失敗です。開発者は、SMTPの認証情報をアプリケーションのソースコードにハードコードせず、環境変数に保存するようにしてください。

具体的な実装例

Node.js環境では、開発者はNodemailerのようなライブラリを使ってSMTPサーバーに接続することがあります。ホストアドレス(smtp.sendgrid.netなど)、ポート587、安全な認証トークンを指定します。アプリケーションはメールオブジェクトをサーバーに渡し、サーバーが複雑なルーティングと最終的な宛先への配信を処理します。SendHQは https://sendhq.cc/tools で無料ツールを提供しており、メール基盤の管理に役立ちます。

リレーとサブミッションの違い

SMTPサーバーは通常、2つのモードで動作します。サブミッションサーバーはエンドユーザーからメールを受け付け、認証を行って送信者の身元を確認します。リレーサーバーは、ネットワーク上の異なるSMTPサーバー間でメールを移動させます。認証なしであらゆる送信元からメールを受け付けるリレーサーバーはオープンリレーと呼ばれ、深刻なセキュリティリスクであり、現在のメールフィルターではほぼ確実にブロックされます。

よく寄せられる質問

SMTPとIMAPの違いは何ですか?

SMTPは、送信メールの送信やリレーにのみ使われます。IMAPとPOP3は、サーバー上のメールボックスからメッセージを取得したり管理したりするために使われます。

安全に送信するにはどのSMTPポートを使うべきですか?

STARTTLSを使ったメールのサブミッションには、業界標準であるポート587を使います。ポート465は暗黙的TLSに使われ、ポート25は主にサーバー間のリレー用です。

SMTPサーバーがメールを拒否するのはなぜですか?

拒否は通常、認証の失敗、IPアドレスがブラックリストに載っていること、または送信者を検証するためのSPFやDKIMなどのDNSレコードがないことが原因で発生します。

自分でSMTPサーバーを運用できますか?

はい。ただし、主要なプロバイダーに迷惑メールと判定されないよう、IPレピュテーションとDNS設定を維持するためにかなりの手間がかかります。

一次情報源