プログラミングの役立つ記事をお届けします

レンタルサーバーのメール送信でGoogle Workspaceを使う方法

「レンタルサーバーのメール送信が届かない。。何かいい方法ない?」

どうもこんにちは、カフーブログのタカフです。

レンタルサーバーのメール送信って意外と届かなかったりしますよね。

迷惑メールフォルダに入るのも困りますが、迷惑メールフォルダにすら入らずどこかに消えてしまうこと、あるあるです。

これはお客さんからの問い合わせとか、何らかの申し込みとか、ビジネスをする上ではかなり困る事!

というわけで、本記事ではレンタルサーバーを使うような小規模ビジネスの場合でも高確率でメール到達出来るように、Google Workspaceを使ったGmailのSMTP経由でメール送信する手順を解説します。

本サイトのドメインであるkahoo.blogからのメール送信を例として解説します。

これを読んで設定すれば、サーバーのメール送信能力に依存することなく安定してメール送信出来るようになるでしょう。

僕としては、1日のメール送信数が2000通を超えないなら Google Workspace一択 なのでは?とも思いました!

それでは本編です。

※因みにビジネス上のメールが@gmail.comで良いなら以下の記事が参考になります。

https://kahoo.blog/php-send-mail-smtp/

背景

最初にこうなった背景を説明させてください。わりと共感できる部分あると思います。

僕は本ブログ運営のサーバーとしてエックスサーバーを使っているのですが、phpからのmail関数によるメール送信(つまりsendmail)だと、たまに届かないことがあるのです

特に宛先がGmailやdocomo・au・softbank等の携帯会社メールだと、迷惑メールの防御が強すぎて迷惑メールフォルダにすら入らなかったりします。

本サイトはブログだけでなくお客様にバッチ処理でメール送信している機能も有しているのでこれは困りものでした。

ただ、これはレンタルサーバーの宿命でもあります。

レンタルサーバーだと複数のユーザーが同じサーバーをシェアして使うタイプになるので、

他に悪質なメール送信する人がいればそのサーバーの信頼度が落ちてそのサーバー自体のメール送信が届きにくくなるからですね。

だからといって、ビジネス系メールだと絶対に届けたいメール等もあるかと思います。(むしろ小規模の方がそういう機会損失に気を付けるべき?)

そこで、レンタルサーバーからではなくGoogle Workspaceを使ったGmailのSMTPメール送信するというわけです。

Google Workspaceなら月額680円で使えるし、中身はGmailサーバーなのでほぼ確実に届くでしょうし、ちゃんとそのサービスドメインから送れるメリットがあるからです。

メール送信にGoogle WorkspaceのGmailを選ぶ理由

何故メール送信にGoogle Workspaceを使うのか、もう少し掘り下げるとそこにはこんなメリットがあります。

  1. 月額680円で使える
  2. レンタルサーバーに依存しない(=サーバー引っ越しもしやすい)
  3. Gmailならほぼ確実にメールが届く
  4. WebメーラーとしてGmailが使いやすい
  5. 送信履歴もしっかりわかる(sendmailはわかりにくい)
  6. メールエイリアスで見た目上のメールアドレスが増やせる

などです。

どうですか?結構良いですよね。

因みにGoogle Workspaceとは、ざっくり言うとGoogleの機能を独自ドメインで使えるようにするサービスなのですが、これのBusiness Starterプランなら1ユーザー680円から使えるのです。

image-20220306165316864
え?これシンプルに安くない?

今回はこのGoogle Workspaceでサービス用のユーザーを作ってそのユーザー経由でメール送信をしていく手順となります。

そして、Google Workspaceのメール送信は1日2000通まで送れるので、小規模ビジネスとしては十分なのです。

image-20220306170007077
中小規模ビジネスなら大抵1日2000通で収まるのでは?

因みに、こういうビジネス系メールのサービスとして最強なのはSendGridかと思いますが、

SendGridだと固定IPが使えるProプランの最低で月額10,000円かかるので、小規模ビジネスであればあるほど固定費としてつらいものがあります。(Essentialsプランだと固定IPではないのでレンタルサーバーと同じ)

