Mailmunge::Test::GetMX − Get the MX records for a domain and classify them
This class performs an MX lookup on a given domain and returns the IPv4 addresses of the MX hosts, classifying each IP address as described below.
"Mailmunge::Test::GetMX" is a subclass of "Mailmunge::Test".
use
Mailmunge::Test::GetMX;
sub filter_sender {
my ($self, $ctx) = @_;
my $getmx = Mailmunge::Test::GetMX−>new($self);
my $results =
$getmx−>get_mx_hosts($ctx−>sender);
if (scalar(@{$results−>{bogus}}) {
$self−>log($ctx, 'info', "Found reserved IPs
in MX for " . $ctx−>sender);
}
if (scalar(@{$results−>{private}}) {
$self−>log($ctx, 'info', "Found RFC 1918 IPs
in MX for " . $ctx−>sender);
}
if (scalar(@{$results−>{loopback}}) {
$self−>log($ctx, 'info', "Found RFC loopback
IPs in MX for " . $ctx−>sender);
}
if (scalar(@{$results−>{routable}}) {
$self−>log($ctx, 'info', "Found valid routable
IPs in MX for " . $ctx−>sender);
}
}
Constructs and returns a new Mailmunge::Test::GetMX object.
Given a domain
or an email address, looks up the MX hosts of the domain (or
domain of the sender) and returns a hash containing the
following four elements:
bogus
An arrayref of MX hosts IPs that have bogus unroutable IP addresses (such as 0.0.0.0, 255.255.255.255, or multicast addresses, for example.)
private
An arrayref of MX host IPs that are in the RFC 1918 private use ranges.
loopback
An arrayref of MX host IPs that are in the range 127.0.0.0/8.
routable
An arrayref of MX host IPs that are globally−routable unicast IPv4 addresses.
You may wish to have your filter reject mail from domains that have bogus MX records; make your decision based on the value returned from get_mx_hosts.
Given the string representation of an IPv4 address, returns true if it's in the range 127.0.0.0/8 or false otherwise.
Given the string representation of an IPv4 address, returns true if it's in one of the RFC 1918 private ranges or false otherwise.
Given the string
representation of an IPv4 address, returns true if it's in
one of the following ranges:
Link−local
169.254.0.0/16
IPv4 Multicast
224.0.0.0/4
Class E
240.0.0.0/4
Bogus
0.0.0.0/32 and 255.255.255.255/32
Dianne Skoll <[email protected]>
This code is licensed under the terms of the GNU General Public License, version 2.