概要
ポエム。Web系に関わってから絶対関わりたくないと思ったものがメール関連の仕事。しかし、間接的に関わることに。しかもGmailに届かない。メールのことなんてほとんど知らんのに。
メール関連に関わりたくなくなった出来事
とある一人エンジニアの社長がいた。関係性はうちの社長との仕事関係。Webサービス作成を頼んでいて、私は門外だったけど、データの収集役として作業した。最終的には私のデータを使ってWebサービスを展開していく予定だったが、うちの社長との折り合いが付かなくなって消えてしまった。
話を戻して、とあるときに事件が起こった。うちの小汚い部屋の隅に何やらそのエンジニア社長のサーバーを置いていたらしくてメールサーバーが不具合を起こしてメールの送受信が止まっていたらしい。うちの会社とは無関係。その社長の顧客数は2,300くらいだったと思う。クレームが凄かったらしい。その様子を見てメール関連の仕事は絶対関わりたくないと思った。
たくさんのメール送信システムの実装
マッチングメール、ステップメール、リンクをクリックしたらメールを運営に送信する機能等を実装した話。
マッチングメール機能を作ることに
エンジニア社長がいなくなったから代わりに私がWebサービスを作ることになった。実験で似たようなコンセプトを2、3サイト作ってみて事なきを得た。
次の指令がマッチングメールを作る事だった。当時は条件にあった登録してあるデータをメールで送信してくれとのこと。簡易的な会員機能をつけて、条件にマッチしたらそのデータを会員に送るとういう奴だ。
所謂、マッチングメール。当然会員にのみメールを送ることになるのだが「メールアドレスとパスワードを両方入力するの面倒じゃね?パスワード忘れちゃうでしょう。」という理由でパスワードを廃止しろという指令がきた。流石にそれはヤベーのでデメリットを説明して納得してもらった。
マッチングメール機能の実装、これ自体は簡単に出来た。条件に当てはまったものをメール送信するだけなのだから。問題は送った後だ。同じデータを何回も送るのか、一回だけなのか。色々あったけど何度も送る仕様になった。いまだったら良くて[SPAM]と件名につくか迷惑メール行きだろう。悪ければメールすら届かない。
ときは流れて、またマッチングメール機能を作ることに+ステップメール機能も作ることに。
今度は全然違うところでまたマッチングメールを作っている。前回と違って一回送信したものは再度送らない仕様。さらに、メールにはデータの詳細ページに飛ぶためのリンクがあるのだが、それをクリックしたとき、運営者に「クリックされたよ!」とメールを送信するための機能も実装した。
ステップメールは会員登録した後に3日後にAの内容、7日後にはBの内容と送るものである。
Gmailにメールが届かなくなった
ある日突然Gmailにメール受信されなくなった。迷惑メールにすら入っていない。
そのトラブルの話を聞いていくつかの予想はついた。SMTP認証でメールの送信をしてないからだろうと。
そのことを社長に説明したけどイマイチ理解してくれず遠回りしたのだがそれは関係ない話なので省く。同サーバーでこっそり実験をしてSMTP認証なら無事届くことを確認した。CakePHP2(レガシーなフレームワーク)を使っていたのだがちゃんとSMTP認証ができるような設定があって軽微な修正で済んだ。良かった良かった。
ホスティングサーバーがサーバー移転すると言い出した
このサービスは共用サーバーで動いていた。それくらいの規模のサービスだったと思ってくれて良い。ホスティング会社の中の人は何もしなくても大丈夫。ただIPアドレスは変わりますよとのこと。内心は信用していなかった。
強制移転なので拒否はできない。私的にサーバーを借りていて、同じようなことを言われて移転したのだがcrontabの中身がなくなってたことがあったからだ。
予想通りトラブルは起きた。お問合せフォームからのメール送信がうまくいかないのだ。
ここらの記憶は曖昧なのだが今回は送信自体がうまく出来てなかった。ゾーンの設定をいじって何とか送信できるようにした気がする。
サービスも安定してたところに別のサービスで使っているサーバーがまた移転
また移転するぞ!と行ってきたのだが今回は前回とは勝手が違う。結構大きいサービスなので問題を起こすわけにはいかない。任せてたいたら99%トラブルだろうなと思ったので専用サーバー(管理は向こう)を借りてそっちにサービスを移行することにした。
理由がもう一つがあってメールの送信制限がギリギリだったのだ。Mailgunとかメール送信メインのサービス使いませんか?と提案したのだが専用サーバーなら無制限にメール送信が使えるとのことだったので聞き入れてもらえなかった。(blastengineは知らなかった)書いてはいないがこのホスティング会社で3,4回サーバー移転の機会があったがトラブルがなかったことは一度も無い。
余談
無制限は100%無制限ではない。帯域無制限、容量無制限、このように謳っているところは要注意。容量無制限はアマゾンですら撤退したサービスがあるのだ。帯域無制限も使いすぎると文句を言われる。しっかりと「負荷をかけすぎたらダメだよ」のようなことが利用規約に書いてあるのだ。とあるホスティング事業を手伝っていたこともあって、そのときの繋がりで(別な会社)無制限とは謳っているけど一定の帯域制限が決まっている表を見せてもらったこともある。
専用サーバーでトラブルは起きたか否か?
結果から言うと起きた。メール送信できていたのに急に出来なくなったのだ。問い合わせをしたが何も変えてないと言う。ここで初めて書くが利用しているホスティング会社のSMTPのポート番号がサーバーによって違っているのだ。465だったり587だったり。当然、問い合わせのときにポートのことも聞いた。
PHPのエラーを見るとopenssl系のエラーが出ていたのを覚えている。そのせいもあって最終的にはロールバックをするしかないかと思ったが一晩寝て、メールアプリで送信してみたら普通に送信できた。
おかしくね?と思ってポートを変えたら送信できるようになった。脱力。
Gmailのガイドライン変更
やっと、落ち着いたと思ったらなにやらGmailのガイドライン変更。
そのことについて、アドベントカレンダーに1日目に色々と書いてあった。
SPF・DKIM・DMARC これらの設定が必要なようだ。
SPFは設定してある。DKIMもしてある。
DMARC・・・以前調べたことがあったけど忘れた。何だったかな。メールと関わりたく無いから避けてきたけど、どうにも避けられないようだ。
元気な時にGmailのガイドラインを読むとしよう。
記事を書いてくれた人、ありがとう。