image-20220306164947542
月額1000円くらいのレンタルサーバー使っててメール送信だけでツェーマンは出さないよね😅

というわけで、1日のメール送信数が2000通を超えないような中小規模ビジネスのメール送信ならGoogle WorkspaceのGmailを使うのがベストと考えるわけです。

Google Workspaceに新規登録をする手順

さて、早速ですがGoogle Workspaceに新規登録をする手順を解説していきます。

因みに!

既にGoogle Workspaceを使っていてもセカンダリドメインやユーザーエイリアスドメインとしては登録するのではなく、新規のGoogle Workspaceとして登録した方がいいと思っています。

僕が実際kahoo-inc.co.jpという会社ドメインで既にGoogle Workspaceで使っていますが、

そこにドメイン追加としてしまうと、プランも合わせなくてはいけなかったりとか(=680円で使えない)、その会社メンバーでもそのドメイン使えてややこしくなったりとかするので、サービス用ドメインとして使うなら新規登録でいいと思います。

手間も大して変わりません。

というわけで本記事では新規登録の手順として解説します。

Google Workspaceのサイトに行き、「無料使用を開始」から初めてまずは必要な情報を登録します。

image-20220307163053821

image-20220307163421506

image-20220307163503197

大抵は既にドメイン取得しているので「使用できるドメインがある」を選択します。

image-20220307163529995

今回はこのサイトが対象なのでkahoo.blogと入力します。

image-20220307163625283

「次へ」で進めます。

image-20220307163936935

このWorkspaceの管理者ユーザーを作ります。

僕の場合はエックスサーバーの方でadmin@kahoo.blogとして作っていてユーザー名も管理者っぽかったのadminユーザーを最初に作りました。

image-20220307164214498

後ほど送信ユーザー名を変える方法も解説しますのでここは深く考えなくてもOKです。普通に管理者っぽいユーザーを一つ作ればよいでしょう。

次にそのままそのアカウントのGmailとしてログインすることになります。その途中で本人確認の実施として電話番号にSMSを送ります。

G-******というコードを受け取りますが使うのはG-以降の6桁番号です。

image-20220307164630060

無事SMSを受け取ってコードを入力すると管理コンソールの設定になります。

image-20220307170104985

Google Workspaceの3つの設定をやっていきます。

image-20220307170323593

このステップでやることを言い換えるとズバリ以下の3つです。

  1. サービスドメインの所有権を証明する為のTXTレコードの追加
  2. メールサーバーを切り替える前に既存メールアカウントを登録
  3. メールサーバーの向き先をGoogleにする為のMXレコードの追加

順番に解説します。

サービスドメインの所有権を証明する為のTXTレコードの追加

このサイトを例にしているので、kahoo.blogのドメイン所有権の証明です。

色々書いていますが、要はDNSレコードにTXTレコードを登録せよ、ということです。

image-20220307170455664

TXT値をコピーします。

image-20220307170620516

僕の場合はエックスサーバーのDNSレコード設定で以下のように追加します。人によってはお名前.comやAWS Route 53とかだったりします。

エックスサーバーの場合ホスト名に@を入れるとエラーになるので空白でOKです。

image-20220307170924239

このDNS設定には時間がかかります。

以下のコマンドをターミナルから打って設定が反映されるのを待ちましょう。

> nslookup -type=txt kahoo.blog

このコマンドで設定したTXTレコードが返ってきたらOKです。

先ほどのGoogle Workspaceの画面に戻って「ドメインの保護」をクリックします。

GoogleからもTXTレコードの確認をしてくれます。

image-20220307193031944

以下の画面になればOKです。そのまま「続行」をクリックします。

image-20220307193135996

メールサーバーを切り替える前に既存メールアカウントを登録

ドメインが証明されたら、次の3.で完全にメールサーバーを切り替える前に既存メールアカウントを登録します。

もし他に公開しているメールアドレスがあれば(contactとかinfoとか)そのユーザー名をここで追加登録します。

ですが、ユーザーを追加するとその分お金がかかります。

