完全なSMTP設定ガイド: ポート、認証、メールサーバーセットアップ

認証、シールドと鍵アイコン付きの保護サーバー、回路基板でつながるサーバーポートを示すサイバーセキュリティのイラスト(濃紺背景)

SMTP設定は、メールサーバー(またはメールクライアント)をセットアップして、Simple Mail Transfer Protocolを使用してメッセージを正しく送信するプロセスです。正しく設定すれば、メールはインボックスに届きます。間違えると、配信失敗、認証エラー、またはメッセージがスパムフォルダに静かに入ることになります。毎回確実に設定する必要のある3つのことは、正しいポート、正しい暗号化方法、そして機能する認証認証情報です。

SMTPが実際にすること

SMTPは、メールクライアントまたはアプリケーションが送信メッセージをメールサーバーに渡すために使用するプロトコルです。メールサーバーはそれらを受信者に向かってルーティングします。送信側のみを処理します。メール受信は別のプロトコルで処理されます:IMAP(同期用)またはPOP3(ダウンロード用)。

「送信」をクリックすると、クライアントはSMTPサーバーへのTCP接続を開き、認証し、メッセージを渡し、切断します。サーバーは同じプロトコルを使用してそのメッセージを受信者のメールサーバーに配信しようとし、宛先のMX(メールエクスチェンジ)DNSレコードを検索して、どこに送信するかを確認します。

SMTPはRFC 5321で定義されています。これは元のRFC 2821に代わるものです。仕様を理解することは、生のSMTP会話をデバッグするか、サーバーをゼロから設定する必要があるときに役立ちます。

SMTP ポートの説明:25、465、587

SMTP設定で遭遇する3つのポートがあります。それぞれが特定の役割を持っており、間違ったポートを使用することは、メール配信失敗の最も一般的な原因の1つです。

ポート 名前 暗号化 一般的な用途
25 SMTP なし(またはSTARTTLS) サーバー間リレー(MTA対MTA)
465 SMTPS 暗黙的なSSL/TLS レガシークライアント送信(古いアプリ)
587 送信 STARTTLS(明示的なTLS) 認証済みクライアントメール送信

ポート25対587:どちらを使うべきか?

ポート25は1982年に定義された元のSMTPポートです。これは、エンドユーザーがメールを送信するためではなく、互いに通信するメールサーバー向けに設計されました。ほとんどのISPとクラウドプロバイダーは、スパムを防ぐために、住宅と共有ホスティングIPからの送信ポート25をブロックしています。メールを送信するアプリケーションを実行している場合、ポート25を使用しようとするとほぼ確実に失敗します。

ポート587はクライアントまたはアプリケーションからメールを送信するための正しい選択肢です。RFC 6409で専用の「メッセージ送信」ポートとして標準化されました。STARTTLSが必要です。つまり、接続は暗号化されていない状態で開始され、認証情報が送信される前にTLSにアップグレードされます。これはGmail、Outlook、およびほぼすべての最新のメールプロバイダーが使用することを期待しているものです。

暗号化されていない接続を介して認証情報を送信しないでください。SMTPクライアントがSTARTTLSの失敗時にプレーンテキストにフォールバックする場合、ユーザー名とパスワードが平文で送信されます。クライアントを常に設定して、TLSを要求し、暗号化を確立できない場合は接続を拒否してください。

SMTPポート465:SSLレガシーポート

ポート465は珍しい歴史を持っています。1997年に一度SMTPS(SMTP over SSL)に割り当てられましたが、1998年にSTARTTLSがポート587で推奨されるアプローチになったときに割り当てが取り消されました。公式に廃止されたにもかかわらず、多くのメールサーバーはそれをサポートし続けており、後にIANAによって別の目的で再登録されました。

