[Mimedefang] Issues w/ GeoIP2

Philip Prindeville philipp_subx at redfish-solutions.com
Tue Mar 11 11:57:35 EDT 2025



> On Mar 10, 2025, at 2:01 AM, giovanni--- via MIMEDefang <mimedefang at lists.mimedefang.org> wrote:
> 
> On 3/10/25 7:05 AM, Philip Prindeville via MIMEDefang wrote:
>> Hi,
>> I’ve started seeing the following recently:
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: No record found for IP address 167.94.138.174
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: Trace begun at /
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: usr/share/perl5/vendor_perl/GeoIP2/Database/Reader.pm line 88
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: G
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: eoIP2::Database::Reader::_model_for_address('GeoIP2::Database::
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: Reader=HASH(0x557f24549ab8)', 'ASN', 'type_check', 'Regexp=REGE
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: XP(0x557f2b13eba8)', 'is_flat', 1, 'ip', 167.94.138.174) called
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr:  at /usr/share/perl5/vendor_perl/GeoIP2/Database/Reader.pm line
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr:  113
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: GeoIP2::Database::Reader::asn('GeoIP2::Database::Reader=HA
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: SH(0x557f24549ab8)', 'ip', 167.94.138.174) called at /etc/mail/
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: mimedefang-filter line 3068
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: main::filter_helo(167.94.138.174, '
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: [167.94.138.174]', 'www.censys.io', 46632, 192.168.8.3, 25, '52
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: A5RhOI1495862') called at /usr/bin/mimedefang.pl line 686
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: main:
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: :handle_helook(167.94.138.174, '[167.94.138.174]', 'www.censys.
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: io', 46632, 192.168.8.3, 25, '52A5RhOI1495862') called at /usr/
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: bin/mimedefang.pl line 505
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: main::do_main_loop at /usr/bin/mimed
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: efang.pl line 474
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: main::main at /usr/bin/mimedefang.pl line 152
>> Mar  9 23:27:53 mail mimedefang-multiplexor[1495492]: Worker 0 stderr: 1
>> apologies for the crappy line-wrapping.
>> I’m not sure why it’s not able to find a record for that.  The CIDR 167.94.138.174/24 is known to be ASN 398324.
> could you post an extract of /etc/mail/mimedefang-filter around line 3068 ?
> GeoIP2 code is part of your mimedefang-filter code.
> Which MIMEDefang version are you running ?
> Thanks
>  Giovanni


I’m running Fedora 41 (LTS), so. 3.6.1 is what ships with that.

My code looks like:

…
use GeoIP2::Database::Reader;

my $reader = GeoIP2::Database::Reader->new(
   file => '/usr/share/GeoIP/GeoLite2-Country.mmdb',
   locales => [ 'en' ]
);

die "Couldn't create GeoIP2::Database::Reader object" unless $reader;

my $reader2 = GeoIP2::Database::Reader->new(
    file => '/usr/share/GeoIP/GeoLite2-ASN.mmdb',
    locales => [ 'en' ]
);

warn "Couldn't create GeoIP2::Database::Reader object" unless $reader2;


sub filter_relay($$$$$$$) {
    __enter();

    my ($hostip, $hostname, $hostport, $serverip, $serverport, $qid) = @_;
    my $cc = undef;

    if ($serverport == 25 && !is_local($hostip)) {
        my $record = $reader->country(ip => $hostip);
        $cc = lc($record->country()->iso_code()) if ($record);
    }

….


sub filter_helo($$$$$$$) {
    __enter();

    my ($hostip, $hostname, $helo, $hostport, $serverip, $serverport, $qid) = @_;

    if ($serverport == 25) {
…

        if (defined $reader2 && $hostip ne '127.0.0.1') {
            my $asn = $reader2->asn(ip => $hostip);
            if (defined $asn) {
		my $num = $asn->autonomous_system_number();
                my $org = $asn->autonomous_system_organization();
		md_syslog('debug', "helo: AS $num is '$org'”);
		if (exists $bad_isp{$org}) {
		    md_syslog('debug', "helo: This ISP has been blacklisted”);
		    __leave();
		    return ('REJECT', "This ISP has been blacklisted”);
		}
	    }
	}


As for GeoIP2:

[root at mail mail]# mmdblookup -f /usr/share/GeoIP/GeoLite2-ASN.mmdb -i 167.94.138.174

  {
    "autonomous_system_number":        398324 <uint32>
    "autonomous_system_organization":        "CENSYS-ARIN-01" <utf8_string>
  }

[root at mail mail]#
[root at mail mail]# ls -ltr /usr/share/GeoIP/
total 76656
-rw-r--r--. 1 root root  9846544 Mar 11 09:44 GeoLite2-ASN.mmdb
-rw-r--r--. 1 root root  8828854 Mar 11 09:44 GeoLite2-Country.mmdb
-rw-r--r--. 1 root root 59816818 Mar 11 09:44 GeoLite2-City.mmdb
[root at mail mail]# 



> 
>> Has anyone else seen this?
>> Thanks,
>> -Philip
>> _



More information about the MIMEDefang mailing list