なので僕のおすすめとしては、小規模ビジネスなら1ユーザーだけ作ってユーザーエイリアスを使う方法がいいです。

後述するユーザーエイリアスという方法を使えば全部管理者メールアドレスに集めて運用もできるので1ユーザーだけで済みます。

しかもGmailはユーザーエイリアスを増やしたとしてもわりと管理しやすいので小規模ビジネスなら1ユーザーだけでいいと思います。

中規模ビジネスなら必要な分だけユーザー作成するでもいいと思います。

メールサーバーの向き先をGoogleにする為のMXレコードの追加

メールサーバーの向き先を変えます。

僕の例でいうと今までadmin@kahoo.blog宛てに送信したらエックスサーバーに届いていたのを、これからはGoogleのメールサーバーに届けるようにします。

以下の画面で「Gmailの有効化」をクリックします。

image-20220307193247003

以下の注意が出て、「GMAILを有効にする」をクリックします。

image-20220307193804618

次で親切にエックスサーバーの設定を教えてくれていますが、先ほど同様に要はDNSレコードを追加せよ、ということです。今回はメール用のMXレコードです。

image-20220307194004732

以下の値をMXレコードとして登録せよということです。このレコード値はGoogle Workspaceなら共通かと思います。

image-20220307194139627

因みにMXレコードとは、メールサーバーの宛先の事です。

例えば@kahoo.blog宛てのメールをGmailサーバーの方に向ける為にMXレコードを設定するわけです。

そして次が結構重要です。すでにメール送受信をしている場合は既存のMXレコードがあると思うのでそれを削除する必要があります。

エックスサーバーの例で言うと、元からあるレコードの優先度0のkahoo.blogのMXレコードを消します。

これはエックスサーバー側が自動でセットしたレコードでこのエックスサーバーのサーバーにメール宛先も向いている事を意味するからです。

image-20220307195224192
赤枠レコードを消して、オレンジ枠レコードを追加です

これからはGoogleサーバーに向けるのMXレコードのみする必要があります。

なので上記画像の赤枠のレコードは消します。

レコード設定し終わったらまたターミナルから以下コマンドをうって、反映されるのを待ちましょう。

> nslookup -type=mx kahoo.blog

Googleの5つのMXレコードのみになったら反映成功です。

因みにこの時-debugオプションをつけるとあとどのくらいTTLが残っているか確認出来ます。

> nslookup -type=mx -debug kahoo.blog

MXレコードの反映が成功したらGoogle Workspaceのページに戻って「GMAILを有効にする」をクリックします。

以下の画面に切り替われば完了です。

image-20220307202253550

独自ドメインでGmailも普通に使えるようになりました。👏👏👏

image-20220307202559761

以上でGoogle Workspaceの初期設定は完了です。

Google Workspaceからのメール送信をより届くようにする

さて、Google Workspaceで独自ドメインを設定したらそれだけで結構メールは届くようになるかと思いますが、もう少し手を加えるとよりメール到達率は高まります。

それがSPFレコードとDKIMレコードの設定です。

簡単なのでこれは設定しちゃいましょう。

SPFレコードを設定する

SPFとは、Sender Policy Frameworkの略でメール送信において送信元ドメインが詐称されていないかを証明するための仕組みです。

Google Workspaceのドキュメントにもやり方は明記されており、簡単なのでサクッと設定しちゃいましょう。

以下の値をTXTレコードとして追加するだけです。

v=spf1 include:_spf.google.com ~all

今回はエックスサーバーのレコード編集をやっているので以下のような画面になります。

MXレコード同様にエックスサーバーがメールサーバーの時のSPFレコードがあるのでそれを削除してGoogleのレコードのみにします。


赤枠レコードは削除して、オレンジ枠レコードだけ残すようにします。

引き続きDKIMレコードも設定していきましょう。

DKIMレコードを設定する

DKIMとは、DomainKeys Identified Mailの略でこちらも送信ドメインの認証技術ですが、電子署名を使った認証となります。

こちらもGoogle Workspaceのドキュメントに記述されていますが、本記事でも解説します。

