PR

WordPressメールが届かない原因と対策!仕組みからSMTP設定まで解説

ブログ運用

「あれ?SMTPの設定項目がない……?」
WordPressをインストールして初期設定を行う際、メールに関する細かな設定がどこにもないことを不思議に思ったことはありませんか?

通常、WordPressから届くのは「システムの更新通知」や「パスワードリセット」といった管理用メールだけなので、初期状態では設定が不要に見えるかもしれません。

しかし、そのまま運用を続けていると、お問い合わせフォームなどを設置した際に「メールが相手に届かない」「迷惑メールに振り分けられる」という問題に直面することがあります。

では、初期状態のWordPressは一体どのような仕組みでメールを送っているのでしょうか?
そして、なぜ「SMTP設定」が推奨されているのか、その理由を分かりやすく解説します。

スポンサーリンク

1. 初期状態のWordPressがメールを送信できる仕組み

WordPressにSMTP(メールサーバー)の設定をしていない状態でもメールが送れるのは、レンタルサーバー自身が持つメール送信機能を利用しているからです。

WorPrssに標準で用意されている wp_mail() 関数を実行すると、メールは以下の経路をたどって相手に届きます。

  • WordPress(wp_mail)
    パスワードリセットやコメント通知が発生すると、WordPressは標準の wp_mail() 関数を呼び出します。
  • PHP の mail() 関数
    wp_mail() は、サーバーのプログラム言語であるPHPの mail() 関数へ処理を引き渡します。
  • サーバーのメール送信コマンド(MTA)
    PHPから渡されたメールは、レンタルサーバーにインストールされている PostfixSendmail などのメール転送コマンド(MTA)が受け取り、相手のメールサーバーへと配送します。

    相手のメールサーバー

外部のメールサーバーへ接続しにいくのではなく、バケツリレーのように足元のレンタルサーバーの機能を使って直接送っているため、事前の設定がなくてもメールが飛ぶ仕組みになっています。

送信元メールアドレスはどう決まる?

この方法でメールを送信する場合、多くの環境では送信元(From)アドレスを自由に指定できず、自動的に次のようなアドレスになります。

wordpress@あなたのドメイン

※これはWordPressが仕様として初期値に決めているものですが、サーバーの環境や使用するプラグインによって書き換えられる場合もあります。

2. なぜ、SMTP設定をした方がよいのか?

現状でメールが届いているなら、そのままでいいのでは?

と思うかもしれません。

しかし現在、この標準機能だけに頼ることには大きなリスクがあります。

☝🏼リスク① 共有サーバーの「連鎖的な評価低下」に巻き込まれる

多くのレンタルサーバーは、1つのサーバー(IPアドレス)を複数のユーザーで共有しています。

もし同じサーバーを使っている他の利用者が大量のスパムメールを送信した場合、そのサーバー全体の信用が落ちてしまいます。

その結果、何も悪いことをしていないあなたのサイトのメールまで、巻き添えで「迷惑メール」扱いされてしまうリスクがあります。

☝🏼リスク② GmailやYahoo!メールで進む「送信ドメイン認証」の厳格化

近年、主要なメールサービスでは、なりすましメール対策として送信ドメイン認証をこれまで以上に重視するようになりました。

特にGmailとYahoo!メールは、大量送信者に対して送信ドメイン認証を必須に近い形で求めており、認証が不十分なメールは配信品質が大きく低下する可能性があります。

認証が適切に行われていないメールは、次のような扱いを受けることがあります。

  • 迷惑メールフォルダーへ強制隔離される
  • メールサーバー側で受信拒否される(不達)

昨日まで届いていたのに、急に届かなくなった!」というトラブルが頻発しているのは、メールの受信制限(セキュリティ)が日々厳しく進化していることが大きな原因です。

3. SMTP設定をすると何が変わる?

SMTP設定を行うと、メールの送信経路が変わります。