実際には、ほとんどのプロバイダーは依然としてポート465での暗黙的なSSL/TLSを使用した接続を受け入れます。これはSTARTTLSのようにミッドハンドシェイクでアップグレードするのではなく、TLSが最初のバイトから接続全体をラップすることを意味します。一部の古いアプリケーションとハードウェア(特定のネットワークプリンター、レガシーCRM)はポート465のみをサポートしているため、それらのケースでは有用なままです。

  • アプリケーションまたはデバイスが暗黙的なSSLを特に必要とし、STARTTLSができない場合はポート465を使用してください。
  • 他のすべてのポート587を使用します。これは最新の標準です。
  • クライアント送信のためにポート25を完全に避けてください。

SMTP認証:どのように機能するか

SMTP認証(SMTP AUTHと書かれることが多い)はRFC 4954で定義されています。サーバーが送信メールを受け入れる前に、クライアントがそのアイデンティティを証明する必要があります。それなしに、サーバーに到達できる誰でもそれを使用してスパムを送信できるため、オープンリレーは深刻なセキュリティ問題として扱われます。

SMTP設定で見る最も一般的な認証メカニズムは次のとおりです:

  • PLAIN:ユーザー名とパスワードをbase64エンコードして送信します。暗号化された接続(TLSが最初にアクティブである必要があります)でのみ安全です。
  • LOGIN:PLAINに似ていますが、ユーザー名とパスワードを別々の交換として送信します。TLSも必要です。
  • CRAM-MD5:パスワードを直接送信することを避けるチャレンジレスポンスメカニズム。最新のサーバーではあまり一般的ではありません。
  • XOAUTH2:Gmailおよびその他のGoogle Workspaceアカウントで使用されます。パスワードの代わりに、OAuth 2.0アクセストークンを提供します。これは「安全性の低いアプリアクセス」が無効になっているときに必要なものです。
アプリパスワード対メインパスワード:Gmail、Outlook、Yahooはすべて、OAuthをサポートしないSMTPクライアント用のアプリ固有のパスワードをサポートしています。アカウントセキュリティ設定から1つを生成し、実際のパスワードの代わりにそれを使用してください。メイン認証情報を変更することなく、独立して取り消すことができます。

メールサーバーセットアップ ステップバイステップ

Thunderbirdのようなメールクライアント、トランザクションメールを送信するWebアプリ、または自己ホストされたメールサーバーを設定しているかどうかにかかわらず、プロセスは同じ論理的なシーケンスに従います。

メールクライアントとアプリケーションの場合

  1. プロバイダーからSMTPホスト名を取得します。例: smtp.gmail.com smtp.office365.com mail.yourdomain.com
  2. 正しいポートを選択します。デフォルトとしてSTARTTLSを使用してポート587を使用します。アプリがそれを必要とする場合は、SSLのみでポート465にフォールバックします。
  3. 認証認証情報を入力します。これは通常、ユーザー名としてのフルメールアドレスとパスワードまたはアプリパスワードです。
  4. 暗号化方法を設定します。ポートと一致させます:587にはSTARTTLS、465にはSSL/TLS。
  5. 接続をテストします。ほとんどのメールクライアントには、「アカウント設定をテスト」または「確認」ボタンがあります。保存する前に使用してください。

自己ホストされたメールサーバー(Postfixの例)

Postfixを使用して独自のサーバーを実行している場合、コアSMTP設定は /etc/postfix/main.cf に存在します。サードパーティのSMTPプロバイダーを通じてリレーするサーバーの最小限の実装例を次に示します:

# /etc/postfix/main.cf - Basic relay configuration

relayhost = [smtp.sendgrid.net]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_use_tls = yes

編集後、 /etc/postfix/sasl_passwd を認証情報で作成し、 postmap /etc/postfix/sasl_passwd を実行してハッシュしてから、 systemctl reload postfix でPostfixをリロードします。

sasl_passwdをすぐにロックダウンしてください。 chmod 600 /etc/postfix/sasl_passwd および chmod 600 /etc/postfix/sasl_passwd.db を実行してファイルを作成した後。読み取り可能な認証情報ファイルは一般的なサーバーの設定ミスです。