Google Workspaceの管理画面でサイドメニューの<アプリ>ー<Google Workspace>ー<Gmail>を開いて、その画面で<メールの認証>の矢印をクリックします。

image-20220315145648187

<新しいレコードを生成>をクリックします。

image-20220315145838006

今の時代ならDKIM鍵のビット長は2048を選んで<生成>をクリックします。

image-20220315150014931

生成された以下をコピーしておきます。

image-20220315150251572

そしてこれを設定しようとしたら、なんとエックスサーバーは文字長が255文字以内じゃないと登録できないとのこと!

image-20220315150839627

ということでGoogle Workspaceの方に戻って1024ビットで作り直しました。

image-20220315151048480

無事登録できました。

image-20220315151138142

2048ビット長の方が良いのでしょうが、登録できないなら仕方ありません。

今回は1024ビット長にします。認証通ればよいかなと。

しかし老舗のDNS設定サービスとかだとこういうものかもしれませんね。

お名前.comやAWS Route 53とかなら2048も対応しているでしょうから、ここは登録できる方で設定してください。

(というかもはやレジストラの方でDNS設定やってしまってAレコードだけレンタルサーバーに向けるでもいいかもしれませんね…。)

TXTレコードに登録出来たら、<認証を開始>をクリックします。

image-20220315151537689

次にメール送信するのでその時確認していきましょう。

PHPからsmtp経由でメール送信してみる

Gmailが使えるようになったのでPHPからsmtpメール送信をしてみましょう。

2段階認証を有効にしてアプリパスワードを用意する

GmailのSMTPメール送信にはGoogleアカウントのIDとパスワードを使いますが、

2段階認証が有効になっていないとSMTP認証でブロックされます。実際に送信するとこんなメールが飛んできます。

image-20220309181957487

ということで2段階認証を有効にしていきます。

Googleアカウントの2段階認証の方法はググればたくさん出てくるのでここでは割愛します。

2段階認証を有効にしたら、Googleアカウントのページで「アプリ パスワード」をクリックします。

image-20220309191533982

アプリパスワードを生成するページで、任意の名前をつけて生成ボタンを押すとパスワードが生成されます。

ここでは「サイト用メール送信」としました。

image-20220309191636054

生成されたメール送信用のパスワードはコピペして控えておきます。

PHPのsmtpメール送信スクリプト

それでは実際にPHPからメール送信してみます。

SMTPメール送信するのに便利で有名なSwiftMailerを使います。

でも今見たらもうメンテンナンスされないのだそう。代わりにSymfonyMailerを使ってと書いてます。

image-20220309192249718

まぁ今回はテストメールなのでSwiftMailerを使います。

以下のようなスクリプトを実行します。

<?php

require_once __DIR__ . "/vendor/autoload.php";

define("SMTP_HOST", "smtp.gmail.com");
define("SMTP_PORT", "587");
define("SMTP_USERNAME", "[先ほど作ったGoogleアカウントのメールアドレス]");
define("SMTP_PASSWORD", "[先ほど作ったアプリパスワード]");

send_mail("[宛先メールアドレス]", "テストメール", "ここに\nメール内容");

// SMTP方式のメール送信関数
function send_mail($mailto, $subject, $body) {
  // SMTPの送信設定
  $transport = (new Swift_SmtpTransport(SMTP_HOST, SMTP_PORT, 'tls'))
    ->setUsername(SMTP_USERNAME)
    ->setPassword(SMTP_PASSWORD);

  // Swiftメーラーオブジェクト 
  $mailer = new Swift_Mailer($transport);

  // メッセージ作成
  $message = (new Swift_Message($subject))
    ->setFrom('no-reply@kahoo.blog')
    ->setTo([$mailto])
    ->setBody($body);

  // メッセージ送信
  if ($mailer->send($message)) {
    echo "success";
  }else{
    echo "error";
  }
}

無事届きました🎊🎊🎊

image-20220315175031509

そしてそのメールの<ソースを表示>をしてみると、SPFやDKIMがPASSになっていることが確認できます。

