質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プロキシ

プロキシは、二つ以上の相互接続されているプログラム又はデバイスの間に存在する中間サーバを指します。プロキシは、接続者の「代理」としてインターネット接続を行い、接続元にレスポンスを返します。また、その機能を実現するソフトウェアの意味合いもあります。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

受付中

PHP mail関数から送信されるメールが特定のサーバーで受信できない(リバースプロキシサーバー + 同一ドメイン + 別サーバー)

bellsmarket
bellsmarket

総合スコア54

DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プロキシ

プロキシは、二つ以上の相互接続されているプログラム又はデバイスの間に存在する中間サーバを指します。プロキシは、接続者の「代理」としてインターネット接続を行い、接続元にレスポンスを返します。また、その機能を実現するソフトウェアの意味合いもあります。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0回答

-1評価

0クリップ

252閲覧

投稿2022/02/16 10:01

編集2022/02/21 14:29

発生している問題・解決したいこと

サーバーCのWebアプリ(PHP mail関数)で送信するメールが、サーバーAのメールサーバーで受信できない。

サーバー構成

- サーバーA(仮IPアドレス: 1.1.1.1) - - メールサーバー - サーバーB(仮IPアドレス:100.1.1.1) - - リバースプロキシサーバー - - Webサーバー   - サーバーC(仮IPアドレス:200.1.1.1) => 当方が担当 - - Webサーバー

 

条件

  • サーバーBのリバースプロキシでディレクトリ毎にサーバーBとサーバーCに振り分ける。
  • 全て共通のドメインを使用している。(ex. fooobaaa.com )
  • サーバーABCが全て別企業が管理していてデバッグや連携がしずらい。その為もし原因がサーバーABである場合、原因を明確にしてから別企業に依頼したい。(当方はサーバーC担当)
  • サーバーCのシステムはかなり古いもの(PHP5とかで作成されてもの)でログは実装されておりません。

質問

仮にサーバーAにnotice@fooobaaa.com(以下:notice)というアドレスがあり、
サーバーCで処理したメールが届かない場合どんな理由が考えられますでしょうか?

またこういった際の根本のデバッグ方法はどこを確認すればよいのでしょうか?
自分の考えとしては、何かしらリバースプロキシが絡んでいて
サーバーC => サーバーAにメールが到達できないと思っております。

試したこと

  • mail関数で送信先を適応なメールアドレス(例えばGmailなど)にすると受信出来ることは確認しました。
  • サーバーCにメールサーバーを立て、同じnoticeというメアドを作成しました。
    • 結果 サーバーCのnoticeで問題なくメール受信出来ました。

これはnoticeがサーバーAとサーバーCで重複した場合には、ネットワーク内のnoticeが優先され送信完了するので、
別ネットワークには送信されない認識でよいのでしょうか?

メールサーバー・DNSサーバーに強い方ぜひ教えてください。
よろしくお願い致します。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

CHERRY

2022/02/16 10:52 編集

質問の内容では、原因等を判断できる内容が記載されていません。 どのようにメールを送信しているのでしょうか? 送信方法やログ等を質問に追記していただけないでしょうか。
bellsmarket

2022/02/16 17:38

サーバーCのWebアプリはかなり昔に実装されており、 送信時のログ記録機能がなく、エラーログなどもありません。 送信方法はPHPのmail関数です。
退会済みユーザー

退会済みユーザー

2022/02/17 00:55

DNSのMXレコードはサーバーAじゃなくCに向いているのかな? 先にサーバーCでメールを全部受けちゃっているならサーバーAに流れていかないような気はするけれど。
bellsmarket

2022/02/17 08:02

なるほどですね。 ではサーバーCのMXレコードにサーバーAのメールサーバーの情報を記述すれば 解決する感じでしょうか?
TaichiYanagiya

2022/02/17 09:10

「サーバーC の MXレコード」ではなく、「ドメイン fooobaaa.com の MXレコード」です。 また、サーバーC のメールサーバー(MTA)経由でメールを送信する構成になっていると思いますが、php-gres さんが書いているとおり、サーバーC のメールサーバーで notice@fooobaaa.com を受信する設定になっていれば、内部にスプールされ、外部には送信されません。 サーバーC のメールログを確認ください。
bellsmarket

