私はこの投稿にできるだけ多くの情報を含めるように努めました。
Amazon EC2 UbuntuサーバーでPostfixを使用していますが、アドレスにエイリアスしたPHPスクリプトが起動していないようです。メーリングは正常に機能しますが、スクリプトが実行されません。私はおそらく簡単なことを見逃しているので、これで他のアイデアをいただければ幸いです。
以下のコードはスクリプトのコードです。現時点では、の内容をファイルに書き込むのは基本的なスクリプトにすぎませんphp://stdin
。これがこのスクリプトを作成するための最良の方法であるかどうかはわかりませんが、この問題のトラブルシューティングに使用するのは一時的なものであるため、現時点では問題ないようです。
#!/usr/bin/php -q
<?php
$data = '';
$fileName = "parsedData.txt";
$stdin = fopen('php://stdin', 'r');
$fh = fopen($fileName, 'w');
while(!feof($stdin))
{
$data .= fgets($stdin, 8192);
}
fwrite($fh, $data);
fclose($stdin);
fclose($fh);
?>
テキストを含む.txtファイルを渡すことで、これが機能することを確認しました。
./test2.php < data.txt
PHPスクリプトがローカルで正常に機能しているように見えるので、正しく呼び出されていることを確認する必要があります。sudo chmod 777
test2.phpスクリプトで実行されました。関連する/etc/aliasesファイルエントリは次のとおりです。
test: "|/usr/bin/php -q /var/test/php/test2.php"
これを変更するたびにnewaliasesを実行します。これは、phpの場所を完全に指定するため、最も正しい構文のようです。test@mydomain
エイリアスが設定されていない場合、内部と外部の両方から正常に電子メールを受信します。syslogによると、これはmaildirではなくコマンドに正常に配信されます。
postfix/local[2117]: 022AB407CC: to=<test@mydomain.com>, relay=local, delay=0.5, delays=0.43/0.02/0/0.05, dsn=2.0.0, status=sent **(delivered to command: /usr/bin/php -q /var/test/php/test2.php)**
エイリアスも次の方法で書き込まれましたが、成功しませんでした(構文が間違っているためにコマンドではなくmaildirに移動するか、スクリプトが起動しないため)。
test: |"php -q /var/test/php/test2.php"
test: "|php -q /var/test/php/test2.php"
test: |"/usr/bin/php -q /var/test/php/test2.php"
test: "| php -q /var/test/php/test2.php"
test: "|/var/test/php/test2.php"
test: |"/var/test/php/test2.php"
私のpostfixmain.cfファイルの関連部分は次のようになります-
myhostname = domainnamehere.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = domainnamehere.com, internalawsiphere, localhostinternalaws, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command =
home_mailbox = Maildir/
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
スクリプトが正常に呼び出された場合にphpログファイルに表示されるようにerror_log("script has started!");
、最初に持っていました。test2.php
php.iniにアクセスしてerror_loggingをオンにし、保存先を指定しましたが、これを機能させることができませんでした。これを機能させると、スクリプトが関数に移動したときに失敗したかどうかを判断できるphp://stdin
ので役立ちます。これは、catされた.txtファイルではなく電子メールの処理に問題がある可能性があるためです。
私の最終目標は、特定のアドレスの電子メールを添付ファイルとともにMySQLデータベースに保存し、各ファイル/電子メールの一意のコードをユーザーに返すサービスを取得することです。phpスクリプトを使用するよりも、このようなことを行う簡単な方法はありますか?squirrelmailやdbmailのようなものはこれを行いますか?
私はこれで私の考えを完全に使い果たしました。たぶん私は別のメールサービスを試してみるべきですか?
StackOverflowの賢明な人々、助けてください!