• 締切済み

phpからのメール送信

サーバにはpostfix/phpがインストールされており mb_send_mail関数を使ってメールを送信しております。 example.comというドメインを例として説明すると fromがtest@example.comというメールアドレスでは問題なく送ることができるのですが、 ドメインをexample.com→mail.example.comと変更し、test@mail.example.comというアドレスで送ろうとすると maillog上はtest@mail.example.comから送っていることになっているのですが、 メーラーで受信するとformがtest@example.comになっております。 サブドメインのmail.example.comから送るようにするにはどのようにしたらよろしいでしょうか? main.cf virtual_alias_domains=example.com mail.example.com virtual_alias_maps = hash:/etc/mail/virtual /etc/mail/virtual test@example.com test test@mail.example.com test

みんなの回答

  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.2

#1 です。 > $additional_headers = "From: ".$from; > $additional_parameter = "-f".$from; で同じ内容を設定してるってことはpostfixのアドレス書き換えが作用してるってことですね。 多分。 参考URL参照。 (sendmailコマンドで試してみればphpの問題かpostfixの問題かはっきりします。) ちょっと自分の環境で試してみたのですが、再現できませんでした。 気になることは以下の3点。 ・アドレスマスカレードに example.com が定義されている ・mydestination に example.com が定義されている ・DNSに mail.example.com が定義されていない 解決策としてはどの『アドレス書き換え』で書き換わっているのかによりますね。 他アプリ等に影響がある可能性がありますので。

参考URL:
http://www.postfix-jp.info/trans-2.3/jhtml/ADDRESS_REWRITING_README.html
  • OKwebb
  • ベストアンサー率44% (92/208)
回答No.1

想像ですが、エンベロープのfromはmail.example.comになってるけど、 メールヘッダのfromはexample.com testになってるのではないでしょうか? mb_send_mail()で$additional_headersを指定していませんか? Windows 環境ならphp.iniかもしれません。

参考URL:
http://jp2.php.net/manual/ja/function.mail.php
tetsu-jin
質問者

補足

ご回答、ありがとうございます。 $from = test@mail.example.com $additional_headers = "From: ".$from; $additional_parameter = "-f".$from; mb_send_mail($to, $subject, $body, $additional_headers,$additional_parameter); と設定してあるので、 メールヘッダーもtest@mail.example.comとなっているのですが受信するとtest@example.comになっています。 受信したヘッダー部分には"mail.example.com"の記述がないですね…。