2022/02/17 09:36 編集

>> 「サーバーC の MXレコード」ではなく、「ドメイン fooobaaa.com の MXレコード」です。 当方が示したこの例で言えば「サーバーBのリバースプロキシサーバー」で修正すればよいのでしょうか? 少し話が逸れますが、そもそもリバースプロキシで振り分けがされている場合には、 サーバーCでDNSの設定というのは必要あるのでしょうか?
TaichiYanagiya

2022/02/17 12:31

> 当方が示したこの例で言えば「サーバーBのリバースプロキシサーバー」で修正すればよいのでしょうか? いえ、Web と DNS は別です。 fooobaaa.com の DNS サーバーで、"fooobaaa.com" の "MXレコード" に "サーバーA" を設定します。 サーバーC や外部のメールサーバー(MTA)が user@fooobaaa.com 宛のメールを送信する際、DNS MXレコードを見てサーバーA に送ります。 それで、サーバーC のメールログは確認しましたか?
bellsmarket

2022/02/18 17:41

> いえ、Web と DNS は別です。 お答え頂いた内容と自分で調べた範囲で少し理解出来てきました。 と言うことは、fooobaaa.comのDNSレコード(MXレコード)に サーバーAのメールサーバーが設定されていれば、 サーバCでのDNSレコード全ての設定は必要がないのでしょうか? (Webの外部アクセスは、リバースプロキシが担いますので。) >サーバーC のメールサーバーで notice@fooobaaa.com を受信する設定になっていれば、内部にスプールされ、外部には送信されません。 上記はサーバーCの内部で完結するので、サーバーAに到達しないと意味ですよね? 内部完結を避けれれば、サーバーCのsmtpサーバーはfooobaaa.comのDNSレコードの設定を読みに行き、 サーバーAにメールに届くと認識で間違いないでしょうか? > それで、サーバーC のメールログは確認しましたか? サーバーCのレンタルサーバはメールのログ機能がなく詳細は 確認出来ないのです。
TaichiYanagiya

2022/02/19 07:15

> と言うことは、fooobaaa.comのDNSレコード(MXレコード)に > サーバーAのメールサーバーが設定されていれば、 > サーバCでのDNSレコード全ての設定は必要がないのでしょうか? サーバCでのDNSレコード全ての設定? よくわかりませんが、サーバC から Gmail などにはメール送信できているので、特に設定は必要ないと思います。 > 上記はサーバーCの内部で完結するので、サーバーAに到達しないと意味ですよね? はい、そうです。 > 内部完結を避けれれば、サーバーCのsmtpサーバーはfooobaaa.comのDNSレコードの設定を読みに行き、 > サーバーAにメールに届くと認識で間違いないでしょうか? はい、そう思います。
bellsmarket

2022/02/21 05:29

> サーバCでのDNSレコード全ての設定? よくわかりませんが、サーバC から Gmail などにはメール送信で > きているので、特に設定は必要ないと思います。 特に必要ないということですが、設定してあると何かしらの弊害が出てしまうことはありますか?(fooobaaa.comのDNSサーバーの邪魔をしてしまう等) まだ解決できず奔走中ですが解決した暁には、回答としてまとめさせて頂きます。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

DNS

DNSとは、Domain Name Systemのことで、インターネットなどのTCP/IPネットワーク上でドメイン名やホスト名と、IPアドレスとの対応づけを管理するシステムです。DNSのデータベースは、IPアドレスの4つの数字を通知するDNSサーバーで構築されており、IPアドレスをドメイン名から引き出す機能やドメイン名に関するメールサーバ情報を取り扱っています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

プロキシ

プロキシは、二つ以上の相互接続されているプログラム又はデバイスの間に存在する中間サーバを指します。プロキシは、接続者の「代理」としてインターネット接続を行い、接続元にレスポンスを返します。また、その機能を実現するソフトウェアの意味合いもあります。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。