どうもこんにちは、カフーブログのタカフです。
レンタルサーバーのメール送信って意外と届かなかったりしますよね。
迷惑メールフォルダに入るのも困りますが、迷惑メールフォルダにすら入らずどこかに消えてしまうこと、あるあるです。
これはお客さんからの問い合わせとか、何らかの申し込みとか、ビジネスをする上ではかなり困る事!
というわけで、本記事ではレンタルサーバーを使うような小規模ビジネスの場合でも高確率でメール到達出来るように、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を使うのか、もう少し掘り下げるとそこにはこんなメリットがあります。
- 月額680円で使える
- レンタルサーバーに依存しない(=サーバー引っ越しもしやすい)
- Gmailならほぼ確実にメールが届く
- WebメーラーとしてGmailが使いやすい
- 送信履歴もしっかりわかる(sendmailはわかりにくい)
- メールエイリアスで見た目上のメールアドレスが増やせる
などです。
どうですか?結構良いですよね。
因みにGoogle Workspaceとは、ざっくり言うとGoogleの機能を独自ドメインで使えるようにするサービスなのですが、これのBusiness Starterプランなら1ユーザー680円から使えるのです。
え?これシンプルに安くない?
今回はこのGoogle Workspaceでサービス用のユーザーを作ってそのユーザー経由でメール送信をしていく手順となります。
そして、Google Workspaceのメール送信は1日2000通まで送れるので、小規模ビジネスとしては十分なのです。
中小規模ビジネスなら大抵1日2000通で収まるのでは?
因みに、こういうビジネス系メールのサービスとして最強なのはSendGridかと思いますが、
SendGridだと固定IPが使えるProプランの最低で月額10,000円かかるので、小規模ビジネスであればあるほど固定費としてつらいものがあります。(Essentialsプランだと固定IPではないのでレンタルサーバーと同じ)
月額1000円くらいのレンタルサーバー使っててメール送信だけでツェーマンは出さないよね😅
というわけで、1日のメール送信数が2000通を超えないような中小規模ビジネスのメール送信ならGoogle WorkspaceのGmailを使うのがベストと考えるわけです。
Google Workspaceに新規登録をする手順
さて、早速ですがGoogle Workspaceに新規登録をする手順を解説していきます。
因みに!
既にGoogle Workspaceを使っていてもセカンダリドメインやユーザーエイリアスドメインとしては登録するのではなく、新規のGoogle Workspaceとして登録した方がいいと思っています。
僕が実際kahoo-inc.co.jp
という会社ドメインで既にGoogle Workspaceで使っていますが、
そこにドメイン追加としてしまうと、プランも合わせなくてはいけなかったりとか(=680円で使えない)、その会社メンバーでもそのドメイン使えてややこしくなったりとかするので、サービス用ドメインとして使うなら新規登録でいいと思います。
手間も大して変わりません。
というわけで本記事では新規登録の手順として解説します。
Google Workspaceのサイトに行き、「無料使用を開始」から初めてまずは必要な情報を登録します。
大抵は既にドメイン取得しているので「使用できるドメインがある」を選択します。
今回はこのサイトが対象なのでkahoo.blog
と入力します。
「次へ」で進めます。
このWorkspaceの管理者ユーザーを作ります。
僕の場合はエックスサーバーの方でadmin@kahoo.blog
として作っていてユーザー名も管理者っぽかったのadmin
ユーザーを最初に作りました。
後ほど送信ユーザー名を変える方法も解説しますのでここは深く考えなくてもOKです。普通に管理者っぽいユーザーを一つ作ればよいでしょう。
次にそのままそのアカウントのGmailとしてログインすることになります。その途中で本人確認の実施として電話番号にSMSを送ります。
G-******
というコードを受け取りますが使うのはG-以降の6桁番号です。
無事SMSを受け取ってコードを入力すると管理コンソールの設定になります。
Google Workspaceの3つの設定をやっていきます。
このステップでやることを言い換えるとズバリ以下の3つです。
- サービスドメインの所有権を証明する為のTXTレコードの追加
- メールサーバーを切り替える前に既存メールアカウントを登録
- メールサーバーの向き先をGoogleにする為のMXレコードの追加
順番に解説します。
サービスドメインの所有権を証明する為のTXTレコードの追加
このサイトを例にしているので、kahoo.blog
のドメイン所有権の証明です。
色々書いていますが、要はDNSレコードにTXTレコードを登録せよ、ということです。
TXT値をコピーします。
僕の場合はエックスサーバーのDNSレコード設定で以下のように追加します。人によってはお名前.comやAWS Route 53とかだったりします。
エックスサーバーの場合ホスト名に@を入れるとエラーになるので空白でOKです。
このDNS設定には時間がかかります。
以下のコマンドをターミナルから打って設定が反映されるのを待ちましょう。
> nslookup -type=txt kahoo.blog
このコマンドで設定したTXTレコードが返ってきたらOKです。
先ほどのGoogle Workspaceの画面に戻って「ドメインの保護」をクリックします。
GoogleからもTXTレコードの確認をしてくれます。
以下の画面になればOKです。そのまま「続行」をクリックします。
メールサーバーを切り替える前に既存メールアカウントを登録
ドメインが証明されたら、次の3.で完全にメールサーバーを切り替える前に既存メールアカウントを登録します。
もし他に公開しているメールアドレスがあれば(contact
とかinfo
とか)そのユーザー名をここで追加登録します。
ですが、ユーザーを追加するとその分お金がかかります。
なので僕のおすすめとしては、小規模ビジネスなら1ユーザーだけ作ってユーザーエイリアスを使う方法がいいです。
後述するユーザーエイリアスという方法を使えば全部管理者メールアドレスに集めて運用もできるので1ユーザーだけで済みます。
しかもGmailはユーザーエイリアスを増やしたとしてもわりと管理しやすいので小規模ビジネスなら1ユーザーだけでいいと思います。
中規模ビジネスなら必要な分だけユーザー作成するでもいいと思います。
メールサーバーの向き先をGoogleにする為のMXレコードの追加
メールサーバーの向き先を変えます。
僕の例でいうと今までadmin@kahoo.blog
宛てに送信したらエックスサーバーに届いていたのを、これからはGoogleのメールサーバーに届けるようにします。
以下の画面で「Gmailの有効化」をクリックします。
以下の注意が出て、「GMAILを有効にする」をクリックします。
次で親切にエックスサーバーの設定を教えてくれていますが、先ほど同様に要はDNSレコードを追加せよ、ということです。今回はメール用のMXレコードです。
以下の値をMXレコードとして登録せよということです。このレコード値はGoogle Workspaceなら共通かと思います。
因みにMXレコードとは、メールサーバーの宛先の事です。
例えば@kahoo.blog
宛てのメールをGmailサーバーの方に向ける為にMXレコードを設定するわけです。
そして次が結構重要です。すでにメール送受信をしている場合は既存のMXレコードがあると思うのでそれを削除する必要があります。
エックスサーバーの例で言うと、元からあるレコードの優先度0のkahoo.blogのMXレコードを消します。
これはエックスサーバー側が自動でセットしたレコードでこのエックスサーバーのサーバーにメール宛先も向いている事を意味するからです。
赤枠レコードを消して、オレンジ枠レコードを追加です
これからはGoogleサーバーに向けるのMXレコードのみする必要があります。
なので上記画像の赤枠のレコードは消します。
レコード設定し終わったらまたターミナルから以下コマンドをうって、反映されるのを待ちましょう。
> nslookup -type=mx kahoo.blog
Googleの5つのMXレコードのみになったら反映成功です。
因みにこの時-debugオプションをつけるとあとどのくらいTTLが残っているか確認出来ます。
> nslookup -type=mx -debug kahoo.blog
MXレコードの反映が成功したらGoogle Workspaceのページに戻って「GMAILを有効にする」をクリックします。
以下の画面に切り替われば完了です。
独自ドメインでGmailも普通に使えるようになりました。👏👏👏
以上で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>を開いて、その画面で<メールの認証>の矢印をクリックします。
<新しいレコードを生成>をクリックします。
今の時代ならDKIM鍵のビット長は2048を選んで<生成>をクリックします。
生成された以下をコピーしておきます。
そしてこれを設定しようとしたら、なんとエックスサーバーは文字長が255文字以内じゃないと登録できないとのこと!
ということでGoogle Workspaceの方に戻って1024ビットで作り直しました。
無事登録できました。
2048ビット長の方が良いのでしょうが、登録できないなら仕方ありません。
今回は1024ビット長にします。認証通ればよいかなと。
しかし老舗のDNS設定サービスとかだとこういうものかもしれませんね。
お名前.comやAWS Route 53とかなら2048も対応しているでしょうから、ここは登録できる方で設定してください。
(というかもはやレジストラの方でDNS設定やってしまってAレコードだけレンタルサーバーに向けるでもいいかもしれませんね…。)
TXTレコードに登録出来たら、<認証を開始>をクリックします。
次にメール送信するのでその時確認していきましょう。
PHPからsmtp経由でメール送信してみる
Gmailが使えるようになったのでPHPからsmtpメール送信をしてみましょう。
2段階認証を有効にしてアプリパスワードを用意する
GmailのSMTPメール送信にはGoogleアカウントのIDとパスワードを使いますが、
2段階認証が有効になっていないとSMTP認証でブロックされます。実際に送信するとこんなメールが飛んできます。
ということで2段階認証を有効にしていきます。
Googleアカウントの2段階認証の方法はググればたくさん出てくるのでここでは割愛します。
2段階認証を有効にしたら、Googleアカウントのページで「アプリ パスワード」をクリックします。
アプリパスワードを生成するページで、任意の名前をつけて生成ボタンを押すとパスワードが生成されます。
ここでは「サイト用メール送信」としました。
生成されたメール送信用のパスワードはコピペして控えておきます。
PHPのsmtpメール送信スクリプト
それでは実際にPHPからメール送信してみます。
SMTPメール送信するのに便利で有名なSwiftMailerを使います。
でも今見たらもうメンテンナンスされないのだそう。代わりにSymfonyMailerを使ってと書いてます。
まぁ今回はテストメールなので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";
}
}
無事届きました🎊🎊🎊
そしてそのメールの<ソースを表示>をしてみると、SPFやDKIMがPASSになっていることが確認できます。
これで届きやすいメールサービスの完成です!👏👏🎉🎉
しかもこのメール送信はGmailの送信済みとしてしっかり残るのも良いですよね。お客さんに何を送ったかを残しておくのは重要です。
しかし一点問題があり、Fromのメールアドレスにno-reply@kahoo.blog
を設定したのに管理者メールアドレスであるadmin@kahoo.blog
として届いています。
そうです。これはGmailの仕様のようでなりすまし防止のためにこうなっているようです。
因みにメールのソースを表示で見てみるとX-Google-Original-From
というヘッダーに入っては来ていました。
From: "カフーブログ" <admin@kahoo.blog>
X-Google-Original-From: no-reply@kahoo.blog
とは言えビジネス上管理者メールアドレスではなくこのように返信不可を意味するno-reply
だったり、お問い合わせ用のcontact
だったりとして送りたいですよね。
これを解決するのがメールエイリアス(エイリアスとは別名という意味です)を使った方法です。
Gmailのメールエイリアスを作って別名アカウントでメールを送る
メールエイリアスを使って別名アカウントでメールを送る方法を解説します。
Google Workspaceで今回のユーザーの画面で「予備のメールアドレスを追加」をクリックします。
ここでFromとして見せたいメールアドレスを追加します。今回は返信不可でよく使われるno-reply
です。
次にそのユーザーのGmailの設定ページに行き、「アカウント」タブのところで<他のメールアドレスを追加>をクリックします。
no-replyは名無しユーザーとして追加したいので名前は空白にして登録します。(そういうことが出来るのね。✨)
別名として no-reply@kahoo.blog
が追加されました。
これで先ほどのPHPスクリプトを再度実行してメール送信してみます。
無事no-reply@kahoo.blog
として届きました。
素晴らしいっ!!👏👏👏
因みにGmailの設定でデフォルトの返信モードを「メールを受信したアドレスから返信する」にしておけばそのユーザーとしてやりとりできるのでこれまた便利です。
例えばお客さんとのやり取り用としてcontact
というメールエイリアスを作って、そのcontact
ユーザーでメール受信して返信すると自動でFromにcontact
ユーザーが設定されます。
Gmailのラベル機能を使えばメールエイリアスごとに振り分けることもできるので、1ユーザーで複数ユーザーとして使うことは全然可能というわけです。
Google Workspaceを有料化する
メール送信出来たことが確認出来たら月額680円のBusiness Starterに変更しちゃいましょう。
何故ならGoogle Workspaceの試用期間は14日間なので有料化しないとサービスとして使えないからです。
管理画面トップの<お支払い情報の設定>をクリックします。
メール送信だけできればいいのでBusiness Starterとして<開始>します。
最後にカード情報など入力して以下の画面で完了です。
これでちゃんとした形でメールサーバーとしてGmailを使うことが出来るわけです。
まとめ
以上、レンタルサーバーのメール送信だけGoogle Workspaceを使う手順でした。
本記事の内容を振り返ると、
- レンタルサーバーからのメールが届きにくいなら月額680円のGoogle Workspaceが有力
- 運用上ではGmail画面がメーラーとして使いやすいし送信履歴も残るのも最高である
- メールエイリアスを使えば見た目上の複数ユーザーにも増やせる
というものでした。
このことから、1日のメール送信数が2000通を超えない中小規模WebサイトならGoogle Workspace一択なのでは?と僕は思うわけです。
2000通を超える頃にはビジネスも拡大して月10,000円のSendGridに切り替えるで全然OKでしょう。
現場からは以上です!
この記事がお役に立ったと思ったらその反応として下記ツイートにいいね!をしていただけると、今後もこのような記事をアップする励みになります😊
ふぅ。レンタルサーバーからでも高確率でメール到達できる方法として良質な記事を書いた。
『レンタルサーバーでメールが届かないっ!』ってお悩みの方には有料級の記事だ(フンガフフン👃💨)
レンタルサーバーのメール送信でGoogle Workspaceを使う方法|カフーブログ https://t.co/y6ks2pRXql
— タカフ@Surface YouTuber・エンジニア・ブロガー (@kahoo365) March 15, 2022