• ベストアンサー

NAT使用のプライベート空間におけるsendmailのローカル配送

NATを使用してプライベート空間にサーバーを置いています。MTAとしてqmailをデーモンとして起動している他、プログラムからsendmailを使ってメールを送信しています(sendmailはデーモンとして使ってはいません)。OSはTLS8です。この時、自分自身からuser@mydomain(このサーバーにあるuser)に宛ててメールを送っても、送り先が自分自身であると判断できずにグローバルIPに向けて接続を試みてしまいます。 sendmail.cfはcfにて作成しました。Dw,Dm,confDOMAIN_NAMEは記述しています。hostsファイルには自分自身のホスト名に対して127.0.0.1と設定しています。telnet mydomain 25と打つと、ちゃんと127.0.0.1に接続しようとしてくれます。しかしsendmailだけはどうしてもグローバルに接続しようとしちゃうんです。 プライベート空間にサーバーを置いてNATで公開している方は多いと思いますが、同じようなトラブルを経験して解決した方はいらっしゃいますか?よろしくお願いします。

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

  • ベストアンサー
  • Lean
  • ベストアンサー率72% (435/603)
回答No.3

>ただ、confDOMAIN_NAMEは本来FQDNを書くものと認識しているので、この設定は正しいものではないかも知れません。 そうですね、その通りですね。 %jは元に戻して、mcファイルに define(`confCW_FILE', `-o /etc/mail/local-host-names') という設定がありますか? あるようでしたら、そこで指定しているファイル(上記例だと/etc/mail/local-host-names)に「mydomain」を記述してみてください。 その後、user@mydomainでローカルに配送されるか、No.2で書いたテストモードでの配送先の確認をしてみてください。  

wakame0729
質問者

お礼

ビンゴです、バッチリですね。 qmailのlocalsのような設定がどこかにあったはずだ・・・とか思って探した時期もあるのですが、色々な項目に目が行ってしまってこの事を忘れてました。 これで解決です。ありがとうございました。

その他の回答 (2)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.2

# sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 user@mydomain というように、テストモードで上記を行った場合(配送先確認)、結果はどうなりますか? 質問内容からするとたぶん、ESMTPでの転送になっているとは思いますが。 次に # sendmail -bt -d0,1 < /dev/null を実行した場合の表示結果の $j(canonical domain name:sendmail.cfでDj)は何になっていますか? mydomainと異なるようでした、sendmail.cf内で Djmydomain とした後に再度、一番最初に書いたテストモードでの配送先確認を行った場合、最終的に parse returns: $# local $: user となっていれば、ローカルにメールが保存されると思います。  

wakame0729
質問者

お礼

$jはconfDOMAIN_NAMEで設定したhost.mydomainの値になっていました。No1の方の「MXを引く」というヒントと合わせふと気が付いてconfDOMAIN_NAMEの値をhost.mydomainではなくmydomainだけにしてみたところ、望み通り、ローカル配送をしてくれるようになりました。 ただ、confDOMAIN_NAMEは本来FQDNを書くものと認識しているので、この設定は正しいものではないかも知れません。一方でデーモンではないのでメールを受信する事も無いですし、sendmailを使って送信するメールの送信元ドメインは常に@mydomainなので問題ないかな、とも思います。 これでしばらく様子を見てみたいと思いますが、もう少し締め切らないでおきますので、この設定には問題があるよ、という事であればご指摘頂きたいと思います。 ありがとうございました。

  • unimentai
  • ベストアンサー率70% (34/48)
回答No.1

sendmailなどのMTAは、まずDNSのMXレコードを取得する為に起こる現象です。 hostsファイルではMXを定義出来ませんので、内部LAN向けのDNSを立てること が唯一の解決策と思われます。 詳細については以下をご参照下さい。 http://www.atmarkit.co.jp/fwin2k/win2ktips/370nslookupmx/nslookupmx.html http://fedorasrv.com/bind-lan.shtml

参考URL:
http://www.xwd.jp/mx.php
wakame0729
質問者

お礼

やっぱりそうですか。やはりこれが本来の正しい設定ですよね。 No2の方のヒントでちょっとcfをいじってみたところ、今のところ目的どおりの動作をするようになりました。ただ、本来の正しい設定方法とも違うようが気がしています。このサーバーには既にキャッシュ用のBINDを設定していますので、もし問題が起きるようでしたらローカル用にこのドメインのZONEファイルを設定してみます。 ありがとうございました。

関連するQ&A

  • qmailでのメールリレーとエイリアス

    質問させていただきます。 環境: MTAをqmailと他のMTAで運用し、 [DMZ上のqmail]から[LAN上のqmail]にリレーし、さらに[他のMTA]にリレーしております。 POPは他のMTAにのみ立っております。 ※[DMZ:MTA(qmail)]→(F/W)→[LAN MTA(qmail)]→[LAN 他のMTA] 質問: DMZ,LANのどちらのqmailもsmtproutesにてリレーさせているだけですが、 あるアカウント宛のメールを複数のアカウントに振り分けたいのですが、どうすれば実現できますでしょうか。 以前使用していたsendmailでは同環境で/etc/にあるエイリアスの変更で振り分けが可能だったのですが、 qmailでは/var/qmail/aliasにエイリアス用に.qmail-****を作成しても振り分けされませんでした。 なお、POPが立っている他のMTAサーバでの振り分けやサーバ構成は訳あっていじれませんので、qmailでの実現を模索しております。 もしお分かりの方がおいでになりましたら、よろしくお願い致します。

  • コンパイル後のMTA変更の可否について

    C言語で作ったCGIがあります。 古いサーバー上で作ったものであり、これを新しいサーバー向けにコンパイルしようと思います。 古いサーバーは、Redhat7.1 + sendmail で作られていました。 現在のサーバーはCentOS 5 + sendmail です。 C言語ファイルはそのまま残っており、makefileファイルもあるためうまくコンパイル出来るものと考えています。 質問です。 今回、新規サーバーにコンパイルしたあと、後ほどMTAをQmailに替えた場合、動くものなのでしょうか? perlの場合はMTAに関係なく動作するため、これも可能かと思っています。 ご指導、宜しくお願い致します。

  • sendmailのエラーを知りたい

    こんにちわ。 sendmailを使って、メールの自動送信を行っています。 その際に、送れなかったsendmailのエラーは どのようにすれば取得できるのでしょうか? ------ ちなみに、レンタルサーバーで、pos.toネット というところを使用しています。 (www.pos.to) perl はバージョン 5.005_03 のようです。 sendmailは、sendmailと互換のMTAである qmail というものだそうです。 補足もいたしますので、よろしくお願いします。 参考サイトの紹介も大歓迎いたします。 _

  • サーバー用のウイルスソフト

    皆さん、こんにちは。 メールサーバー用のウイルスソフトって 何を使うのが良いでしょうか? MTAはsendmail メールユーザは5000人ぐらいです。 よろしくお願いします。

  • PHPのメール関数について

    メールマガジン発行を考えているのですが、 読者のメールアドレスをMysqlに格納し、 PHPのメール関数で配信しようと思っています。 そこで、PHPのメール関数とは、 PHP→そのサーバのMTA→相手MTA と行くのでしょうか? それとも、 PHPメール関数自体が直接DNSサーバを探し確認した上で、 相手MTAに送信するのでしょうか? (つまりMTAを利用しないのでしょうか?) 基本的な質問で申し訳ございません。 MTAを利用するのなら配信スピードがqmailの方が 良いと聞きますので、sendmailから変更しようかと 思っています。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • 外部ドメイン宛のメールの転送

    外部ドメイン(自分のドメイン以外)のメールをすべて別のアドレスへ転送するような設定をしたいと考えています。sendmail,postfix,qmailのどのMTAでも結構ですので、設定方法を教えていただけるでしょうか。 どうぞ宜しくお願いします。

  • メールサーバ(qmail)を通して送信したメールをアーカイブへ転送したい

    1、環境です。 メールサーバ:Wadaxのサーバ MTA:qmail ドメインはここでaaa.comとします。 メールアーカイブサーバ:企業のDMZ内に設置しています。 MTA:postfix ドメインはここでarcserver.aaa.comとします。 2、やりたいことは、 メールサーバを通して送受信されたメールを全てアーカイブサーバのuser@arcserver.aaa.com に転送したいのですが(もちろんリアルタイムです)、可能でしょうか。 いろんな資料を調べていたのですが、たとえばこれです。 http://pocketstudio.jp/linux/?qmail%2FFAQ Logユーザへコピーされたメールはさらに転送できれば、出来るかもしれませんが、自信がありません。 同じことをやったことがある方、具体的なやり方を教えていただければ幸いです。 よろしくお願いします。

  • 1アカウントに対してのSPAM対策について

    Fedora core 3で, (MTA)qmail + (MDA)qmail-local の環境にて, ある1アカウントに対してのみSPAMが来る状況です. その1アカウントについてだけ,SPAM対策を行いたいのですが, MTAもMDAも変更せずに,行えるSPAM対策は何があるでしょうか. ちなみに,そのアカウントはエイリアスアカウントでして, 多数のユーザにメールが配られるため, クライアント側でなく,サーバ側で解決したいと思っています. よろしくお願いいたします.

  • SMTP(リレー)サーバの構築について

    現在RedHat7.3でSMTPサーバを以下の条件で構築したいのですが、 構築方法がわかりません・・・・ ・MTAはSendmailを使用(sendmail-8.12.5-7) ・内部SMTPサーバとして構築 ・内部ネットワークからのみのSMTP接続許可 ・このサーバはリレーのみを行い、外部SMTPサーバにメールを転送 ・SMTP接続の際ユーザ認証は行わない ネットワーク構成上(ウィルスチェックサーバ導入のため)、 どうしてもこのサーバを立てないといけなく困っています。 わかる方教えてください!! 宜しくお願いします!

  • postfixの設定

    サーバ構築練習のため、社内でローカルサーバを構築しています。 192.168.3.10がLinuxサーバでpostfixを起動しました。 postfixの設定はmain.cfをちょこっとだけ編集しました。 myhostname = サーバ名 mydomain = ドメイン名 myorigin = $mydomain inet_interfaces = ALL mydestination = $myhostname, localhost.$mydomain,$mydomain,localhost というようにしました。 サーバ上でmailコマンドを使って同じサーバ上のユーザへのメールは正常に送れます。192.168.3.11というWindowsのメーラーを使っても送受信はできます。 しかし、社内のメールサーバに登録してあるユーザへのメールは届きません。 携帯電話へのメールは送信できます。 ちなみにローカルのサーバに付けているドメイン名は自分で勝手に付けました。 なので登録はしておりません。 これは何か設定漏れとかありますのでしょうか?なぜ携帯には送れるのか分かりません。補足があれば追加します。