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

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

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

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

Postfix

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

メール

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

Q&A

解決済

1回答

252閲覧

Postfix 外部宛先のメールをローカル転送したい

_usiosio

総合スコア2

PHP

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

Postfix

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

メール

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

0グッド

1クリップ

投稿2024/01/17 11:37

実現したいこと

有識者の方がいらっしゃいましたら教えてください。。。

現在環境内でクローズドなメール受送信の環境をPostfix(とdovecot)にて構築中です。
やりたいこととしては、外部宛先へのメールを外部には送信せず、ローカルのメールユーザ(hogetest-mail)に転送するというものです。

発生している問題・分からないこと

main.confおよびtransportファイルを以下のように更新し、postmap コマンドでデータベースを更新し、Postfixをリロード(または再起動)したあとで、PHPにてメール送信を行いました。

外部宛先=hoge.user@hogehoge.jpがtransport設定で書き換わる想定でしたが

maillog

1Jan 17 19:17:44 ip-XX-XX-XX-XX postfix/local[3401]: 0D38928002F86: to=<hoge.user@hogehoge.jp>, relay=local, delay=0.03, delays=0.02/0/0/0.01, dsn=5.1.1, status=bounced (unknown user: "hoge.user")

上記のように、宛先が同じままローカルに送信され、hoge.userはいないためバウンスされてしまっています。。

なぜ メールが ローカルのhogetest-mail へ転送されず、ローカルで配送しようとしてバウンスするのかわかるかたはいらっしゃいませんか・・・??

該当のソースコード

Postfix

1compatibility_level = 2 2queue_directory = /var/spool/postfix 3command_directory = /usr/sbin 4daemon_directory = /usr/libexec/postfix 5data_directory = /var/lib/postfix 6mail_owner = postfix 7myhostname = hogetest-mail.localhost 8mydomain = localhost 9myorigin = $mydomain 10inet_interfaces = all 11inet_protocols = all 12mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain 13local_recipient_maps = 14unknown_local_recipient_reject_code = 550 15mynetworks = 127.0.0.0/8 16alias_maps = hash:/etc/aliases 17alias_database = hash:/etc/aliases 18home_mailbox = Maildir/ 19 20smtpd_banner = $myhostname ESMTP unknown 21debug_peer_level = 2 22debugger_command = 23 PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin 24 ddd $daemon_directory/$process_name $process_id & sleep 5 25sendmail_path = /usr/sbin/sendmail.postfix 26newaliases_path = /usr/bin/newaliases.postfix 27mailq_path = /usr/bin/mailq.postfix 28setgid_group = postdrop 29smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem 30smtpd_tls_key_file = /etc/pki/tls/private/postfix.key 31smtpd_tls_security_level = may 32smtp_tls_CApath = /etc/pki/tls/certs 33smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt 34smtp_tls_security_level = may 35meta_directory = /etc/postfix 36shlib_directory = /usr/lib64/postfix 37message_size_limit = 10485760 38mailbox_size_limit = 1073741824 39transport_maps = hash:/etc/postfix/transport 40sample_directory = /usr/share/doc/postfix/samples 41readme_directory = /usr/share/doc/postfix/README_FILES 42manpage_directory = /usr/share/man 43html_directory = no 44

Postfix

1localhost local: 2localhost.localdomain local: 3* local:hogetest-mail 4

mail送信

1<?php 2$to = 'hoge.user@hogehoge.jp'; 3$subject = 'Test Mail from PHP mail֐'; 4$message = 'This is a test mail sent by PHP script using Postfix.'; 5$headers = 'From: hoge@hoge.jp'; 6 7if(mail($to, $subject, $message, $headers)) { 8 echo "Mail sent successfully.\n"; 9} else { 10 echo "Mail sending failed.\n"; 11} 12?>

maillog

1Jan 17 19:17:44 ip-XX-XX-XX-XX postfix/pickup[3394]: 0D38928002F86: uid=0 from=<root> 2Jan 17 19:17:44 ip-XX-XX-XX-XX postfix/cleanup[3399]: 0D38928002F86: message-id=<20240117101744.0D38928002F86@hogetest-mail.localhost> 3Jan 17 19:17:44 ip-XX-XX-XX-XX postfix/qmgr[3395]: 0D38928002F86: from=<root@localhost>, size=422, nrcpt=1 (queue active) 4Jan 17 19:17:44 ip-XX-XX-XX-XX postfix/local[3401]: 0D38928002F86: to=<hoge.user@hogehoge.jp>, relay=local, delay=0.03, delays=0.02/0/0/0.01, dsn=5.1.1, status=bounced (unknown user: "hoge.user") 5Jan 17 19:17:44 ip-XX-XX-XX-XX postfix/cleanup[3399]: 12A6428003347: message-id=<20240117101744.12A6428003347@hogetest-mail.localhost> 6Jan 17 19:17:44 ip-XX-XX-XX-XX postfix/bounce[3402]: 0D38928002F86: sender non-delivery notification: 12A6428003347 7Jan 17 19:17:44 ip-XX-XX-XX-XX postfix/qmgr[3395]: 12A6428003347: from=<>, size=2395, nrcpt=1 (queue active) 8Jan 17 19:17:44 ip-XX-XX-XX-XX postfix/qmgr[3395]: 0D38928002F86: removed

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

上に記載している通りとなります。。

補足

特になし

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

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

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

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

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

ikedas

2024/01/17 12:59

トランスポートマップの右辺でlocal(8)を使って `local:mailbox` のようなものを指定しても、`mailbox`の部分は無視されます。代わりに、配送されるメッセージのエンベロープ受信者アドレスのローカル部が、配送先のメールボックス名として使われます (ドメイン部は無視されます)。 今ちょっと試せないのですが、virtual(8)とか使ってみたらできそうですね。
_usiosio

2024/01/19 02:32

コメントありがとうございます。ユーザの指定できないんですね・・・ main.cfのluser_relayにて 不明な受信者の配送先を設定できたので、そちらで解決しました!
ikedas

2024/01/19 03:25

自分で解決した場合は、どのようにして解決したかを自分で回答として投稿してから、質問を解決済みにしてください。 ただluser=relayを使うのだと、実在するローカルユーザと同名のメールボックスには配送されてしまいますが、そこはいいのでしょうか。
guest

回答1

0

ベストアンサー

transport_maps は転送先ホスト(MTA)を指定できますが、別メールアドレスへの転送やメールアドレス書き換えは行いません。

方法1: transport_maps で local: 配送にし、さらに、メールアドレスのローカルパートを aliases_maps で受信メールアドレスへ転送

(/etc/postfix/transport)

hogehoge.jp local:

(/etc/aliases)

hoge.user (受信ユーザー)@hogetest-mail.localhost

方法2: virtual_alias_maps で受信メールアドレスへ転送

(/etc/postfix/main.cf)

transport_maps = virtual_alias_maps = hash:/etc/postfix/virtual

(/etc/postfix/virtual)

hoge.user@hogehoge.jp (受信ユーザー)@hogetest-mail.localhost # メールアドレスごとの場合 @hogehoge.jp (受信ユーザー)@hogetest-mail.localhost # ドメインすべての場合

他、canonical_maps でメールアドレスを書き換える方法もありますが、それはしたくないのですよね?

投稿2024/01/18 04:59

TaichiYanagiya

総合スコア12146

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問