• ベストアンサー

メールサーバーの構築(3)

こんにちは。この件に関して前回まで、回答・アドバイスしてくださった方有難う御座います。 今、既存のネットワーク中(大学・会社など)にメールサーバーを構築しています。(OS:Red Hat Linux6.2J) Eudoraというメーラーを使用すると、受信はしっかりとできます。しかし、送信ができませんでした。(サーバーマシンからは送信できました。) この問題に関して、EudoraのSMTPサーバの設定をホスト名からIPアドレスに変更したことにより送信できるようになりました。これにより、どうやら、DNSの設定に問題があるということなのですが・・・ まず、既存のネットワークに構築する場合、キャッシュ(オンリー)サーバーとして設定すればいいと、書籍に書いてあったので、そのように設定したつもりです。 /etc/resolv.conf domain abc.def.ac.jp 自ホストのドメイン名 nameserver 123.45.678.90 中継サーバーIPアドレス /etc/named.boot ; ;a caching only nameserver config ; directory /var/named cache . named.ca primary 0.0.127.in-addr.arpa named.local /etc/named.confはインストール時と設定は変えていません。 どこか、間違えているところがあるとおもうのですが・・・?? あと、/etc/hostsにIPアドレスとホスト名を書いておいても、DNSの設定は必要なのでしょうか?DNSの設定をする以前は、pingをかけるとホスト名でつながっていることが確認できるのですが、nslookupを実行すると、うまくいきませんでした。これは、なぜなのでしょうか・・?pingの時はホストが見つけられているのに・・と思いました。 表現が不適切なところもあるかもしれませんが、アドバイスなどしていただければ助かります。よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Sarukan
  • ベストアンサー率55% (41/74)
回答No.6

それでは不具合の整理をしたいと思います。 今回のようなケースはかなり頻発する不具合なので覚えていて損は無いでしょう。 ---  一般的にsendmail.nomxを使用する(MX_sendmail=noに設定する)とDNSの検索を行わなくなるような錯覚に陥りがちですが、たとえDEFAULT_RELAYをIPアドレスで指定したとしても、"[ ]"というDNS検索を回避させる指定で設定しない限り、その情報をDNSサーバーに問い合わせに行ってしまいます。この際に、resolv.confの設定に基づいてsendmailはDNS情報を取得しようとしますので(たとえば、自分自身でDNSが稼動している場合にも、resolv.confには自分自身をネームサーバーとして記述します)、ここに情報がないと、 Name server:xxx:host name lookup failure  という、ネームサーバーが見つからないエラーを返します。ですから、この場合の対応としては、 1.Default_relayのサーバー名を"[ ]"で囲む 2.resolv.confを作成し、どこからかDNS検索をさせるようにする  のいずれかという事になり、今回の場合はちょうど「2.」で対応したケースに当たるので正常に稼動するように戻ったわけです。ただ、できればsendmail.nomxを四余売れる場合には出来るだけDNSに依存しない設定にしておいたほうが管理しやすいので(完全にDNSと縁が切れるため)、「1.」の対応方法もあるのだという事も覚えておくとよいと思います。 ----  それから、クライアントのほうですが、なぜsmtpサーバーのほうの設定だけが引っかかり、POPサーバーの設定は引っかからなかったのかが疑問として残りましたが、これも原因はメールサーバーがメールを送信できなかった事と同じで、メールサーバー名からIPアドレスを検索する方法が無かったため、接続する事が出来なかったためです。そのため、クライアント側のhostsにメールサーバーの情報を登録する事で、メールサーバー名からIPアドレスを検索する事を可能にしてあげたわけです。そして、通常、こういった処理をしない限り、クライアントのメーラーではsmtpサーバーやPOPサーバーの指定はIPアドレスで行います。  また、今回は分かりやすい方で対応方法を説明させていただきましたが、こちらのほうも実際にはメールサーバー名からIPアドレスを知る方法は複数存在するので、列記しておきたいと思います。 1.hostsファイルに直接書き込む 2.TCP/IPの設定で設定し、中継サーバーからDNSを参照する  つまり、こちらでもDNSを利用することは可能なわけです。  その場合、Windowsマシンであれば「コントロールパネル」にある「ネットワーク」を開けば設定できます。こちらの方法も、機会があったらぜひ試してみてください。 ---  というわけで、今回の不具合は双方とも共通した原因で、「サーバー名からIPアドレスへの変換(名前解決)が円滑に行われていなかったため」でした。サーバー側では「DNSを利用する解決法」を、クライアント側では「DNSを利用しない解決法」を取ったかたちになっているため、別々の問題のように見えるかもしれませんが、双方ともに、同種の問題だったわけです。そのため、双方ともに名前解決が円滑に行えるように対処を施したという事になります。  以上、参考になりましたら幸いです。対応、お疲れ様でした。