レンタルサーバーの簡易的な送信機能を使うのをやめ、「Gmail(Google Workspace)」や、「エックスサーバーやロリポップなど、契約しているレンタルサーバーの正規のメールサーバー(SMTP)」を正しく経由して送信するようになります。

送る前に「ユーザー名」と「パスワード(またはAPI)」で正規の利用者であることを証明(SMTP認証)してから送信するため、相手のメールサーバーからの信頼度が跳ね上がり、メールの到達率が大幅に向上します。

4. WordPressをSMTP経由にする方法

WordPressで wp_mail() がPHPの mail関数にデータを渡す処理を止め、SMTP経由に変えるには、システムに対して $phpmailer->isSMTP(); (=「SMTPモードで送りなさい」という命令)を出す必要があります。🤔

これを実現するには、主に2つの方法があります。

☝🏼方法① functions.php にコードを書き込む

テーマ(子テーマ)の functions.php に以下のコードを追記することで、フックを引っ掛けて送信経路をSMTPサーバー経由へ上書きできます。

add_action('phpmailer_init', function( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.example.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587; // SSLなら465、TLSなら587
$phpmailer->Username = 'your-username@example.com';
$phpmailer->Password = 'your-smtp-password';
$phpmailer->SMTPSecure = 'tls'; // SSLなら'ssl'
});

緑色で表示した部分を、ご利用のSMTP情報に置き換えます。

☝🏼方法② SMTPプラグインを導入する(一般的)

ブログやWebサイトを運用しているのであれば、「SMTPプラグイン(例:WP Mail SMTPなど)」を導入するのが一般的です。

プラグインの役割は、本質的には上記の functions.php への記述を設定画面から安全に行えるようにすることですが、それ以外にも以下のようなメリットもあります。

  • 入力ミスを防ぐ
    画面の項目に沿って情報を入れるだけなので、コードの記述ミスによる画面真っ白(構文エラー)を防げる。
  • テストメール機能
    設定後、その場で正しく届くかのテストができる。
  • 送信ログの管理
    過去にどんなメールが正しく送れたか(または失敗したか)を確認できる。

SMTPプラグインをインストールする

