設定を足しただけでは、変わらなかった

執筆者:

カテゴリ:

問い合わせフォームの送信先を設定して、保存しました。画面を開き直しても、フォームは「準備中」のままでした。

設定は間違っていません。読まれるタイミングが違っただけでした。

この記事で扱うこと

問い合わせの受け取りを外部サービスに任せるまでの判断と、その設定でつまずいた3点です。環境変数がいつ読まれるか、保存したら見られなくなる値のこと、そして「正しく弾けているか」の確かめ方を書きます。

なぜ自分でメールを送らないのか

このサイトには、メールを送る手段がありません。足すこと自体はできますが、そこから先が長い。

迷惑メール扱いされないためには、そのドメインから送ってよいという宣言をDNSに置く必要があります。SPFとDKIMと呼ばれるものです。

SPFは1ドメインに1本しか置けない

すでに何かの設定が入っている状態で足すと、書き方を誤った瞬間にメールが届かなくなります。

しかも壊れたことは、こちらからは分かりません。誰かに「返信が来ない」と言われるまで、正常に見え続けます。

問い合わせを1本受け取るために、この重さを引き受けるのは割に合わないと判断しました。受け取りだけ外に出すことにします。

求めているのは、転送先1つだけ

ボット対策も、エラーの出し分けも、入力の確認も、すべてサイト側に置いてあります。外のサービスに任せているのは「受け取って、メールで転送する」という一点です。

この形にしておくと、乗り換えの費用が小さくなります。別のサービスに移すときに変えるのは送信先のURL1つで、コードには触りません。

最初から小さく繋いでおく

外部サービスの機能を使い込むほど、そのサービスの形に合わせた作りになります。便利ですが、離れにくくもなります。

「何を任せないか」を先に決めておくほうが、あとから選び直せます。

つまずき1:環境変数は、ビルドのときに読まれる

送信先のURLは、コードに書かずに環境変数として置いています。保存して、サイトを開き直しました。変わりません。

思っていたこと 実際
設定を保存すれば、次のアクセスから反映される 作り直すまで、前の状態のまま

このサイトはページを先に作ってしまう構成なので、環境変数を読むのはページを作るときです。あとから設定を足しても、すでに作られたページは古い状態を抱えたままになります。

配信サービスの画面にも「変更を反映するには新しいデプロイが必要です」と出ていました。読んでいませんでした。保存した時点で終わったつもりになっていたからです。

つまずき2:保存すると、見られなくなる値がある

環境変数を保存するとき、種別を2つから選べました。

種別 あとから値を見られるか
設定値 見られる
秘密 見られない

今回は「秘密」を選びました。訪問者に配るファイルへ混ざってほしくない値だからです。

ただしこれは、自分でも二度と確認できないという意味でもあります。今回は発行元の画面でいつでも見られるURLなので困りませんが、そうでない値なら、保存する前に控える必要がありました。

つまずき3:相手側の防御が、こちらの正常な送信を弾く

受け取り側のサービスにも、独自のボット対策が用意されています。画像の文字を読ませるあれです。

ブラウザ前提の仕組みは、サーバー間では通らない

この対策は「人がブラウザで操作している」ことを前提にしています。

今回はサイトのサーバーから相手のサーバーへ送る形なので、有効になっているとこちらの正常な送信まで弾かれます。

今回は既定で無効になっていたので何もせずに済みましたが、有効な状態で繋いでいたら「設定は合っているのに届かない」で長く悩むところでした。二重に掛けた対策が、互いを打ち消すことがあります。

正しく弾けているかは、画面では分からない

繋いだあと、4つ試しました。

送ったもの 期待 結果
普通に書いて送る 通る 通った
開いた直後に送る 断る 断られた
アドレスの形が違う 断る 断られた
見えない欄を埋めて送る 捨てる 「送信しました」と出た

最後のものは、わざとそうしています。機械に「その欄を避ければ通る」と分からせないためです。

そのぶん、画面を見ているだけでは、弾けたのか通ったのかが区別できません。確認するには受信箱を見て、届いていないことを確かめる必要があります。実際に届いていたのは4件のうち1件だけでした。

「何も起きないこと」を確かめる手順を用意しておく

正しく動いた証拠が「画面に出ない」「メールが来ない」という形をしている場合、確認の手順を別に決めておかないと、確認そのものを忘れます。

今回の学び

まず、設定を保存した時点では、まだ何も変わっていないことがあるということ。読まれるのがページを作るときなら、作り直すまでは古いままです。保存できたことと、効いていることは別でした。

次に、隠すと、自分からも見えなくなること。訪問者に見せたくない値を隠すのは正しい判断ですが、その値を次に必要とするのは自分かもしれません。保存する前に控えるかどうかを決めておく必要がありました。

そして、対策は二重に掛けると打ち消し合うことがあること。自分の側で弾いているのに相手の側でも弾いていると、通したいものが通りません。どこで何を見ているかを1回並べて書き出すのが、結局早い道でした。

コメント

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です