定期的なメール検証では不十分な理由。 PHPおよびRubyのサンプルを使用したMXレコードの検証

彼らが世界に何回繰り返しているのか...どの正規表現が正しいかについて、長くて恐らく無限の議論があり、ユーザーの電子メールフィールドをチェックする必要があります。



はい、あなたは本当にレギュラーシーズンで確認する必要があります。 しかし、当社の製品はオンラインです。 それでは、彼女の本当の力を使ってみませんか?



さらに、メールアドレス(ドメインを含む)を入力するときにユーザーが本当に間違えられることがよくあります。 さて、または、電子メールフィールドに、正規表現を簡単に飛び回る可能性のある「Habrakadabra」を入力しますが、このドメインでさえ自然には存在しないため、メールにすることはできません:)



ちなみに、このニュアンスでは、文字通り飛び上がっただけです。要点は、かなり人気のあるCMSで作成されたサイトで、何らかの理由でメール通知の送信を停止したことです。



判明した理由は、メーリングリストがスパム送信されたためです。



いくつかの理由がありました。



  1. CMSは非常に人気があり、したがって、登録されたスパマーが多数います。 そして、もっと面白いのは、設定でできることです(ちなみに、多くの人がそうします)。 この場合、ここで(ほとんどのボットが行うように)ごみを入力できます
  2. 文字のテキストは標準のものからコピーされませんでした。


合計:スパマーは登録するために大規模に登り、スクリプトに残された電子メールを投げ、そこで手紙を送ろうとしました。 スパムフィルターでは、他の電子メールアドレスから何度も見たテキストを含む多数の電子メールが私たちの電子メールから送信され、同時に、かなりの数の電子メールが存在しない電子メールアドレスに分類されました。



一般に、郵送先住所は定期的にスパムに該当しました。



したがって、経験上、それぞれ、インターネット上のドメインの可用性、およびその上のメールサービス(ドメインのMXレコード)の可用性を確認することが、理論上は存在し、ユーザー登録システムで機能するはずであると主張することができます。



実際、チェックの本質は非常に簡単です。登録中、ユーザーデータを検証する段階で、ドメインを電子メールから分離し、MXの内容を確認します。



難しいですか? そうでもない。 ただし、郵便サービスの負荷を大幅に削減できます。 ところで、スパムリストに登録される可能性ははるかに低くなります(結局のところ、存在しないメールアドレスに大量の手紙を送信することはスパムの兆候の1つです)。



PHPでは、奇妙なことに、これは非常に簡単です。



$email ="11@sdlkfjsdl.co.uk"; $domain = substr(strrchr($email, "@"), 1); $res = getmxrr($domain, $mx_records, $mx_weight); if (false == $res || 0 == count($mx_records) || (1 == count($mx_records) && ($mx_records[0] == null || $mx_records[0] == "0.0.0.0" ) ) ){ //   -  mx-   echo "No MX for domain: $domain"; }else{ // ,  MX-   ,      echo "It seems that we have qualify MX-records for domain: $domain"; }
      
      





むしろ「怪物」の場合を説明します。 実際、 getmxrr関数のドキュメントには、その動作への参照が完全に正しくないコメントがありました。 そして、私はそれらをphp7.1で見つけることができませんでした-追加のチェックは追加のチェックではありません:)



ルビーでは、これは同様の方法で行われます:



 domain = invite.email.split('@').last.mb_chars.downcase.to_s.force_encoding("UTF-8") # ,   .         UTF-8,     mail_servers = Resolv::DNS.open.getresources(domain, Resolv::DNS::Resource::IN::MX) if mail_servers.empty? # MX-.       false else true end
      
      





同時に、このようなメールフィールドのチェックは、プロジェクトのデータベース内の情報の品質に重大な影響を与えるだけでなく(スパマーが通知を送信するリスクを減らす)、ワークロードの削減にもつながることを明確にします。 結局のところ、スクリプトからの手紙の送信は実際にはかなり遅いプロセスです。



All Articles