leon-10
質問者

お礼

大変分かりやすく回答して頂き有難う御座います。 自分の中で、こんな事なのかなぁと言うように、曖昧になっていたことが、説明して頂いたことで、しっかりと何が原因でどのように解決していったのかが、分かりました。 とてもためになりました。と、同時に初心者とはいえ、自分の知識の少なさを知りました。少しずつでも、勉強していこうという気持ちになりました。 それでは、多くの回答・アドバイス有難う御座いました。

その他の回答 (5)

  • Sarukan
  • ベストアンサー率55% (41/74)
回答No.5

/etc/hostsに中継サーバーが登録してあるとすると状況は少々複雑になります。 まず、resolv.confに中継サーバーを登録していたわけですから、実際にはsendmail.defのどこかの設定でDNSを検索している恐れがあります。ただ、DNSを使用する項目はそれほど数があるわけではないのでそれぞれについて確認は可能です。 mx_sendmail(デフォルトはyes) CANON(デフォルトはyes,mx_sendmail=noの場合自動的にnoにされる) ACCEPT_BESTMX(デフォルトはno) DEFAULT_RELAY(デフォルトでは未定義) LOWER_MX_OK(デフォルトはno、MAIL_RELAY_RESTRICTIONがyesになっているときのみ有効) 主に送信時にDNSを使用する要因は上記の4つです。このうちmx_sendmailがnoになっているわけですからCANONも確認不要となりますので、 ACCEPT_BESTMX=no/または未定義 LOWER_MX_OK=no/または未定義 である事を確認してください。また、DEFAULT_RELAYを設定する時に、 DEFAULT_RELAY='smtp:[relay.host.name]' と中継サーバー名を[ ]で囲まないとDNSを検索しようとしてしまうので注意してください。それから、もう一点、 DIRECT_DELIVER_DOMAINS の設定も確認してください。これがallになっているとすべてのメールドメインに対し、中継サーバーを経由せずに宛先ドメインへ直接メールを送ろうとしてしまいます。sendmail.nomxでは下記の設定にしておいたほうがいいでしょう。 DIRECT_DELIVER_DOMAINS=none --- それから、namedの停止についてですが、該当のファイルが無い場合、 # chkconfig named off というコマンドを試してみてください(うまくいかない場合はman chkconfigでマニュアルを参照してみてください)。こちらでも起動しないように設定する事が出来ます。 以上、また試してみてください。

leon-10
質問者

お礼

沢山のわがままな質問に答えていただき大変感謝しています。 とりあえず、メールサーバーの方は、メーラーからでも送受信できるように設定することができました。 本当に有難う御座いました。 今回の回答の中で1点だけ DEFAULT_RELAY='smtp:[relay.host.name]' この部分なんですが、[]でホスト名をくくっていませんでした。 そのため、DNSを検索しようとしていたのだと思います。さらに、そのDNSの設定ができていないために、ホストを探すことができなかったのかなぁと思いました。 最終的には、 /etc/resolv.confの中身は消さないでとっておいて、クライアントの方のhostsファイルにメールサーバーのホスト名とIPアドレスと書きこんだら、なぜか、しっかりと動作しているようです。 なぜでしょうか?もう少し、締め切らないで置いておくので、お暇がありましたら、教えて頂けないでしょうか?よろしくお願い致します。 本当に助かりました。pointが最高20点しかないのが残念です。有難う御座います。 あとこの場をお借りして、私の3度に渡るメールサーバー構築に関する質問に回答・アドバイスをしてくださった、Sarukanさんをはじめとする方々に本当に有難う御座いました。

  • Sarukan
  • ベストアンサー率55% (41/74)