image-20220315175213867

これで届きやすいメールサービスの完成です!👏👏🎉🎉

しかもこのメール送信はGmailの送信済みとしてしっかり残るのも良いですよね。お客さんに何を送ったかを残しておくのは重要です。

image-20220315140700651

しかし一点問題があり、Fromのメールアドレスにno-reply@kahoo.blogを設定したのに管理者メールアドレスであるadmin@kahoo.blogとして届いています。

image-20220309192739048

そうです。これはGmailの仕様のようでなりすまし防止のためにこうなっているようです。

因みにメールのソースを表示で見てみるとX-Google-Original-Fromというヘッダーに入っては来ていました。

From: "カフーブログ" <admin@kahoo.blog>
X-Google-Original-From: no-reply@kahoo.blog

とは言えビジネス上管理者メールアドレスではなくこのように返信不可を意味するno-replyだったり、お問い合わせ用のcontactだったりとして送りたいですよね。

これを解決するのがメールエイリアス(エイリアスとは別名という意味です)を使った方法です。

Gmailのメールエイリアスを作って別名アカウントでメールを送る

メールエイリアスを使って別名アカウントでメールを送る方法を解説します。

Google Workspaceで今回のユーザーの画面で「予備のメールアドレスを追加」をクリックします。

image-20220309193344211

ここでFromとして見せたいメールアドレスを追加します。今回は返信不可でよく使われるno-replyです。

image-20220309193432704

次にそのユーザーのGmailの設定ページに行き、「アカウント」タブのところで<他のメールアドレスを追加>をクリックします。

image-20220309193653613

no-replyは名無しユーザーとして追加したいので名前は空白にして登録します。(そういうことが出来るのね。✨)

image-20220309193758656

別名として no-reply@kahoo.blogが追加されました。

image-20220309193908404

これで先ほどのPHPスクリプトを再度実行してメール送信してみます。

無事no-reply@kahoo.blogとして届きました。

image-20220309194321244

素晴らしいっ!!👏👏👏

因みにGmailの設定でデフォルトの返信モードを「メールを受信したアドレスから返信する」にしておけばそのユーザーとしてやりとりできるのでこれまた便利です。

image-20220315141204233

例えばお客さんとのやり取り用としてcontactというメールエイリアスを作って、そのcontactユーザーでメール受信して返信すると自動でFromにcontactユーザーが設定されます。

Gmailのラベル機能を使えばメールエイリアスごとに振り分けることもできるので、1ユーザーで複数ユーザーとして使うことは全然可能というわけです。

Google Workspaceを有料化する

メール送信出来たことが確認出来たら月額680円のBusiness Starterに変更しちゃいましょう。

何故ならGoogle Workspaceの試用期間は14日間なので有料化しないとサービスとして使えないからです。

管理画面トップの<お支払い情報の設定>をクリックします。

image-20220309195028046

メール送信だけできればいいのでBusiness Starterとして<開始>します。

image-20220309195151506

image-20220309195204258

最後にカード情報など入力して以下の画面で完了です。

image-20220309195440554

これでちゃんとした形でメールサーバーとしてGmailを使うことが出来るわけです。

まとめ

以上、レンタルサーバーのメール送信だけGoogle Workspaceを使う手順でした。

本記事の内容を振り返ると、

  • レンタルサーバーからのメールが届きにくいなら月額680円のGoogle Workspaceが有力
  • 運用上ではGmail画面がメーラーとして使いやすいし送信履歴も残るのも最高である
  • メールエイリアスを使えば見た目上の複数ユーザーにも増やせる

というものでした。

このことから、1日のメール送信数が2000通を超えない中小規模WebサイトならGoogle Workspace一択なのでは?と僕は思うわけです。

2000通を超える頃にはビジネスも拡大して月10,000円のSendGridに切り替えるで全然OKでしょう。

現場からは以上です!

この記事がお役に立ったと思ったらその反応として下記ツイートにいいね!をしていただけると、今後もこのような記事をアップする励みになります😊

 

コメントを残す

メールアドレスが公開されることはありません。