Armadilloフォーラム

gethostbynameのエラーについて

n.yamamoto

2015年1月31日 21時52分

Yamamotoです。

メール送信を行うためにsmtpサーバのドメイン名をgethostbyname関数でIPアドレスに変換しようとしていますがUnknown hostのエラーが返ってきます。

/etc/hostosにドメイン名とIPアドレスを登録すると正常に送信できます。

以前に行ったことのある者から/etc/config/resolv.confに登録すればDNSサーバー解決で正常に送信できるはずと聞き、resolv.confに登録したのですがUnknown hostエラーになります。

登録内容は以下のようにしました。
domain xxx.ne.jp <--- smtpサーバドメイン名
nameserver xxx.xxx.xxx.xxx  <--- smtpサーバドメインIPアドレス

hostsを変更して使用すべきなのか、resolv.confを変更して使用すべきなのか?
resolv.confを変更したほうが良いのであれば、使用方法のどこが悪いのか?

教えていただけませんでしょうか。

よろしくお願いいたします。

コメント

中村です。

> 登録内容は以下のようにしました。
> domain xxx.ne.jp <--- smtpサーバドメイン名
> nameserver xxx.xxx.xxx.xxx  <--- smtpサーバドメインIPアドレス

resolv.confのnameserverに書くのは、ネームサーバ(DNSサーバ)のIPアドレスです。
必須なのはnameserverだけで、FQDNで問い合わせるならdomainは不要です。

--
なかむら

Yamamotoです。

済みません。
別件対応で、教えていただいた内容で確認できないでいます。

> resolv.confのnameserverに書くのは、ネームサーバ(DNSサーバ)のIPアドレスです。
> 必須なのはnameserverだけで、FQDNで問い合わせるならdomainは不要です。

確認後、不明点があれば再度問い合わさせていただきます。

Yamamotoです。

再度LAN接続でメール送信の必要があり再確認を始めました。

やっていたことをすっかり忘れて、最初からやり直しています。

resolv.confのnameserverは接続してるネットワーク接続のDNSに指定してる社内のIP(通常使われる XXX.XXX.0.1)を指定しています。

hostsにもlocalhostとして割り付けた自IPを登録しています。

上記でgethostbyname呼ぶと”Unknown host”エラーになります。

以前回答したhostosにSMTPサーバ登録でも上手くいかなくなりました。おそらくhostosとresolv.confの内容の組合せによると思うのですが。

この辺りの組合せとか設定をご教授願えませんでしょうか?

Yamamotoです。

済みません。
自己解決しました。

FOMAアダプタ使用環境で、LAN接続を使用しようとしていたためにdefault gw設定を削除してました。(ppp接続用に)
それで、SMTPサーバに接続に行けなかったようです。

ただ間違った見方をしていたのが関数呼び出し毎にh_errnoを表示させていて、これが”Unknown host”と表示され、余計にややこしくしてました。