一般的なプロバイダーの一般的なSMTP設定

プロバイダー SMTPホスト ポート 暗号化 認証に関する注記
Gmail smtp.gmail.com 587 STARTTLS アプリパスワードまたはOAuth2を使用
Gmail(代替) smtp.gmail.com 465 SSL/TLS アプリパスワードまたはOAuth2を使用
Microsoft 365 smtp.office365.com 587 STARTTLS 最新の認証またはアプリパスワード
Yahoo Mail smtp.mail.yahoo.com 465 SSL/TLS アプリパスワードが必要
Zoho Mail smtp.zoho.com 587 STARTTLS ユーザー名としてのフルメール
Amazon SES email-smtp.us-east-1.amazonaws.com 587 STARTTLS IAM SMTP認証情報

SMTP接続の問題のトラブルシューティング

ほとんどのSMTP障害は少数のカテゴリーに分類されます。ログを掘り下げる前に、ポートが実際にサーバーまたはネットワークから到達可能かどうかを確認してください。ファイアウォールまたはISPブロックが原因であることが多く、特別なツールがなくても迅速に確認できます。

メールサーバーでSMTPポートが開いているかどうかは、無料のオンラインポートチェッカーを使用して確認できます。メールサーバーのホスト名またはIPを入力し、ポート25、465、または587を選択して、テストを実行します。結果が閉じているか、タイムアウトとして戻ってくる場合、問題はネットワークレベル(ファイアウォール、ISPブロック、またはサービスが実行されていない)であり、アプリ内の設定エラーではありません。

一般的なエラーメッセージとその意味

  • 接続が拒否されました/接続がタイムアウトしました:ポートがブロックされているか、サービスがリッスンしていません。ファイアウォールルールを確認し、SMTPデーモンが実行されていることを確認してください。
  • 535認証失敗:ユーザー名またはパスワードが間違っています。Gmailの場合、これは通常、アカウントパスワードではなくアプリパスワードが必要であることを意味します。
  • 550 5.7.1リレーアクセスが拒否されました:サーバーはその送信者アドレスのメールをリレーするように設定されていないか、MAIL FROMコマンドの前に認証が行われませんでした。
  • 421接続が多すぎます:受信サーバーがレート制限しています。送信頻度を減らすか、遅延を伴うキューを実装してください。
  • TLSハンドシェイク失敗:証明書の不一致または古いTLSバージョン。サーバーのSSL証明書が有効であることを確認し、ほとんどのプロバイダーが無効にしているTLS 1.0または1.1の使用を試みていないことを確認してください。

クイック診断チェックリスト

  1. SMTPポートが開いていて、送信環境から到達可能であることを確認してください。
  2. ホスト名が nslookup smtp.yourdomain.com で正しく解決されることを確認してください。
  3. MXToolbox Blacklist Checkなどのツールを使用して、送信IPがブロックリストに含まれていないことを確認してください。
  4. SPF、DKIM、DMARCのDNSレコードが正しく公開されていることを確認してください。欠落または破損したレコードにより、正当なメールが拒否されたり、ジャンク化されたりします。
  5. メールサーバーログを確認してください。Postfixの場合は、 /var/log/mail.log を確認してください。ログの実際のSMTPレスポンスコードは、リモートサーバーが何を拒否したかと理由を正確に示しています。
SPF、DKIM、DMARCはSMTP設定と同じくらい重要です。完璧に設定されたSMTPサーバーでも、これらのDNSレコードが欠落している場合、配信可能性に問題が生じます。SPFは、受信サーバーに対して、どのIPがドメインに対して送信を許可されているかを通知します。DKIMは、送信メッセージに暗号署名を追加します。DMARCは、いずれかのチェックが失敗した場合に何をするかを受信者に指示します。
メールサーバーセットアップのためのSMTPポートステータスを確認するオンラインポートチェッカーツール

