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

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

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

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

Q&A

解決済

2回答

2045閲覧

ドメインの無いサーバーにメールを送る

sake

総合スコア52

DNS

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

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

0グッド

0クリップ

投稿2017/05/16 02:37

ServerA(example.com)ドメイン取得
ServerA(example.com 192.168.120.55)ドメイン取得済みのサーバーからServerB(tekitou.com 192.168.120.56)へメールを自動で転送したい。
ServerBはドメインを取得していないので、適当なドメインを付けました。
ServerBにもドメインを取得すれば簡単に転送出来ますが、あえて、ドメイン無しで転送したいのです。

ServerAのmain.cfのmydestinationを以下のようにし、
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, tekitou.com

内部向け正引きゾーンデータベース

$TTL 86400 @ IN SOA example.com. root.example.com.( 2017032009 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS example.com. IN MX 10 example.com. @ IN A 192.168.120.55 * IN A 192.168.120.55
$TTL 86400 @ IN SOA tekitou.com. root.tekitou.com.( 2017032009 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS tekitou.com. IN MX 10 tekitou.com. @ IN A 192.168.120.56 * IN A 192.168.120.56

内部向け逆引きゾーンデータベース

$TTL 86400 @ IN SOA example.com. root.example.com.( 2017032009 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS example.com. 55 IN PTR example.com. 56 IN PTR tekitou.com.

ServerBのmain.cfのmydestinationを以下のようにし、
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, example.com

内部向け正引きゾーンデータベース

$TTL 86400 @ IN SOA tekitou.com. root.tekitou.com.( 2017050106 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS tekitou.com. IN MX 10 tekitou.com. IN A 192.168.120.56

内部向け逆引きゾーンデータベース

$TTL 86400 @ IN SOA tekitou.com. root.tekitou.com.( 2017050106 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS tekitou.com. 56 IN PTR tekitou.com. 55 IN PTR example.com.

ServerAとServerBとの正引き・逆引きの疎通確認はできています。

しかし、この状態で外部からメールを受信するとServerAが「ホストがみつかりません」というデーモンメールを送り、無限ループに陥ります。
どなたか、解決策をご存知の方がいらっしゃいましたら力を貸してください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2017/05/16 02:43

外部から <user@example.com> 宛のメールを ServerA を経由して ServerB で受け取りたいということでしょうか?
sake

2017/05/16 07:31

はい、その通りです。
guest

回答2

0

ベストアンサー

外部から user@example.com 宛のメールを ServerA を経由して ServerB で受け取りたいとのこと、ServerA での配送先を transport_maps で静的に設定すれば、内部 DNS の MXレコードは必要ありません。

[ServerA]

-------- /etc/postfix/main.cf (抜粋) -------- mydestination = $myhostname, localhost.$mydomain, localhost relay_domains = example.com transport_maps = hash:/etc/postfix/transport ※mydestination に「example.com」は設定しない。 -------- /etc/postfix/transport -------- example.com smtp:[192.168.120.56] ※「postmap /etc/postfix/transport」で transport.db ファイルを作成する。

[ServerB]

-------- /etc/postfix/main.cf (抜粋) -------- mydestination = $myhostname, localhost.$mydomain, localhost, example.com ※mydestination に「example.com」を設定する。

でも、もし、ServerB がグローバルIPアドレスを持っているのであれば、外向け DNS で、example.com の MXレコードを ServerB にしてしまえばいいのでは?

投稿2017/05/16 09:09

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sake

2017/05/16 16:21

質問に書き忘れていて申し訳ありません。 実は、ServerAでメールを受けたときに、PHPスクリプトでメールを編集してからServerBへ送っているので、transportの機能は使えません。 他に方法は無いのでしょうか? 例えば、ServerAのPostfixを外部からのメールは受け付けるが、送信はローカルネットワークのServerBのみに送るという設定はできないのでしょうか?
TaichiYanagiya

2017/05/17 00:29 編集

では、ServerA の PHPスクリプトで、メールの宛先(envelope to)を「user@tekitou.com」や「user@(ServerB の myhostname)」にして、そのドメイン名について transport_maps で静的配送するといいと思います。 (2017/05/17) 訂正: envelope from → envelope to
sake

2017/05/16 17:52

ありがとうございました。 おかげさまで、送信できました。 transportforward
sake

2017/05/16 18:00

ありがとうございました。 送れたようです。 forwardとtransportを勘違いしていました。 ご指導いただいたようにServerAとServerBのmain.cfを書き直し、transport_mapsで静的配送しました。
guest

0

tekitou.comではなくIPアドレス宛てで転送すればよいのでは

投稿2017/05/16 02:45

kunai

総合スコア5405

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sake

2017/05/16 07:35

PHPスクリプトで転送処理をしているのですが、 user@192.168.120.56 user@[192.168.120.56] とか user@[192.168.120.56] 25 といろいろ試しましたが、届きませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問