#!/usr/bin/env perl -w use Net::DNS; use DNS::ZoneParse; use Socket; $res = Net::DNS::Resolver->new(); my $ZONEPATH = $ARGV[0] or die "You Must specify the /full/path/to/zonefiles/domain.com\n"; my @fields = split(/\//,$ARGV[0]); $DOMAIN = $fields[-1]; my $data_file = "/tmp/$DOMAIN.err"; open FILE, "+>$data_file" or die "can't open $data_file $!"; my $zonefile = DNS::ZoneParse->new($ZONEPATH); my $mx_records = $zonefile->mx(); # DNS query MX records my @mx = mx($res, $DOMAIN); my $DNS_mx_records_size = scalar @mx; my $mx_records_size = scalar @$mx_records; my $mx_priority = $mx_record->{priority}; my $mx_hostname = $mx_record->{host}; if ($DNS_mx_records_size ne $mx_records_size) { print FILE "$DOMAIN:MX:Count:$mx_records_size//Count:$DNS_mx_records_size\n"; } foreach $mx_record (@$mx_records) { print FILE $DOMAIN, ":MX:", $mx_record->{priority}, ":", $mx_record->{host},"//\n"; } foreach my $record (@mx) { print FILE "DNS:MX:", $record->preference, ":", $record->exchange, "\n"; } close (FILE);