回答No.4

度々失礼致します。 一点説明が抜けておりました。大変申し訳ありません。 sendmail内のdefoult_relayの指定が、中継サーバーのIPアドレスでなく、中継サーバーのメールサーバー名になっている場合、Linuxのメールサーバーのhostsに中継サーバーの情報を登録する必要がありますので、もしこの場合に当てはまるなら設定してあげてください。 おそらく、この問題だと思います。 --- また、namedを使用しないときの設定ですが、「/etc/rc.d」か、「/etc/rc.init.d」ディレクトリ直下の「rc.inet1」もしくは「rc.inet2」というファイルのうちのどれかにnamedのON/OFF設定の項目があるので、そこでnamedをOFFにして再起動を掛けてあげてください。その後はnamedが起動しなくなります。 --- 以上で、おそらく正常に動くと思います。

leon-10
質問者

お礼

何度もご丁寧な回答有難う御座います。 メールサーバーの/etc/hostsファイルには中継サーバーのIPアドレスとホスト名は書き込んであるのですが・・・ホストがみつからないと言われてしまいます。 namedを使用しないという設定ですが・・・/etc/rc.dのディレクトリはありました。/etc/rc.init.dはありませんでした。しかし、/etc/rc.dの下に・・・rc.inet1又rc.inet2というファイルがありません・・・ あるのは、 ファイル:rc rc.local rc.news rc.sysinit ディレクトリ:init.d rc0.d~rc6.d です。ディレクトリはinit.dの中は関係ありそうなのが、/etc/rc.d/init.d/nemadというファイルぐらいです・・・ どのファイルのどんなところを直したら良いのか検討がつかない状態です・・ namedさえ止めてしまえば送受信できるようになるのでしょうか? キャッシュサーバーとかに設定しなくてもよいのでしょうか? 度々申し訳ありませんが、御回答よろしくお願い致します。

  • Sarukan
  • ベストアンサー率55% (41/74)
回答No.3

お手数をおかけしました。 まず今回の設定を整理するところから説明させていただくと、 1.メールサーバーのresolv.confの設定は不要 2.メールサーバーのnamed(DNS)は止めてしまって構わない 3.クライアントのhostsにメールサーバーを登録した方が好い という事が分かりました。 ということで、解決策としてそれぞれの対応を説明させていただきます。 1.メールサーバーのresolv.confの設定は不要 sendmail.mxでなくsendmail.nomxを使用するメールサーバーはそもそもDNS検索を行わず(stutic_route_fileを利用しない限り)、無条件でdefoult_relayへメールを配送するのでDNSを参照させる必要はありません。対応としては、resolv.confファイルは消してしまいましょう(あとから手で作成することも可能ですので削除してからの心配も不要です)。 2.メールサーバーのnamed(DNS)は止めてしまって構わない 前述の通り立ち上げられようとしているメールサーバーは、メール配送をDNSに依存しません。そのためサーバー自身のDNSも動かす必要はないため、named.confの設定は特にいじらず、namedというデーモンを起動しないように設定変更してしまってください。 3.クライアントのhostsにメールサーバーを登録した方が好い クライアントからメールサーバー名を使用してうまくメールが送信できない原因は、smtpサーバーを見つけられないことが最も濃厚です。これはクライアント側の問題ですので、メールサーバーでの対応は必要ありません。Windows98のマシンの、windwosフォルダの中にhostsというファイルがありますので、そこにメールサーバー名とメールサーバーのIPアドレスを登録してあげてください。おそらくサーバー名でもメール送信が出来るようになると思います。登録方法は、Linuxのhostsファイルに書き込むのと同じフォーマットで行を書き込めばOKです。 以上、試してみてください。

