メール受信時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.**.**.**
長文且つ纏まりがなく大変申し訳ございません。
何から手をつけてよいのか、分からなくなってきてしまったので、
どんな些細な事で構わないのでアドバイス頂ければ幸いです。
よろしくお願い致します。
補足
回答ありがとうございます。 正規表現も考えたのですが、ユーザーのアドレスが増える度に regファイルを書き換えなければならず、除外しました。 出来ることなら DBと連携し、aliases内で転送まで行なえればいいのですが、その方法を見つけることが出来ませんでした。 USE**1@ezweb.ne.jp からメールがきた場合 => ANSWE**1@docomo.ne.jp USE**2@softbank.jp からメールがきた場合 => ANSWE**2@docomo.ne.jp 質問内容の一部が 伏字となっていたので書き直します。