"なりすましメール" にならないための設定(a-blog cms Ver. 2.9 & Gmail)
この記事は「a-blog cms Advent Calendar 2018」21日目の記事です。
Webページを持っている企業の多くは「お問い合わせページ」を設置しているかと思います。そして、お問い合わせがあった時に管理者宛てにも通知メールを飛ばすようにしているところは多いのではないでしょうか? a-blog cms でもお問い合わせフォームを作成したり、お問い合わせしたユーザーへの確認メールや管理者宛ての通知メールを作成することができます(フォーム | a-blog cms developer)。しかし、システムを介してメールを送信するためそのメールを "なりすましメール" として受信してしまうことがあります。今回はその回避方法について書いていきます。
なりすましメールとは?
なりすましメールとは送信元メールアドレス(Fromメールアドレス)を詐称したメールです。
引用元:なりすましメール拒否設定 | Softbank
少し前から、Gmail などではこの "なりすましメール" を自動で判別する機能が追加されました。仕組みとしては、送信者のメールサーバと実際に送信されたメールが経由してきたメールサーバーが同じかどうかで判別しているそうです。
Gmail では「これはなりすましかもしれない!」と判断されると以下のような警告が出るようになりました。
もしこのようなメールが送られてきたら驚いてしまいますね。このような警告メッセージは、Gmail 以外でも出るみたいです。(私は Gmail ヘビーユーザーなので Gmail を例に話していきます。)
a-blog cms のお問い合わせフォームとなりすましメール
なりすまし警告メッセージは「実際に送信されたメールが経由してきたメールサーバーが同じかどうかで判別」しています。
a-blog cms でお問い合わせフォームを設定した場合、多くの人は フォームID設定の AdminFrom を空で設定するかと思います。しか、 AdminFrom を空にすると管理者宛メールが "なりすまし" 判定されてしまう可能性があります。実際に、例としてあげている上記警告画像は a-blog cms で作成しているwebサイトのお問い合わせフォームから管理者宛に通知メールとして送信されてきたメールになります。
a-blog cms で作成しているのであれば、フォームIDの設定に気をつけるだけでこの "なりすまし警告" が出ないようにできます。
フォームIDの設定方法を a-blog cms 公式サイトで確認
まず、a-blog cms 公式サイトで管理画面側でできるフォームIDのメールアドレス設定方法をみてみましょう。
メールアドレスを指定する
以下のようなメールアドレスを指定する箇所があります。
・To
・From
・Cc
・Bcc
・Reply-To
・AdminTo
・AdminFrom
・AdminCc
・AdminBcc
・AdminReply-To
最初にAdminがつく設定が管理者宛の設定で、つかないものが、自動返信の一般宛の設定になります。 これらの値は、ここでの設定以外にフォームのテンプレートで指定ができます。
通常は、Toにはお問い合わせした人に送信するので、毎回変わりますので、テンプレートで動的に設定します。 Fromは管理者のメールアドレスを設定すればよいでしょう。
逆に管理者宛のAdminToは、管理者のメールアドレスを固定で設定し、Fromを動的にテンプレートで指定します。
ちなみにテンプレートはこのような例をあげています。
もうお気付きかもしれませんが、上記のままでは管理者宛に送られるメールが "なりすましメール" として扱われてしまいます(SPFなどの設定をしていなければ)。※ お問い合わせをしてきたユーザー側に送信されるメールについては、From 欄に管理者のメールアドレスを設定しているので "なりすましメール" として判定される心配はありません。
AdminFrom が空の状態だとお問い合わせしたユーザーが入力したメールアドレスが自動で AdminFrom に入ります。これにより、a-blog cms が設置されているサーバーがメールを送信しているのに、管理者宛に送信されるメールの From はお問い合わせ入力者のメールアドレスが入っている状態となります。このままでは Gmail が「なりすましかもしれない!」と判定してしまう危険があります。
フォームIDの設定でなりすましメール対策
それでは、設定方法を見ていきましょう。
やることとしては、管理画面側ではAdminFrom へ管理者のメールアドレスを入れて、なりすましにならないようにします。さらに、テンプレート側で AdminReply-To にユーザーがお問い合わせ時に設定したメールアドレスが自動でセットされるようになっているか確認します。
※ 補足説明)AdminReply-To というのは、メール受信者が返信ボタンを押した時に Toとして設定するメールアドレスを送信者側で設定できる機能です。
1. AdminFrom にサーバーに登録しているメールアドレスを設定
管理画面からフォームIDの設定を開き、AdminFromの箇所にサーバーに登録しているメールアドレスを登録します。なので、主にメールアドレスを設定する箇所は From、AdminTo、AdminFrom、になるかと思います。
2. AdminReply-To も POST されるか確認
AdminReply-To が自動でセットされるか /contact/form/main.html 辺りで確認します。a-blog cms デフォルトテーマを元にフォームのテンプレートを作成している場合は、すでに設定されているはずなのでそのままでOKです。
設定はこれで終わりです。
ただ、この設定をした時に一つ注意点があります。Gmail の Reply-To の挙動がたまにおかしくなる時があるので、メールの返信時には、To や Cc を確認してから送信ボタンを押すようにしましょう。メーラーソフトを使っている方はおそらく問題ないかと思いますが、念のため動作確認はしておきましょう。
※ Gmail の Reply-To が設定されているのになぜか From が返信先として設定されてしまうことがありました。新UIから旧UIに戻して、また新UIに戻したら Reply-To が正常に返信先として設定したら正常に Reply-To が設定されるようになりました。原因わかる方がいましたら教えていただけると嬉しいです。。。
明日は、appleple 林田さんの記事です!
2018/01/09 追記
Gmail で Replay-To が反映されない原因がわかりました(会社の先輩に教えていただきました)。
From と To が一緒だと Reply-To が無視されるみたいです。解決策としては、AdminTo か AdminFrom のどちらか片方をエイリアス設定します。
例)
AdminTo: admin@admin.net
AdminFrom: admin+system@admin.net
情報元サイト:PHP Reply-To Header Not Recognised?? | Gmail Help Forum