上記のコードを管理画面から簡単に設定できる超軽量プラグイン(SMTPifyも用意しています。

SMTPの設定は、一度正しく行えば再設定が必要になることはほとんどありません。そのため、このプラグインSMTPifyは必要最低限の機能だけに絞り込み、非常に軽量な設計としています。

レンタルサーバーが提供するSMTPサービスを利用する用途であれば、この機能だけで十分対応できます。なお、無駄なメニューを増やさない設計のため、有効化後はプラグイン一覧にのみ表示されます。

  • WordPressダッシュボードを開く
  • 「プラグイン」→「プラグインを追加」をクリック
  • 検索欄に「smtpify」と入力
  • 「今すぐインストール」をクリック
  • 「有効化」をクリック

SMTPプラグインの設定手順

有効化後、設定画面で以下の入力欄にSMTP情報を入力します。

  • SMTPホスト
    ご利用中のレンタルサーバーやメールサービスが指定する「SMTPサーバーのドメイン(例: smtp.example.com)」を入力します。
  • 暗号化
    セキュリティの通信規格を選択します。現在の環境では、通常は 「TLS」 を選択します(サーバーの指定によっては「SSL」の場合もあります)。
  • ユーザー名
    SMTP認証に使用するユーザー名を入力します。
    多くの場合は、お使いのメールアドレスそのものがユーザー名になります。
  • パスワード
    メールアカウントを作成した際に設定したメールパスワードを入力します。(※Gmail等を利用する場合は、ここで専用の「アプリパスワード」の入力が必要になる場合があります)
  • 送信者メールアドレス(任意)
    相手に届いたときに「差出人」として表示させたいメールアドレスを入力します。
  • 送信者名(任意)
    メールの受信画面で差出人の名前(例: 〇〇ブログ名など)として表示したい名前を入力します。
    ※注意:利用するメールサーバーや送信アプリ側の仕様によっては、ここに入力した名前ではなく、サーバー側で設定されている名前が強制的に適用(上書き)される場合があります。
  • 設定を保存
    すべての項目を入力し終えたら、保存ボタンを押して設定を反映させます。

これらの設定をすることで、今後、WordPressにおいて送信されるメールはすべてSMTPサーバー経由となるため、もし今までに届かなかったり迷惑メールへ振り分けられていたメールも正しく相手に届くようになります。

Gmailの場合の設定
  • SMTPホスト : smtp.gmail.com
  • 暗号化:TLS(STARTTLS)
  • ユーザー名 : Gmailアドレス(例:example@gmail.com)
  • パスワード : 16文字のアプリパスワード
    アプリパスワードの取得:
    https://myaccount.google.com/security
    (Googleアカウントの「セキュリティ」→「2段階認証プロセス」→「アプリパスワード」)

まとめ

WordPressが初期状態でメールを送信できるのは、レンタルサーバーの標準機能に頼っているおかげです。

しかし、送信者認証が絶対視されるようになった現代のネット環境において、この「初期状態のまま」での運用はお問い合わせの取りこぼしや通知の不達といった問題に繋がりかねません。

読者からのメールを確実に、安全に届けるためにも、ブログを立ち上げたら早い段階で「SMTP設定プラグイン」を導入し、信頼性の高いメール送信環境を整えておきましょう

おわりに(コラム)

SMTP(Simple Mail Transfer Protocol)は、メールを送信するための通信手順(プロトコル)です。

この仕組みは1980年代に標準化され、40年以上にわたりメール送信の根幹を支えてきた通信プロトコルです。

SMTPという仕組み自体はほとんど変わっていませんが、近年はセキュリティ面が大幅に強化されています。

インターネットが普及し始めた頃は、SMTPサーバーはプロバイダーや企業、大学などさまざまな組織によって公開されていました。

当時は認証を必要としないSMTPサーバーも多く、SMTPサーバーのIPアドレスやドメイン名が分かれば、メールを送信できる場合も少なくありませんでした。

しかし、認証なしで利用できるSMTPサーバーの存在は、大量の迷惑メール(スパムメール)の送信に悪用されるようになりました。

そのため、2000年前後からはSMTP認証が急速に普及し、多くのプロバイダーでは、自社の契約者だけがSMTPサーバーを利用できるようになりました。

SMTPサーバーへ接続する際には、アカウントとパスワードによる認証が当たり前となり、この状態が長く続きました。

さらに2020年代に入ると、Googleをはじめとする多くのサービスでは、セキュリティ強化のために二段階認証(2要素認証)の利用が推奨・必須となっていきます。

ところが、WordPressやメールソフト、各種アプリケーションなどは、スマートフォンでの認証コードを入力できません。そのままではGoogleのSMTPサーバーへログインできなくなってしまいます。

そこで用意されたのが「アプリパスワード(App Password)」です。

これは通常のログインパスワードとは別に発行される専用のパスワードで、二段階認証を有効にしたまま、メールソフトやWordPressなどのアプリケーションだけが安全にSMTPサーバーへ接続できるようにする仕組みです。

SMTPというプロトコル自体は、標準化されて以来、その基本的な仕組みはほとんど変わっていません。しかし、その周囲を取り巻く認証やセキュリティの仕組みは、時代とともに大きく進化してきました。

それに伴い、SMTPを利用するユーザーも油断はできません。

メールサービス側の仕様変更によって、これまで問題なく送れていたメールが突然送信できなくなったり、相手に受信してもらえなくなったりすることがあります。

そのため、SMTPを利用する場合は、各メールサービスの最新情報を継続的に確認しておくことが大切です。

今振り返ると、認証も不要で気軽にSMTPサーバーを利用できた時代は、ある意味ではのんびりとした時代だったのかもしれません。

もちろん、その自由さが現在のようなスパムメール問題や、送信者のなりすましを招いた一因でもあります。しかし、セキュリティをあまり意識せずにメールを送信できた当時を、少し懐かしく感じてしまいます。

コメント

タイトルとURLをコピーしました