• ベストアンサー
  • 困ってます

postfixのキャッチオールに関して

/etc/postfix/virtualファイルに sample.com anything @sample.com admin を追記して /etc/aliasesファイルに admin: "| php /home/admin/~/test.php" を追記した場合 存在しないアドレスにメールが送信された場合は毎回test.phpが起動しますが 最初にtestが含まれるアドレスにメールが送信された場合のみtest.phpを起動させたいです。 例 test@sample.com→test.php test-1@sample.com→test.php abc@sample.com→無し ご教示いただけると幸いです。 宜しくお願いいたします。

共感・応援の気持ちを伝えよう!

  • Linux系OS
  • 回答数1
  • 閲覧数338
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • notnot
  • ベストアンサー率47% (4738/9988)

Postfixの設定では出来ないんじゃないかな。 受け取ったスクリプトで、環境変数 ORIGINAL_RECIPIENT を見て処理するかどうか決めれば良いと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございました。 とても参考になりました。

関連するQ&A

  • メール受信時postfixでPHPファイル起動NG

    postfixでメール受信をトリガーにPHPファイル実行したいが、メールサーバでメールを受信できません。 linux環境でWEBシステムを構築しております。 環境構築や設定についての知識が乏しく分かり辛い点が多々あるかもしれませんが、 御指摘下さい。 実現したい事として、 postfixであるメールアドレス(pictup@3cha.test.jp)にメールを受信したタイミングで、 PHPファイルを実行させようとしていますが、上手く出来ていません。 メールサーバにてメールを受信出来ていない原因を追究し解消したいのですが、 どのような手順で調査すればよいか分からずにいます。 (通信経路に不具合がありそうなので調べたいのですが、何をどのように調べたらよいか理解しきれていません) 実施した内容や現在の設定を以下に記載します。 その他に必要な情報があれば追記致しますので、御連絡下さい。 ●各種環境のバージョンは以下の通り [各種バージョン] OS:CentOS release 4.6 (Final)Kernel \r on an \m postfix:2.3.5 PHP:5.2.14 ●postfixのaliases及びmain.cfの記述内容 【postのaliases】 ・配置場所 /etc/aliases ・内容 ※追記箇所のみ抜粋。(コメント行等抜粋) # 転送設定 #pictup: testmail@abc.com ←この行を有効にして、mailコマンドでpictup@3cha.test.jpにメール送信したらtestmail@abc.comに転送は出来た。 pictup: "| /usr/local/php/bin/php /home/ioix/demo/batch/system/mail_received.php" 【postfixのmain.cf】 [root@aaa etc]# postconf -n 実行結果 ・配置場所 /etc/postfix/main.cf ・内容 alias_database = hash:/etc/aliases alias_maps = hash:/etc/aliases command_directory = /usr/sbin config_directory = /etc/postfix daemon_directory = /usr/libexec/postfix debug_peer_level = 2 home_mailbox = Maildir/ html_directory = no inet_interfaces = all mail_owner = postfix mail_spool_directory = /var/spool/mail mailq_path = /usr/bin/mailq.postfix manpage_directory = /usr/share/man mydestination = $myhostname, localhost.$mydomain, localhost, 3cha.test.jp mydomain = local.domain myhostname = host.local.domain mynetworks = 168.100.189.0/28, 127.0.0.0/8, 125.100.128.101, 192.168.100.0/24, 127.0.0.0/8 myorigin = $mydomain newaliases_path = /usr/bin/newaliases.postfix queue_directory = /var/spool/postfix readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES sample_directory = /usr/share/doc/postfix-2.3.3/samples sendmail_path = /usr/sbin/sendmail.postfix setgid_group = postdrop smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/isp_auth smtp_sasl_security_options = noanonymous unknown_local_recipient_reject_code = 55 ●動作確認方法 以下、3点の手順で確認。 (linuxサーバ内部からmailコマンド実行している理由は、外からのメール受信が上手くいっていない為。) 下記コマンド実行したがPHPファイルは起動されなかった。 (1)postfixの記述変更(転送設定をコメントアウトして教えて頂いた内容を記述) pictup: "| /usr/local/php/bin/php /home/ioix/demo/batch/system/mail_received.php" 上記のように設定。 (2)postfix再起動 以下コマンドを実行 [root@aaa etc]# newaliases [root@aaa etc]# /etc/rc.d/init.d/postfix restart (←念の為リスタート実行) (3)mailコマンドでサーバ内部からメール送信 [root@aaa etc]# mail -s TestSend root@3cha.test.jp TESTSEND to Server . Cc: [root@aaa etc]# ●現状の出来ている事 【出来ている事】 (1)サーバからmailコマンドで外部メールアドレスへメール送信出来る (2)postfixのaliasesファイルに以下記述をして、root@***にサーバからmailコマンドで root宛にメールを送ると転送されて外部メールアドレスで送ったメールが確認出来る root: test@aaa.com (3)サーバ外部からサーバのpostfixに設定したドメイン宛にメールを送っても以下エラーでサーバにメールは届かない。 [postfixのaliases内のmydestinationを以下に変更] mydestination = $myhostname, localhost.$mydomain, localhost, 3cha.test.jp [送信したメール宛に戻ってくるエラーメッセージ] Hi. This is the qmail-send program at e2087.secure.jp. I'm afraid I wasn't able to deliver your message to the following addresses. This is a permanent error; I've given up. Sorry it didn't work out. <root@3cha.test.jp>: Sorry, I wasn't able to establish an SMTP connection. (#4.4.1) I'm not going to try again; this message has been in the queue too long. (4)nslookupコマンドで正引きとMXレコードは確認済み(一部IPは伏せてあります) ※MXレコードの設定がこれで良いのかが自分自身で判断出来ていません。 [root@aaa etc]# nslookup > 3cha.test.jp Server: 192.***.***.*** Address: 192.***.***.***#53 Non-authoritative answer: Name: 3cha.test.jp Address: 125.***.***.*** [root@aaa etc]# nslookup > set type=mx > 3cha.test.jp Server: 192.***.***.*** Address: 192.***.***.***#53 Non-authoritative answer: 3cha.test.jp mail exchanger = 10 mail.cpos.jp. Authoritative answers can be found from: cpos.jp nameserver = ns2.value-domain.com. cpos.jp nameserver = ns1.value-domain.com. mail.cpos.jp internet address = 125.***.***.*** ns1.value-domain.com internet address = 119.***.***.** ns2.value-domain.com internet address = 175.**.**.** 長文且つ纏まりがなく大変申し訳ございません。 何から手をつけてよいのか、分からなくなってきてしまったので、 どんな些細な事で構わないのでアドバイス頂ければ幸いです。 よろしくお願い致します。

  • メールをトリガーとして....

    Linuxでメールをトリガーとしてプログラムを動かしたいと思ってます。 「/etc/aliases」に「mailuser: "| /usr/bin/php -f /tmp/test.php"」を追加してもtest.phpは動かず、メールも届きません。 「/etc/aliases」に「mailuser: admin」としてみるとメールがadminに届いてほしいのですが、mailuserに1通届きます。 「/etc/aliases」に「mailuser: mailuser, admin」を追加するとメールがmailuserとadminに届いて欲しいのですが、mailuserに2通届きます。 「/etc/aliases」変更ごに「newaliases」は実行してます。 「PHP Version 5.1.6」「sendmail Version 8.13.8」で、VPSです。 どうして思うようにうごかないのでしょうか?

  • 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+POP3の質問

    お世話になります。 私はLinux歴2週間のSEです。以前まで5年ぐらいwin上でシステム開発を担当していました。 最近、Linux(Miracle)を使ってサーバー構築することにになり、Mysql4、Apache2、PHP5まで使える状態になりました。 次にPostfixを使ってメールサーバーを構築しようとしましたが、POP3を使って受信できません。 PostFixの定義 command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix myhostname = webmaster.xxxx.com mydomain = xxxx.com myorigin = $mydomain mydestination = $myhostname, localhost.$mydomain, $mydomain inet_interfaces = all relay_domains = $mydestination alias_maps = hash:/etc/postfix/aliases alias_database = hash:/etc/postfix/aliases home_mailbox = Maildir/ mailbox_size_limit = 102400000 message_size_limit = 5120000 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix mynetworks = 127.0.0.0/8, 192.168.0.0/24 (不正中継対策は未だ定義していません) この定義でKmail(メーラー)を使って送信は問題なく出来ました。テストで「a1」と言うユーザーを作り受信テストしました。 メールボックス(/home/a1/maildir/new)まで届いているにも拘らずメーラーからPOP経由でメッセージを受信できません。 当然ですがデレクトリー直接指定の場合は受信出来ました。 POP3はxinetdから起動しています。 メーラーからの応答は”メッセージなし”だけで何の定義が足らないか又は起動するプログラムを間違えているのかサッパリ解らなく質問させて頂きました。 初めての質問でご無礼ございましたらご容赦ください。

  • postfix どういう場合に/var/spool/postfix/deferredに未送信メールがたまるのでしょうか。

    RHL9.0,postfixを使用しています。/etc/postfix/aliasesをつかってメーリングリストによるメール転送を行っています。しかし、添付ファイル付きのメールをこのメーリングリスト宛に送ると/var/spool/postfix/deferredディレクトリに同じメールがのこり、1時間ごとに同じメールの送信が繰り返されます。また、一部の人にはこのメールが届きません。ログを見ても何か失敗したと言うような記述がみあたりません。

  • 【postfix】aliacesを使用しphpスクリプトを動かす

    postfixにて受け取ったメールを内部phpプログラムに引き渡す設定をaliacesにて行おうと考えているのですが、 sample@email.com 宛のメールを sample: "|/usr/bin/php /home/www/testmail/test.php" というようにaliacesに書き込み、処理を行う事が出来るというのはわかるのですが、 postfixに来たメール全てに対して、プログラムを実行する方法は出来るのでしょうか? sample: "|/usr/bin/php /home/www/testmail/test.php" この"sample"の部分をワイルドワード的な物に変えて使用できるのでしょうか? 今考えられえる方法としまして、プログラムを動かす為のメールアドレス exec@email.com を作成し、postfixに来たメールすべてに対し、exec@email.comに転送をする。 aliacesには以下のコマンドを書く。 exec: "|/usr/bin/php /home/www/testmail/test.php" この方法しか思いつかないのですが、何かもっと手間の掛からないいい方法は御座いますでしょうか?ご教授願います。

  • [postfix]aliasesでphp呼び出し

    linux環境でWEBシステムを構築しています。 postfixにてあるアドレス(pictup@test.jp)にメールを受信したタイミングで、 PHPファイルを呼び出させようとしていますが、 上手く出来ていません。 原因が特定できていない為、何ともいえないのですが、 POSTFIXのmain.cf、及びaliasesの設定に不備及び不足はあるでしょうか? その他に思い当たる原因や不備不足があれば御教授下さい。 (不足している情報があればおっしゃって下さい。) ●各種バージョンは以下の通りです。 [各種バージョン] OS:CentOS release 4.6 (Final)Kernel \r on an \m postfix:2.3.5 PHP:5.2.14 ●POSTFIXのmain.cf及びaliasesの記述内容 [POSTFIXのmain.cf] ・配置場所 /etc/postfix/main.cf ・内容 ※必要箇所のみ抜粋。(コメント行等抜粋) queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix myhostname = host.local.domain mydomain = local.domain myorigin = $mydomain mydestination = $myhostname, localhost.$mydomain, localhost, test.jp unknown_local_recipient_reject_code = 550 mynetworks = 168.100.189.0/28, 127.0.0.0/8, 125.100.128.101, 192.168.0.0/24, 127.0.0.0/8 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ mail_spool_directory = /var/spool/mail debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.3.3/samples readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/isp_auth smtp_sasl_security_options = noanonymous [POSTFIXのaliases] ・配置場所 /etc/aliases ・内容 ※必要箇所のみ抜粋。(コメント行等抜粋) mailer-daemon: postmaster postmaster: root bin: root daemon: root adm: root lp: root sync: root shutdown: root halt: root mail: root news: root uucp: root operator: root games: root gopher: root ftp: root nobody: root radiusd: root nut: root dbus: root vcsa: root canna: root wnn: root rpm: root nscd: root pcap: root apache: root webalizer: root dovecot: root fax: root quagga: root radvd: root pvm: root amanda: root privoxy: root ident: root named: root xfs: root gdm: root mailnull: root postgres: root sshd: root smmsp: root postfix: root netdump: root ldap: root squid: root ntp: root mysql: root desktop: root rpcuser: root rpc: root nfsnobody: root ingres: root system: root toor: root manager: root dumper: root abuse: root newsadm: news newsadmin: news usenet: news ftpadm: ftp ftpadmin: ftp ftp-adm: ftp ftp-admin: ftp www: webmaster webmaster: root noc: root security: root hostmaster: root info: postmaster marketing: postmaster sales: postmaster support: postmaster decode: root # 転送設定 #pictup: testmail@abc.com ←この行を有効にして、mailコマンドでpictup@test.jpにメール送信したらtestmail@abc.comに転送は出来た。 pictup: "|/usr/local/php/bin/php /home/demo/batch/system/mail_received.php" ←パイプで繋いでいる内容としては、インストールしたphp本体在り処、起動したいphpファイルを記述。 ●動作確認方法 上記、linuxサーバーにログインして以下mailコマンド実行。 (linuxサーバー外からのメール受信も上手くいっていない為。 こちらも質問すると長くなる為、PHPファイル起動部分を一先ず解決したい。) # mail pictup@test.jp Subject: TEST AAAA . Cc: [Enter]で終了。 ●その他 ・/var/log/maillogには以下ログが出力されています。 *** ** **:**:** lvs01 postfix/cleanup[16096]: 609D82230044: message-id=<20110621025126.609D82230044@host.local.domain> *** ** **:**:** lvs01 postfix/qmgr[8904]: 609D82230044: from=<root@local.domain>, size=305, nrcpt=1 (queue active) *** ** **:**:** lvs01 postfix/local[16098]: 609D82230044: to=<pictup@test.jp>, relay=local, delay=0.05, delays=0.01/0/0/0.03, dsn=2.0.0, status=sent (delivered to command: /usr/local/php/bin/php /home/demo/batch/system/mail_received.php) *** ** **:**:** lvs01 postfix/qmgr[8904]: 609D82230044: remove ・postfix修正後は以下コマンド実行済み。 newaliases /etc/rc.d/init.d/postfix restart ・本サーバはGUI環境がなくCUIで設定。

  • 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

  • PHPでUNIXコマンドを発行してファイルへ追記できない

    PHPでUNIXコマンドを発行してファイルへ追記できない 現在,/etc/aliasesファイルへ,PHPから文字列を追加したいのですが,うまくいかず,皆様のお知恵を頂ければと思います. 現在,sudoersにapacheユーザを追加しており,パスワードを渡せば全権限を持たせています. それで,PHP上で $command = "echo '".___APACHEPASS___."' | sudo -S cp /etc/aliases /etc/alias_bak/aliases.bak.".date("YmdHis"); exec($command, $output); とすれば,aliasesファイルのバックアップファイルが生成されます. ところが,文字列を追記するため,コマンド $command = "echo '".___APACHEPASS___."' | sudo -S echo '{$_POST['user_name']}: | /var/www/html/test.php' >> /etc/aliases"; を発行しても追記されません. バックアップファイルコマンドが実行されれば,/var/log/secureにログが残りますが,追記コマンドでは失敗のログすら記録されていません. なお,コマンド自体を表示させると, echo 'apache-password' | sudo -S echo 'user-name: | /var/www/html/test.php' >> /etc/aliases となっており,rootのコマンドラインで echo 'user-name: | /var/www/html/test.php' >> /etc/aliases を実行すれば,正常に追記されます. 乱文となってしまいましたが,追記されない原因の見当がついたかた,ご教授頂けると幸いです. よろしくお願い致します.

  • 【postfix】aiaseでのランダムメールアカウント設定

    現在一台サーバにて、postfixで受け取ったメールを、内部のプログラムに引き渡す設定をaliaseにて行っています。 今までは受け取るメールアドレスが"xxx@test.jp"とわかっていたのですが、今後、ランダムなメールアドレスからの送信もpostfixからプログラムへ引き継ぎたいと思っています。(下記参照) "**test"     |"/bin/php" /bin/testprogram.php 現状でテスト環境が整っていないので、まずは可能かどうかを知りたいのですが、「ランダムなメールアドレスからの送信をpostfixからプログラムへ引き継ぐ」ことはできるのでしょうか?正規表現にて不可能でも、何か外部ファイルからリンクする方法とかもありそうですが・・・・ググって見たのですが、それらしい回答がみつかりませんでしたので、皆様宜しくお願いいたします。