関連するQ&A

  • メールをパイプ渡し

    バーチャルアカウントへ来たメールを コマンドへパイプ渡ししたいと思っています。 【環境】  Linux  postfix  postfixadmin  mysql  dovecot 【質問内容】  下記サイトを参考に  「複数のドメインで同じユーザー名で別々のプログラムを動かしたい場合」  の例を元に構築しましたがうまくいきません。  どなたかご教授頂きますでしょうか?  長文で申し訳ありませんがよろしくお願い致します。 【参考URL】  http://d.hatena.ne.jp/faibou/20090318 【設定内容】[文字数の関係で関係なさそうな箇所は削除しました]  postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases body_checks = regexp:/etc/postfix/body_checks config_directory = /etc/postfix default_privs = vuser disable_vrfy_command = yes inet_interfaces = all local_transport = local mydestination = notify_classes = resource, software, bounce relay_domains = $virtual_mailbox_maps smtpd_sasl_auth_enable = yes transport_maps = hash:/etc/postfix/transport virtual_alias_domains = $virtual_alias_maps virtual_alias_maps = hash:/etc/postfix/virtual, mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_gid_maps = static:10000 virtual_mailbox_base = /usr/local/virtual virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf ・/etc/postfix/virtual hoge@example.com hoge+example.com ・/etc/postfix/transport hoge+example.com local ・/etc/aliases hoge+example.com: "|test.php" 【エラーログ】 2011-04-06T11:18:59.997209+09:00 XXXX postfix/smtpd[32011]: connect from [接続先ドメイン名] 2011-04-06T11:19:00.444628+09:00 XXXX postfix/smtpd[32011]: 6A799F680001: client=219-101-46-241.cust.bit-drive.ne.jp[219.101.46.241] 2011-04-06T11:19:00.955287+09:00 XXXX postfix/cleanup[32033]: 6A799F680001: message-id=<78CBF400FB9AC9hoge@example.com> 2011-04-06T11:19:00.959435+09:00 XXXX postfix/qmgr[9481]: 6A799F680001: from=<hoge@example.com>, size=591, nrcpt=1 (queue active) 2011-04-06T11:19:01.061898+09:00 XXXX postfix/smtp[32048]: 6A799F680001: to=<hoge+example.com@example.com>, orig_to=<hoge@example.com>, relay=none, delay=0.75, delays=0.69/0.05/0.01/0, dsn=5.4.6, status=bounced (mail for example.com loops back to myself) 2011-04-06T11:19:01.070363+09:00 XXXX postfix/cleanup[32033]: 10D35F680005: messag

  • postfixのバーチャルドメイン管理でのspamフィルタについて

    はじめまして。現在postfix+postfixadmin+mysql+spamassassinを使用して運用しており、 spamassassinにはprocmailの/etc/procmailrcファイルにてspamのメールの振り分けを行っています。 postfixadminでtest@sample.comというアドレスとspam振り分け用のアドレスspam@sample.comを登録し、 test@sample.comから外部の携帯のアドレスに転送設定をしていますが、このときtest@sample.com 宛のspamメールは振り分けがおこなわれているのですが、外部の携帯にはspamが転送されてしまいます。 ログを見ましたが、test@sample.comにprocmailのフィルタが行われた後に転送が行われてしまっていました。 procmailを通過する段階で、spamを転送させない設定等がございましたらご指導の程、宜しくお願い致します。 下記postfixの設定です。 postconf -n alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases allow_min_user = yes broken_sasl_auth_clients = yes command_directory = /usr/sbin config_directory = /etc/postfix content_filter = smtp-amavis:[127.0.0.1]:10024 daemon_directory = /usr/libexec/postfix disable_vrfy_command = yes header_checks = regexp:/etc/postfix/header_checks home_mailbox = Maildir/ html_directory = no inet_interfaces = all local_destination_concurrency_limit = 20 local_transport = virtual mail_owner = postfix mailbox_command = /usr/bin/procmail mailq_path = /usr/bin/mailq manpage_directory = /usr/local/man maximal_backoff_time = 600s maximal_queue_lifetime = 6000s minimal_backoff_time = 60s mydestination = mydomain = sample.com myhostname = mail.sample.com mynetworks = 192.168.1.0/24, xxx.xxx.xxx.0/28, 127.0.0.0/8, check_client_access hash:/etc/mail/dracd ※xxx.xxx.xxx.0はサーバのネットワークです。 myorigin = $mydomain newaliases_path = /usr/bin/newaliases parent_domain_matches_subdomains = queue_directory = /var/spool/postfix readme_directory = no receive_override_options = no_address_mappings relay_domains = $mydestination relayhost = sample_directory = /etc/postfix sendmail_path = /usr/sbin/sendmail setgid_group = postdrop smtp_defer_if_no_mx_address_found = yes smtpd_helo_restrictions = check_helo_access hash:/etc/postfix/helo_access smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $mydomain smtpd_sasl_security_options = smtpd_sender_restrictions = hash:/etc/postfix/reject_sender transport_maps = hash:/etc/postfix/transport virtual_alias_domains = $virtual_alias_maps virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_gid_maps = static:10000 virtual_mailbox_base = /home/virtual virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_minimum_uid = 10000 virtual_transport = procmail virtual_uid_maps = static:10000 /etc/postfix/master.cfの設定 下記を追記 procmail unix - n n - - pipe flags=R user=virtual argv=/usr/bin/procmail -t -m USER=${user} DOMAIN=${nexthop} /etc/procmailrc /etc/procmailrcの設定 PATH=/bin:/usr/bin DEFAULT=$HOME/$DOMAIN/$USER/ SPAM=/home/virtual/sample.com/spam/ LOGFILE=/home/virtual/procmail.log LOCKFILE=/home/virtual/procmail.lock VERBOSE=ON :0 *^X-Spam-Status: Yes $SPAM

  • postfixでバーチャルドメインの設定が出来ません

    お世話になります。 postfixでweb上の説明ページとオライリーの本を参照して 「バーチャルドメイン(仮想アカウントを利用した個別ドメイン)」 を実現したいのですが、「main.cf」で指定した場所に配送されません。 また「more /var/log/maillog」を見てもエラーの旨の出力がないので原因が不明の状態です。 お忙しい中恐縮ですが、識者の方にご教授お願いしたいです。 ■1.main.cfを修正、virtual、virtual_aliasを追加 main.cf(の追加項目): virtual_mailbox_domains = otherdomain.com virtual_mailbox_base = /usr/local/vmail virtual_mailbox_maps = hash:/etc/postfix/virtual virtual_alias_maps = hash:/etc/postfix/virtual_alias virtual_uid_maps = static:1000 virtual_gid_maps = static:1000 /etc/postfix/virtual(の中身): test@mydomain.com test /etc/postfix/virtual_alias(の中身): (空です) ■2.設定後以下のコマンドを打つ virtual適用 # /usr/sbin/postmap /etc/postfix/virtual virtual_alias適用 # /usr/sbin/postmap /etc/postfix/virtual_alias postfix再起動 # /etc/init.d/postfix restart 特にエラーなし ■3.rootからmailコマンドにてテスト # mail test@mydomain.com Subject:test test . Cc: ■4.配送されているか確認 # cd /usr/local/vmail # ls -a なにもありません。。。。 5.maillogにエラーが出ているか確認 Jun 21 19:45:23 mydomain postfix/postfix-script: stopping the Postfix mail system Jun 21 19:45:23 mydomain postfix/master[26055]: terminating on signal 15 Jun 21 19:45:23 mydomain postfix/postfix-script: starting the Postfix mail system Jun 21 19:45:23 mydomain postfix/master[26126]: daemon started -- version 2.3.3, configuration /etc/postfix Jun 21 19:45:37 mydomain postfix/pickup[26128]: EE95745804BB: uid=0 from=<root> Jun 21 19:45:37 mydomain postfix/cleanup[26133]: EE95745804BB: message-id=<200906 21104537.EE95745804BB@mydomain.com> Jun 21 19:45:37 mydomain postfix/qmgr[26129]: EE95745804BB: from=<root@mydomain.com >, size=274, nrcpt=1 (queue active) Jun 21 19:45:37 mydomain postfix/local[26135]: EE95745804BB: to=<test@mydomain.com> , relay=local, delay=0.02, delays=0.02/0/0/0, dsn=2.0.0, status=sent (delivered to mailbox) Jun 21 19:45:37 mydomain postfix/qmgr[26129]: EE95745804BB: removed 特にエラーの出力はなし。。。 6.以下を試してみましたがだめでした。 ・「virtual_transport = virtual」追加 ・「virtual_transport = lmtp:unix:/var/spool/postfix/private/lmtp」追加 ・「virtual_uid_maps = static:5000」「virtual_gid_maps = static:5000」5000に変更 ・「#home_mailbox = Maildir/」コメントアウト ・「mail test」@以下を記述しないで打ってみる ・「debug_peer_level = 3」「debug_peer_list = mydomain.com」にてエラーレベルを引き上げましたが、エラーらしき出力はされませんでした。 もう、なにをすればいいのかも分かりません。 どうかよろしくお願いいたします! * OSはfedora10です * バーチャルドメイン設定前は、内部、外部共に指定の「home_mailbox = Maildir」に正常配送されていました。よってDNSの設定は間違いない?と思います

  • Postfixadminでアドレスが作成できない

    よろしくお願いします。 サーバー初心者です。 CentOS6.2でPostfix+Dovecot+Postfixadminでメール環境を構築しようと思っています。 Postfix 2.6.6 Postfixadmin 2.3.1 (Dovecot 2.0.9-2) Postfixadminでメールアドレスを追加しようとしても”WARNING: Problems running mailbox postcreation script!”と出てメールボックスが作成できません。 --Postfixのmain.cf-- alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases body_checks = regexp:/etc/postfix/body_checks bounce_queue_lifetime = 1d command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix debug_peer_level = 2 disable_vrfy_command = yes header_checks = regexp:/etc/postfix/header_checks home_mailbox = Maildir/ html_directory = no inet_interfaces = all inet_protocols = all mail_owner = postfix mailbox_size_limit = 1073741824 mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man maximal_queue_lifetime = 2d message_size_limit = 10485760 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain mydomain = *********** myhostname = mail.************ myorigin = $mydomain newaliases_path = /usr/bin/newaliases.postfix proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES sample_directory = /usr/share/doc/postfix-2.6.6/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop smtpd_banner = $myhostname ESMTP smtpd_client_restrictions = permit_mynetworks,reject_unknown_client,permit smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_path = smtpd smtpd_sasl_security_options = noanonymous smtpd_sasl_type = dovecot unknown_local_recipient_reject_code = 550 virtual_alias_domains = $virtual_alias_maps virtual_alias_maps = proxy:mysql:/etc/postfix/mysql/mysql_virtual_alias_maps.cf virtual_gid_maps = static:5000 virtual_mailbox_base = /home/mailuser virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql/mysql_virtual_mailbox_domains.cf virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql/mysql_virtual_mailbox_maps.cf virtual_minimum_uid = 5000 virtual_uid_maps = static:5000 --Postfix再起動してPostfixadminからアドレス追加しようとした時の/var/log/maillog-- Feb 24 15:44:54 *** postfix/postfix-script[10170]: stopping the Postfix mail system Feb 24 15:44:54 *** postfix/master[10102]: terminating on signal 15 Feb 24 15:44:54 *** postfix/postfix-script[10242]: starting the Postfix mail system Feb 24 15:44:54 *** postfix/master[10243]: daemon started -- version 2.6.6, configuration /etc/postfix うまくいかないので色々なサイトを参考にしていじっていたのでどこかで食い違ってきてうまく動作しなくなってしまいました。 よろしくお願い致します。

  • PHPから外部コマンドを使ってメールを送信した際のエラー

    PHPから外部コマンドを使ってメールを送信したいのです。つい先日までうまくいっていました。しかし、今日になって以下のようなエラーメッセージをログで発見しました。 [/var/log/maillog] May 16 13:17:22 localhost postfix/sendmail[15178]: fatal: open /etc/postfix/main.cf: Permission denied そう言えば、昨日サーバーが一時的にダウンしたので、再起動させました。しかし、Postfixは起動しています。また、コマンドラインから以下のように実行すると、ちゃんとaaa@example.comでそのメールを受信することができます。(便宜上、ここにおいて、aaa@example.comは架空のメールアドレス。) echo 'Hello!' | mail -s 'Test' aaa@example.com どこにミスがあるのでしょうか?

  • postfixでのマルチドメイン設定について

    postfixでのマルチドメイン設定について お世話になります。 centOS5.5 にて、openPNE3.4をマルチドメイン環境にて2サイト設置しております。 メールサーバーはpostfix+dovecotを使用しています。 サイト自体は、問題無く稼働しているのですが、携帯からの画像投稿が出来ず困っております。 メインドメインをa.com 追加ドメインをb.comとして /etc/postfix/virtualに @a.com openpne_usera b.com anything @b.com openpne_userb /etc/aliasesに openpne_usera: "| php /openPNE path/OpenPNE/symfony openpne:execute-mail-action" openpne_userb: "| php /openPNE path/OpenPNE/symfony openpne:execute-mail-action" /etc/postfix/main.cf に virtual_alias_maps = hash:/etc/postfix/virtual virtual_alias_domains = b.com と設定しております。 これで、a.comには携帯からの画像投稿が正常に出来るのですが、b.comでは、画像投稿が出来ません。 メール送信は出来ているのですが、サイトに反映されないのです。 ちなみに、/etc/postfix/virtualの a.comに関する設定をコメントアウトすると、b.comに正常に反映されます。 何か設定で不足している部分等はありますでしょうか? 何卒ご教授の程、宜しくお願い致します。

  • postfix 受信時 php スクリプト実行

    ※一部、ドメイン名が隠れてなかったので再度投稿しました。 【環境】 os: freebsd 8.4 php: 5.4.13 postfix:2.9.5 メールの送受信はエラーなくできています。 【やりたいこと】 メール受信時にPHPスクリプトを実行したい!(メールでブログ上げたい!!!!) 【困っていること】 メールログみると、PHPが実行されずに”転送”しようとしている。 <maillog> Jan 22 23:42:31 postfix/qmgr[36840]: from=<送信元>, size=38495, nrcpt=1 (queue active) Jan 22 23:42:31 postfix/virtual[36877]: to=<|php /usr/home/ユーザー名/htdocs/実行したい.php@ドメイン>, orig_to=<送信先>, relay=virtual, delay=0.32, delays=0.31/0/0/0, dsn=5.1.1, status=bounced (unknown user: "|php /usr/home/ユーザー名/htdocs/実行したい.php@ドメイン") ※なぜか PHP 実行したいのに、PHPのパスのあとに@ドメインが! このアドレスはあるわけないので送信元にエラーメールが戻ってきたのでした。 <エラーメール> Undelivered Mail Returned to Sender 中略 <"|php /usr/home/ユーザー名/htdocs/実行したい.php"@ドメイン> (expanded from <送信先>): unknown user: "|php /usr/home/ユーザー名/htdocs/実行したい.php@ドメイン" 【試したこと】 バーチャルメールボックスなので virtual_alias_maps(ファイル名:/usr/local/etc/postfix/virtual_alias) に 下記を記述しました。 blog@ドメイン  | "/usr/local/bin/php /usr/home/ユーザー名/htdocs/実行したい.php" そして、 postmap /usr/local/etc/postfix/virtual_alias として、postfix stop → postfix start してメールを送信すると、上記エラーに…。 ※blog@ドメイン までをバーチャルなユーザー名にしています。 (バーチャルドメインで現在2ドメイン運用しています。今回の「blog@ドメイン」というのはサーバのユーザーにはいなくてvirtual_mailbox_mapsに登録しているバーチャルなユーザーです。) バーチャルなユーザーは ユーザーID:グループID を 5000:5000 としています。 実行したい.php は 持ち主 5000:5000 で、 パーミッション 744 です。 また、このPHPはファイルの書き込みをします。 書きこみ対象のフォルダのパーミッションは777にしてあります。 (持ち主はwww:www になっています) あとで調べてみたらmain.cf の default_privs という項目が気になったので サーバーのユーザーを指定してPHPもそのユーザーのものにしましたが 結果、なんらかわらなかったので元に戻しました…。

  • メール転送|Postfix|バーチャルドメイン|CentOS

    外部のメールアドレス宛てにメールを 転送したいのですが、設定項目など ご存知の方がいましたらアドバイスして いただけませんか? 以上宜しくお願いします。 ※解決のために必要な情報がありましたら 指摘していただけますでしょうか --------------------------------------- CentOS4(x86_64) カーネル:2.6.18-8.1.4.el5.028stab035.1 Postfix バージョン 2.2.10 (Sendmail config V10/Berkeleyを system-switch-mailでpostfixに切り替えてあります) BIND バージョン 9.2.4 /etc/postfix/virtualでアカウント毎にメールアドレスを指定しています。 /etc/postfix/main.cfのvirtual_alias_domainsに複数のドメインを 指定しています。 ---------------------------------------

  • Postfixで外部からメールが受信できない

    Postfix(debian)でメールサーバ構築の勉強をしている者です。 バーチャルドメイン(VIRTUAL.********.**)に対して外部からメールを送信してみたのですが、gmailで送信した場合は成功し、携帯電話から送信した場合には失敗してしまいます。 失敗したときのログ[mail.log] Dec 30 21:31:36 ******** postfix/anvil[20511]: statistics: max connection rate 1/60s for (smtp:192.168.0.6) at Dec 30 21:27:24 Dec 30 21:31:36 ******** postfix/anvil[20511]: statistics: max connection count 1 for (smtp:192.168.0.6) at Dec 30 21:27:24 Dec 30 21:31:36 ******** postfix/anvil[20511]: statistics: max cache size 1 at Dec 30 21:27:24 [/etc/postfix/main.cf] smtpd_banner = $myhostname ESMTP biff = no append_dot_mydomain = no readme_directory = no smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache myhostname = mail.********.** mydomain = *******.** virtual_alias_domains = VIRTUAL.********.** virtual_alias_maps = regexp:/etc/postfix/virtual alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = $myhostname, localhost.$mydomain, $mydomain, localhost relayhost = [●●.jp] #OP25B対策 mynetworks = 192.168.1.0/24, 127.0.0.0/8 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all home_mailbox = Maildir/ message_size_limit = 1024000 [/etc/postfix/virtual] USERNAME@VIRTUAL.********.** USERNAME 送信元(携帯)にはInvalid Destination Domain (in reply to RCPT TO command)と通知されます。 ちなみに、mail.********.**に対しての送信は成功するようです。 どなたか御教授よろしくおねがいします。

  • メールの受信をトリガーとしてperlを起動させたい

    メールの受信をトリガーとしてperlを起動させたいと考えています。 vine linux 4.0 で MTAはpostfix 2.2.10 のみが入っています。 /etc/postfix/aliases に root: "|/usr/bin/perl /root/test.cgi" と書いて postfix reload した後 root 宛にメールをすると、メール自体は普通に届きますが perlは起動しません。 test.cgi 自体は直接叩いてやると、ちゃんと動いています。 main.cf には alias_maps = hash:/etc/postfix/aliases と記述してあります。 メール受信で perlを起動させるにはどうしたらよいのでしょうか?