アプリ版:「スタンプのみでお礼する」機能のリリースについて

現状1台で動作しているメールサーバーと(sendmail)、WEB(Apache)サーバーを分けたいのですが、上手くできません。


■ルーター:WebCaster V110
■利用機器:DELL PowerEdge SC430 x2
■グローバルIP:固定


同じ設定のサーバーをもう1つ作り、192.168.1.3として、
ルーターのNAPT設定で、

WAN側ポート: 80>>>LAN側ポート 192.168.1.2: 80
WAN側ポート: 53>>>LAN側ポート 192.168.1.2: 53
WAN側ポート:110>>>LAN側ポート 192.168.1.2:110
WAN側ポート: 25>>>LAN側ポート 192.168.1.2: 25

を、

WAN側ポート: 80>>>LAN側ポート 192.168.1.2: 80
WAN側ポート: 53>>>LAN側ポート 192.168.1.3: 53
WAN側ポート:110>>>LAN側ポート 192.168.1.3:110
WAN側ポート: 25>>>LAN側ポート 192.168.1.3: 25

とすると、一応分けて動作したんですが、ホームページ(192.168.1.2)で使用しているお問い合わせフォーム(mb_send_mail関数で作成?)が使用できなくなってしまいました。
問題はお問い合わせフォームだけなので、192.168.1.2の方には110と25以外のポートを指示するだけで、いけそうだなと思い、調べたんですが、なかなか引っかかりません。

以上、説明不足があるかもしれませんが、よろしくお願いします。

A 回答 (5件)

かえって混乱させてしまったようで申し訳ないです。