SMTPポートは実際に開いていますか?

SMTPの設定を非難する前に、問題がブロックされたポートではないことを確認してください。当社の無料ポートチェッカーを使用すると、任意のメールサーバーでポート25、465、または587を即座にテストできるため、ファイアウォールの問題に対処しているか、設定エラーかどうかがわかります。

SMTPポートを今すぐ確認してください→

ポート465は暗黙的なSSL/TLSを使用します。つまり、接続全体が最初から暗号化されています。ポート587はSTARTTLSを使用します。これは平文接続として開始され、認証情報を送信する前にTLSにアップグレードされます。どちらも正しく設定されている場合は安全ですが、ポート587はクライアントメール送信に推奨される最新の標準です。アプリケーションが特に暗黙的なSSLを必要とし、STARTTLSをサポートできない場合にのみ465を使用してください。

ポート25は、ほとんどの住宅および共有ホスティングネットワークでブロックされています。これは、侵害されたマシンからスパムを直接送信するために歴史的に使用されていたためです。送信ポート25をブロックすることで、ISPとクラウドプロバイダー(デフォルトではAWS EC2を含む)は、スパムソースとして使用されているIPレンジを防止します。アプリケーションからメールを送信する場合は、ポート587を使用してください。ポート25がサーバー間リレーのために開く必要がある正当なメールサーバーを実行している場合は、通常、プロバイダーにブロックを解除するよう要求する必要があります。

ほとんどの場合、SMTPユーザー名はフルメールアドレスです。例えば you@yourdomain.com 。古いシステムの中には、@記号の前のローカル部分のみを使用するものがあります。Amazon SESなどのサービスの場合、ユーザー名はメールアドレスではなく、別のIAM生成SMTP認証情報です。特定のプロバイダーのドキュメントを常に確認してください。2要素認証が有効になっているGmailまたはOutlookを使用する場合は、通常のアカウントパスワードの代わりにアプリ固有のパスワードを生成する必要があります。

複数のレベルでテストできます。まず、ポートチェッカーツールを使用するか、サーバーから telnet smtp.yourdomain.com 587 を実行して、SMTPポートに到達可能であることを確認します。ポートが開いている場合は、 openssl s_client -starttls smtp -connect smtp.yourdomain.com:587 を使用して完全なSMTPハンドシェイクをテストできます。これはTLS証明書を表示し、生のSMTPコマンドを入力できます。実際のインボックスに配信せずにエンドツーエンドのテストを行うには、Mailtrapなどのサービスを使用してください。これはSMTP接続を受け入れ、それを転送せずにメッセージを表示します。

成功したSMTP認証は、サーバーの使用が許可されていることを証明するだけです。スパムフィルタリングは受信側で個別に行われ、複数の要因の組み合わせに基づいています:送信IPがブロックリストに登録されているかどうか、SPFレコードがそのIPがドメインに対して送信を承認しているかどうか、DKIM署名が有効でDNSレコードと一致しているかどうか、およびDMARC ポリシーが公開されているかどうか。欠落または破損したSPFレコードだけでも、GmailまたはOutlookがメッセージをジャンク化するのに十分です。3つのDNSレコードをすべて確認し、送信IPの評判を確認してください。

はい、ただし制限があります。Gmailの SMTPサーバー(ポート587の smtp.gmail.com )は、Gmailアカウントとして認証されたメールを送信します。「From」アドレスをカスタムドメインに表示したい場合は、Gmailの設定の「次のアドレスとして送信」で、そのアドレスを追加し、所有権を確認する必要があります。ただし、Gmailは一部のメールクライアントで表示される「gmail.com経由で送信」という注釈を追加します。独自のドメインを使用したクリーナーなセットアップの場合、Amazon SESなどのトランザクションメールプロバイダーまたは専用のSMTPリレーを使用する方が、長期的には優れた選択肢です。