Using resolv to get the mailhost

Hi,

I’m trying to figure out a way to get the mailhost using the ‘resolv’
library, but I’m having trouble because it isn’t documented. What’s a
good analogue of this Perl script?

use strict;
use Net::DNS;

my $resolv = Net::DNS::Resolver->new();
my $packet = $resolv->search(“mailhost”);

foreach my $rr ($packet->answer){
$rr->print;
}

Prints the following (IP addresses changed to protect the guilty):

mailhost.foo.com. 900 IN CNAME mailgate.domain.com.
mailgate.domain.com. 900 IN A 1.2.3.4
mailgate.domain.com. 900 IN A 1.2.3.5
mailgate.domain.com. 900 IN A 1.2.3.6
mailgate.domain.com. 900 IN A 1.2.3.7
mailgate.domain.com. 900 IN A 1.2.3.8
mailgate.domain.com. 900 IN A 1.2.3.9

I’d really just like the first name of the first answer, i.e.
mailhost.foo.com”.

Thanks,

Dan

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Daniel B. wrote:

my $packet = $resolv->search(“mailhost”);
mailgate.domain.com. 900 IN A 1.2.3.6
mailgate.domain.com. 900 IN A 1.2.3.7
mailgate.domain.com. 900 IN A 1.2.3.8
mailgate.domain.com. 900 IN A 1.2.3.9

I’d really just like the first name of the first answer, i.e.
mailhost.foo.com”.

It seems that I needed to put an explicit domain entry for foo.com in my
/etc/resolv.conf file. Once I did that, then
Resolv.getaddress(“mailhost”) worked.

However, I’m confused as to why “host mailhost” and the Perl code above
worked without it, while the Ruby code required it. Any insight
appreciated.

Regards,

Dan

PS - Solaris 10, btw.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org

iD8DBQFFHGqK3p/dorzCFX0RAuajAKCXN6zBl+4mkV4gtpKgfb2HtYHywwCglLYc
9bD7X4QYv8uiIYVLeQwguBA=
=lKyF
-----END PGP SIGNATURE-----