]> code.citadel.org Git - infanticide.git/blobdiff - infanticide.pm
fix edge cases for previous commit
[infanticide.git] / infanticide.pm
index 3ad11d8e2f0cd4bfd3de3d5fd057f35679eda098..3c077f196a7fc4bd9225e72b979e2f9b7be0fb36 100755 (executable)
@@ -53,10 +53,38 @@ sub infanticide_get_creation_date {
                        # 2017-06-02T13:15:42Z
                }
        }
+       if ($cDate eq "") {
+               syslog('debug', "infanticide: no creation date for " . $domain_to_test);
+
+               # If the FQDN is made up of more than two components (for example, mail.spammers.com)
+               # try stripping components until it's down to two
+               $dots = ($domain_to_test =~ tr/.//);
+               if ($dots > 1) {
+                       return(infanticide_get_creation_date(substr $domain_to_test, index($domain_to_test, ".")+1));
+               }
+
+       }
        return($cDate);
 }
 
 
+sub infanticide_get_creation_date_recursive {
+       my $domain_to_test = $_[0];
+       my $cDate = infanticide_get_creation_date($domain_to_test);
+       if ($cDate ne "") {
+               return($cDate);
+       }
+
+       $dots = ($domain_to_test =~ tr/.//);
+       if ($dots < 2) {
+               return("");
+       }
+
+       return(infanticide_get_creation_date_recursive(substr $domain_to_test, index($domain_to_test, ".")+1));
+}
+
+
+
 sub check_for_disposable_domain() {
        $counter = $counter + 1;
 
@@ -64,9 +92,8 @@ sub check_for_disposable_domain() {
        my $fromaddr = $pms->get("From:addr", undef);
        my @fromarr = split('@', $fromaddr);
        my $domain = $fromarr[1];
-       my $creationDate = infanticide_get_creation_date($domain);
+       my $creationDate = infanticide_get_creation_date_recursive($domain);
        if ($creationDate eq "") {
-               syslog('debug', "infanticide: no creation date for " . $domain);
                return(0);
        }
        my $dt = str2time($creationDate);