leon-10
質問者

補足

御回答有難う御座います。 先程、回答して頂いた通りに、設定しようと試みました。 1と3は行いましたが、2のnamedというデーモンを起動しないような設定とはどのような事なのでしょうか? 一応、まずやってみたのが、デーモンを止めてしまおうと思い、 /etc/rc.d/init.d/named stop のコマンドを実行したのですが、止めることに失敗してしてしまいます・・・ 次に、/etc/host.confのファイルの中を order hosts,bind multi on から order hosts multi on としてbindを消しました。 クライアントの方のメーラー(Eudora)で送受信のテストをしたのですが、 受信はできましたが、送信がエラーは出ないのですがやはり、送れませんでした・・・(泣) そして、メールサーバーの/var/log/maillogファイルを参照してみると、 ......stat=Deferred:Name server:ikuta-ns:host name lookup failure となっています。 なぜ、できないのでしょうか?namedを起動させないと言う方法が間違えているのでしょうか?どの様に設定したら、良いでしょうか? お手数おかけしますが、御回答よろしくお願い致します。

回答No.2

BIND4系のネームサーバーの定義だと感じましたが、 >etc/named.confはインストール時と設定は変えていません。 デフォルトのままだということでしょうか?だとしたら、うまく動きません。 例)/etc/named.boot directory /var/named cashe . named.root primary 0.0.127.in-addr.arpa 0.0.127.in-addr.arpa primary xxxxx.xx.jp xxxxx.xx.jp primary yyy.zzz.xxx.qqq.in-addr.arpa yyy.zzz.xxx.qqq.in-addr.arpa 今使用している、OSについている運用ガイドはありますでしょうか? そこに、たぶん定義の例題があると思いますが・・。

leon-10
質問者

お礼

BIND4系のネームサーバー?勉強不足で何系とかは良くわかりません。申し訳ありません。 書籍とアドバイスを照らし合わせて参考にさせて頂きます。 もっと、勉強して知識を高めていきたいと思います。 アドバイス有難う御座いました。

  • Sarukan
  • ベストアンサー率55% (41/74)
回答No.1

確認したい事が数点あります。宜しいでしょうか。 1.Eudoraを使用している端末はメールサーバーとは別のマシンか 2.EudoraのPOPサーバの指定の設定はサーバー名にしているか、IPアドレスか 3.Eudoraを使用しているマシンのhostsにメールサーバーは登録されているか 4.Eudoraを使用しているマシンはDNSサーバーからDNSを参照しているか 5.「中継サーバー」はDNSサーバーとして稼動しているか 6.sendmail.defの設定のsendmail.MXはnoのままか すこし多いかもしれませんが上記の設定によってさまざまな解決策がありますので教えてください。

leon-10
質問者

補足

有難う御座います。 要求して頂いた補足事項ですが、 1.Eudoraをを使用している端末はメールサーバーとは別のマシンです。 2.受信用メールサーバー(POP)はサーバー名で登録しています。 3.Eudoraを使用しているマシンのhosts?ですか・・えっと、Eudoraを使用してるのはOSがWindows98なのですが・・・どのような事を言われているのかが、分かりません。すいません。 4.DNSを参照しているか?うーん、すいません、初心者なもので、よくわかりにくいのですが、Eudoraを使用しているマシンはIPアドレスが大学側から与えられていて固定になっています。 5.えっと、中継サーバーと質問の時に書いたのが正しいかわからないのですが、メールをやりとりするときのハブホストのIPアドレスを書き込んでいて、実際にDNSサーバーとして稼動しているかは分かりません。すいません。今度聞いておこうと思います。 6.はいnoのままです、大学側から、そのように設定するようにとのことなので。 (MXは使えないようなことを言われました) 補足の要求に答えきれてないかもしれませんが、よろしくお願い致します。 他にも補足要求がありましたら、要求お願い致します。できる限りのことは調べます。

関連するQ&A