diff --git a/lib/email_address/host.rb b/lib/email_address/host.rb
index <HASH>..<HASH> 100644
--- a/lib/email_address/host.rb
+++ b/lib/email_address/host.rb
@@ -366,7 +366,13 @@ module EmailAddress
       if self.ip_address
         @config[:host_allow_ip] && self.valid_ip?
       elsif rule == :mx
-        self.exchangers.mx_ips.size > 0
+        if self.exchangers.mx_ips.size == 0
+          false
+        elsif self.exchangers.mx_ips[0] == "0.0.0.0" || self.exchangers.mx_ips[0] == "::0"
+          false
+        else
+          true
+        end
       elsif rule == :a
         self.has_dns_a_record?
       elsif rule == :off
diff --git a/test/email_address/test_host.rb b/test/email_address/test_host.rb
index <HASH>..<HASH> 100644
--- a/test/email_address/test_host.rb
+++ b/test/email_address/test_host.rb
@@ -104,6 +104,7 @@ class TestHost < MiniTest::Test
 
   def test_yahoo_bad_tld
     assert ! EmailAddress.valid?('test@yahoo.badtld')
+    assert ! EmailAddress.valid?('test@yahoo.wtf') # Registered, but MX IP = 0.0.0.0
   end
 
   def test_bad_formats
Detect MX IP of <I> and ::0 as invalid

yahoo.wtf is registerd with a placeholder MX IP of <I>
detect if the first IP is this or ::0 (IPv6) and treat as invalid