>define(`SMART_HOST', `smtp:[192.168.1.3]')dnl
 というのを書き込んでみましたが、192.168.1.3には転送されませんでした。

まず、SMART_HOSTは「自分のマシン以外宛のメールを送る」ホストの指定なので、ローカル配信してしまう部分を直さないと意味がありません。

>また[ローカルで配信すべきアドレスではないという設定]にするため~

おそらく「エラーが戻ってきた」という時点で、192.168.1.2は外へ配信しようとしていると思われるので、一歩前進です。
これはSMART_HOSTをつけた後ですか? 前ですか?

エラーとなって戻ってきたメール(および両方のサーバのmaillog)から、どのようなエラーが起きているかを調べるのがキモです。
・送り先サーバへの接続に失敗している。(どのアドレスに接続しようとしているか?)
・192.168.1.3へ送ろうとしたが(192.168.1.3のsendmailが拒否したのか/それ以前のiptablesなどが拒否したのか/そのた)。
・どこへ送っていいかわからなかった(hoge.co.jpのMXがわからなかった)とか。

など。

>そして[192.168.1.2から直接外へ配信したいなら]もよく理解できなくなってしまいました。

これは一時忘れてください。

>とroot宛てのメールをyahooのWEBメールに転送するようにしてみると、ちゃんと届いていたんです

これはSMART_HOSTをつけた後ですか? 前ですか?



いずれにせよ、まず解決するところは192.168.1.2->192.168.1.3への送信なので、以下を試してみてください。

[192.168.1.2]で
○ 「dig mx hoge.co.jp」コマンドで、ちゃんとMXが引けているか。192.168.1.3に向いているか。(もしグローバルIPアドレスが返ってきたら・・・ ^^);
○ 「telnet 192.168.1.3 25」コマンドで、ちゃんと返事が返ってくるか(繋がったら「quit」で切断してください)。正常なら220から始まる応答が返ってきます。

この回答への補足

申し訳ないですなんてめっそうもありません。こちらこそ何度もお手数おかけして申し訳ないです。


>>とroot宛てのメールをyahooのWEBメールに転送するようにしてみると、ちゃんと届いていたんです
>これはSMART_HOSTをつけた後ですか? 前ですか?

SMART_HOSTを設定しなくても送ることができました。




>>おそらく「エラーが戻ってきた」という時点で、192.168.1.2は外へ配信しようとしていると思われるので、一歩前進です。
>これはSMART_HOSTをつけた後ですか? 前ですか?

sendmail.mcの
define(`SMART_HOST', `smtp:[192.168.1.3]')dnl を
#cd /etc/mail
#make
でsendmail.cfに反映して、sendmail再起動。お問い合わせフォームから送信してみましたが、192.168.1.2の /var/mail/送り先ユーザーのスプールファイルに入ってきました。そして、[ローカルで配信すべきアドレスではないという設定]にするため、 local-host-namesから@hoge.co.jpを削除すると、/var/mail/rootにエラー送信されるようになりました。


root宛のメールをみると
///////////////////////////////////////////////////////
The original message was received at Wed, 6 Dec 2006 20:56:41 +0900
from apache@localhost

----- The following addresses had permanent fatal errors -----
info@hoge.co.jp
(reason: 550 5.1.1 <info@hoge.co.jp>... User unknown)
(expanded from: info@hoge.co.jp)

----- Transcript of session follows -----
... while talking to [127.0.0.1]:
>>> DATA
<<< 550 5.1.1 <info@hoge.co.jp>... User unknown
550 5.1.1 info@hoge.co.jp... User unknown
<<< 503 5.0.0 Need RCPT (recipient)

///////////////////////////////////////////////////////

でした。ローカルに送ってドメインを認識できなかっただけでしょうか?









○ 「dig mx hoge.co.jp」コマンドで、ちゃんとMXが引けているか。

早速、ためさせていただきました。
///////////////////////////////////////////////////////
; <<>> DiG 9.3.1 <<>> mx hoge.co.jp
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15076
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;hoge.co.jp. IN MX

;; AUTHORITY SECTION:
hoge.co.jp. 7200 IN SOA ns2.zoneedit.com. soacontact.zon eedit.com. 1149728924 14400 7200 950400 7200

;; Query time: 206 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Fri Dec 8 12:48:31 2006
;; MSG SIZE rcvd: 95

///////////////////////////////////////////////////////









○ 「telnet 192.168.1.3 25」コマンドで、ちゃんと返事が返ってくるか

220 localhost.localdomain ESMTP Sendmail 8.13.7/8.13.7; Fri, 8 Dec 2006 12:55:57 +0900

220から始まる応答がかえってきました。




これはDNSサーバーがいけないんでしょうか?
最初NAPTでポート指定したときに、ポート53を架空のアドレスに振っても、WEBは機能したのでNAPTで強制的に決めるとおもっていたんですが。;


またお手数おかけして申し訳ないですが、よろしくお願いします。

補足日時:2006/12/08 13:09
    • good
    • 0
この回答へのお礼

先日、
新たに買ったアスキーの『すっきりわかったDNS&メール』を読んで解決しました。

あと、


/etc/mail/sendmail.mc
////////////////////////////////////////////////////
(最終行に追加)
define(`SMART_HOST',`smtp:[192.168.1.3]')dnl
////////////////////////////////////////////////////



/etc/mail/mailertable
////////////////////////////////////////////////////
hoge.com esmtp:[192.168.1.3]
.hoge.com esmtp:[192.168.1.3]
////////////////////////////////////////////////////

でいけました。ありがとうございました。

お礼日時:2006/12/14 19:15

ログを見てもやはりwebサーバがローカルに配信しちゃってますね。


sendmail.cfなり/etc/hostsなりを変更して、@hoge.co.jp はローカルで配信すべきアドレスではないという設定にしないと192.168.1.3には配信されません。

別の手法として、ちょっとトリッキー(というかこの場合あまり良い方法ではないかも)ですが、メールのディレクトリをNFSで共有してしまう方法もあります。

また192.168.1.2から直接外へ配信したいなら、sendmail.cfのDS(sendmail.mcだとSMART HOST)を192.168.1.3へ向けるのが良いでしょう。

この回答への補足

またまたお返事ありがとうございます。
あれから色々調べたり試したりしたんですが、なにぶん始めたばかりでよくわからないんです。
本当に申し訳ないんですが、またご教示おねがいできますでしょうか。



>sendmail.cfなり/etc/hostsなりを変更して、@hoge.co.jp はローカルで

配信すべきアドレスではないという設定にしないと192.168.1.3には配信されません。
>別の手法として、ちょっとトリッキー(というかこの場合あまり良い方法ではないかも)ですが、メールのディレクトリをNFSで共有してしまう方法もあります。
>また192.168.1.2から直接外へ配信したいなら、sendmail.cfのDS(sendmail.mcだとSMART HOST)を192.168.1.3へ向けるのが良いでしょう。


教えていただいたことから検索し、
SMART_HOST(CFでいうDEFAULT_RELAY)は
「内部からインターネットにメールを送信する際に、内部メールサーバは一旦DMZなどに置かれるリレーサーバにメールを渡すので内部のメールサーバに設定するもの」
などとたどりつきました。

# sendmail.mc
define(`SMART_HOST', `smtp:[192.168.1.3]')dnl
というのを書き込んでみましたが、192.168.1.3には転送されませんでした。

また[ローカルで配信すべきアドレスではないという設定]にするため、local-host-namesから@hoge.co.jpを削除しましたが、試してみると、192.168.1.2の/var/mail/送り先ユーザーのスプールファイルでなく、/var/mail/rootにエラー送信されます。


そして[192.168.1.2から直接外へ配信したいなら]もよく理解できなくなってしまいました。
ローカルでしか配信できない設定になっているのかと思ったんですが、試しに、

WAN側ポート: 80>>>LAN側ポート 192.168.1.2: 80
WAN側ポート: 53>>>LAN側ポート 192.168.1.3: 53
WAN側ポート:110>>>LAN側ポート 192.168.1.3:110
WAN側ポート: 25>>>LAN側ポート 192.168.1.3: 25

この状態で,192.168.1.2の方で、
# echo "root: hoge@yahoo.co.jp" >> /etc/aliases
# newaliases
# echo test|mail root

とroot宛てのメールをyahooのWEBメールに転送するようにしてみると、ちゃんと届いていたんです。


ほんと的外れな事をしてるかも知れませんが、ますますどうしていけばいいかわからなくなってしまいました。


ご指摘、ご指南のほどよろしくお願いします。

補足日時:2006/12/08 03:01
    • good
    • 0

>sendmail.cfの設定もデフォルトから特に触っていないんですが、何か必要な事があるんでしょうか?


192.168.1.12側のsendmailの設定を変更したポートに設定はしました?

この回答への補足

お返事本当にどうもありがとうございます。
先ほどの補足で誤りがあり、どうやって編集したらいいかと悩んでいました。

>192.168.1.12側のsendmailの設定を変更したポートに設定はしました?

NAPT設定で、
WAN側ポート: 80>>>LAN側ポート 192.168.1.2: 80
WAN側ポート: 53>>>LAN側ポート 192.168.1.2: 53
WAN側ポート:110>>>LAN側ポート 192.168.1.3:110
WAN側ポート: 25>>>LAN側ポート 192.168.1.3: 25
WAN側ポート: 32>>>LAN側ポート 192.168.1.2: 32
WAN側ポート: 34>>>LAN側ポート 192.168.1.2: 34

とした時に

/etc/servicesの
"smtp 25/tcp" を "smtp 34/tcp"
"pop3 110/tcp" を "pop3 32/tcp"
にしてみました。
この部分では反映されないのでしょうか?






そして、
すみませんが前回分の補足を訂正させて下さい。
----------------------------------------------------------------------
>> 1.192.168.1.2のサーバがローカルで配信している(192.168.1.2の/var/mail に配信されてませんか?)

>192.168.1.2の/var/mailには配信されていません。
----------------------------------------------------------------------
と、書きましたが誤りでした。
/var/mailに配信されていました。

補足日時:2006/12/06 20:27
    • good
    • 0

可能性として、



1.192.168.1.2のサーバがローカルで配信している(192.168.1.2の/var/mail に配信されてませんか?)
2.192.168.1.3が受信拒否している(iptablesなどでブロックされているか、sendmail.cfの設定の問題か)

とりあえず両サーバのメールログ(/var/log/maillogかな?OSが書かれていないので違うかも)をtail -fで監視しながらcgiからメール送信してみればどんな動作をしてどんなエラーが出ているかわかると思いますが。

この回答への補足

早速のお返事どうもありがとうございます。
またまた説明不足で申し訳有りません。
OSはFedoraCore4を使用し、sendmailはヴァーチャルドメインで運用してます。


> 1.192.168.1.2のサーバがローカルで配信している(192.168.1.2の/var/mail に配信されてませんか?)

192.168.1.2の/var/mailには配信されていません。


> 2.192.168.1.3が受信拒否している(iptablesなどでブロックされているか、sendmail.cfの設定の問題か)

iptablesの設定というのは何もした覚えが有りません。
# iptables -L
Chain INPUT (Policy ACCEPT)
target  prot opt source     destination

Chain FORWARD (Policy ACCEPT)
target  prot opt source     destination

Chain OUTPUT (Policy ACCEPT)
target  prot opt source     destination


sendmail.cfの設定もデフォルトから特に触っていないんですが、何か必要な事があるんでしょうか?

また/var/log/maillogは
192.168.1.3の方は変化なく
192.168.1.2の方は
///////////////////////////////////////////////////////////////////
Dec 6 15:57:31 localhost sendmail[7122]: kB66vU7a007122: Authentication-Warning: localhost.localdomain: apache set sender to info@hoge.co.jp using -f
Dec 6 15:57:31 localhost sendmail[7122]: kB66vU7a007122: from=info@hoge.co.jp, size=440, class=0, nrcpts=1, msgid=<200612060657.kB66vU7a007122@localhost.localdomain>, relay=apache@localhost
Dec 6 15:57:31 localhost sendmail[7123]: kB66vVIi007123: from=<info@hoge.co.jp>, size=775, class=0, nrcpts=1, msgid=<200612060657.kB66vU7a007122@localhost.localdomain>, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Dec 6 15:57:31 localhost sendmail[7122]: kB66vU7a007122: to=info@hoge.co.jp, ctladdr=info@hoge.co.jp (48/48), delay=00:00:01, xdelay=00:00:00, mailer=relay, pri=30440, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (kB66vVIi007123 Message accepted for delivery)
Dec 6 15:57:32 localhost sendmail[7124]: kB66vVIi007123: to=<info@hoge.co.jp>, ctladdr=<info@hoge.co.jp> (514/514), delay=00:00:01, xdelay=00:00:01, mailer=local, pri=30984, dsn=2.0.0, stat=Sent
Dec 6 16:02:18 localhost spamd[7058]: server killed by SIGTERM, shutting down
///////////////////////////////////////////////////////////////////
となっていました。
よくわかっていないので、状況を上手く説明できませんが


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

補足日時:2006/12/06 15:35
    • good
    • 0

>ホームページ(192.168.1.2)で使用しているお問い合わせフォーム(mb_send_mail関数で作成?)が使用できなくなってしまいました。



とは、具体的にどんな状況ですか?
CGIがエラーを出す。
エラーは出ないけどメールが192.168.1.2から送信されない。

など。

この回答への補足

お返事どうもありがとうございます。
説明不足で申し訳有りません。

>ホームページ(192.168.1.2)で使用しているお問い合わせフォーム(mb_send_mail関数で作成?)が使用できなくなってしまいました。
192.168.1.3の方にポート110と25を振り分けているためだと思うんですが。

の状況というのは、
「192.168.1.2から送信しようとしてポートが開いてなく失敗するのか」
「192.168.1.2自分自身に受信しようとしてポートが開いてなく失敗するのか」調べ方も分かってないんです。
ただ、PHPの問い合わせフォームで、メール送信完了した場合、"メールを送信しました"と出るようにされていて、その文字は出力されますが、メールが届いてきません。(メーラーでも受信せず、192.168.1.3の/var/mail/の中のspoolファイルの日付も更新されていません。)192.168.1.2と192.168.1.3はユーザーからその他、(IPアドレスに関わる箇所以外)ファイルの設定も192.168.1.2と同じにしているので、

WAN側ポート: 80>>>LAN側ポート 192.168.1.3: 80
WAN側ポート: 53>>>LAN側ポート 192.168.1.3: 53
WAN側ポート:110>>>LAN側ポート 192.168.1.3:110
WAN側ポート: 25>>>LAN側ポート 192.168.1.3: 25

と全て192.168.1.3としても、192.168.1.3で正常に動作します。



始めたばかりで、そもそもメールの構成もよくわかってないんですが、
192.168.1.2の方に、110と25以外のポートで送受信しようと思い、
試しに NAPT設定で、

WAN側ポート: 80>>>LAN側ポート 192.168.1.2: 80
WAN側ポート: 53>>>LAN側ポート 192.168.1.2: 53
WAN側ポート:110>>>LAN側ポート 192.168.1.3:110
WAN側ポート: 25>>>LAN側ポート 192.168.1.3: 25
WAN側ポート: 32>>>LAN側ポート 192.168.1.2: 32
WAN側ポート: 34>>>LAN側ポート 192.168.1.2: 34

とし、
/etc/servicesの
"smtp 25/tcp" を "smtp 34/tcp"
"pop3 110/tcp" を "pop3 32/tcp"
にしてみたんですが、やはり、メールはきませんでした。




お手数ですが、よろしくお願い致します。

補足日時:2006/12/06 14:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!