AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

AWSの独自ドメイン・サイトにメールフォームを設置する方法を教えてください

0

AWS Route 53を通じて取得した独自ドメイン・サイトに、ビジターが意見や問い合わせを行う『メールフォーム』付きWEBページをセットしました。 このメールフォームは以下のサイトの説明を参考に作成しました。https://www.php-factory.net/mail/01.php  同サイトからダウンロードしたZipファイルには、『mail.php』と『contact.html』が梱包されていました。『mail.php』ファイルは、フォームの設定ファイルになっており、『TeraPad』で開き、必須項目等の設定値を、自分の環境に合わせて修正しました。  『contact.html』は、メールフォームの原版で、こちらの<body>....</body>部分を自分のWEBページに貼り付け、『mail.php』ファイルと一緒に同WEBページをAWSサイトの『/var/www/html/info』フォルダーに配置しました。

<body> <div id="formWrap"> <h3>お問い合わせ、ご意見等はこちらから。</h3> <p>下記フォームに必要事項を入力後、確認ボタンを押してください。</p> <form method="post" action="mail.php"> <table class="formTable"> <tr> <th>お名前</th> <td><input size="20" type="text" name="お名前" /> ※必須</td> </tr> <tr> <th>Mail(半角)</th> <td><input size="30" type="text" name="Email" /> ※必須</td> </tr> <tr> <th>ご意見<br /></th> <td><textarea name="お問い合わせ内容" cols="50" rows="5"></textarea></td> </tr> </table> <p align="center"> <input type="submit" value="  確認  " /> <input type="reset" value="リセット" /> </p> </form> </body>  ブラウザーでこのWEBページにアクセス、当該フォームに必要事項を記入、『確認』ボタンを押すと、同フォームとほぼ同じ確認画面が立ち上がり、『送信する』ボタンを押すと、『送信ありがとうございました。送信は正常に完了しました。トップページへ戻る»- PHP工房 -』と表示されました。しかし設定したメールアドレスに送信文は届きませんでした。  Enomを利用した『Apache:httpd-2.2.17-win32-x86-openssl-0.9.8o.msi』/『php-5.2.11-Win32』/『Windows Sever 2003』の別のサイトにも同様の手順で同メールフォームをセットし、ビジターの問い合わせが受信できることを確認しています。
  • EC2でsendmailの設定を行った記憶がありません。 『コメントに使用した言語がこの投稿の言語と異なります』と表示され、コマンドの実行結果を投稿できません。

  • エラーログとアクセスログを別々に投稿しようとしても、『コメントに使用した言語がこの投稿の言語と異なります』と表示されます。

  • 『AWS WORKMAIL』は稼働しています。『AWS SES』はサンドボックスが解除されましたが、シンガポール在住のため、サービス圏外ということで『SMTP』が機能しませんでした。

  • 『sudo yum install sendmail』コマンドを実行したとしたところ、『sendmail』のインストールができたようです。しかし、ブラウザーで当該メールフォームのテスト送信をしたところ、送信は正常に完了しましたが、所定のメールアドレスに送信文は届きませんでした。 [ec2-user@ip-172-31-91-78 ~]$ sudo yum install sendmail Last metadata expiration check: 1 day, 8:13:38 ago on Sun Aug 20 01:12:46 2023. Dependencies resolved.

    Package Architecture Version Repository Size

    Installing: sendmail x86_64 8.17.1-5.amzn2023.0.4 amazonlinux 751 k Installing dependencies: cyrus-sasl x86_64 2.1.27-18.amzn2023.0.3 amazonlinux 73 k procmail x86_64 3.24-1.amzn2023.0.2 amazonlinux 177 k tinycdb x86_64 0.78-15.amzn2023.0.2 amazonlinux 33 k

    Transaction Summary

  • ①AWSコンソールから当該インスタンスにSSH接続し、以下のコマンドを実行しました。 sudo chown -R ec2-user /var/www/ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} ; find /var/www -type f -exec sudo chmod 0664 {} ; echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php rm /var/www/html/phpinfo.php

    ②『メモ帳』で以下のスクリプトを作成、『phpinfo.php』と命名、『/var/www/html/phpinfo.php』に配置しました。

    <?php phpinfo(); ?>

    ③ブラウザーで『http://henohenomohe.net/phpinfo.php』にアクセスすると『phpinfo.php』の詳細が表示されました。

    ④しかし、ブラウザーでメールフォームに記入し、テスト送信したところ、所定のアドレスに送信文は届きませんでした。

    ⑤『ls -la /var/log/maillog』の実行結果は次の通りです。 [ec2-user@ip-172-31-91-78 ~]$ sudo su [root@ip-172-31-91-78 ec2-user]# ls -la /var/log/maillog ls: cannot access '/var/log/maillog': No such file or directory

    ⑥『tail -f /var/log/httpd/error_log』の実行結果は次の通りです。 [root@ip-172-31-91-78 ec2-user]# tail -f /var/log/httpd/error_log [Mon Aug 21 00:38:00.332617 2023] [proxy_fcgi:error] [pid 2136752:tid 2136804] [client 34.245.75.124:53164] AH01071: Got error 'Primary script unknown' [Mon Aug 21 00:38:00.471920 2023] [proxy_fcgi:error] [pid 2080610:tid 2080781] [client 34.245.75.124:53166] AH01071: Got error 'Primary script unknown' [Mon Aug 21 00:38:05.056957 2023] [proxy_fcgi:error] [pid 2136752:tid 2136797] [client 34.245.75.124:53486] AH01071: Got error 'Primary script unknown' [Mon Aug 21 01:52:51.024345 2023] [proxy_fcgi:error] [pid 2080609:tid 2080739] [client 3.236.83.134:39208] AH01071: Got error 'Primary script unknown' [Mon Aug 21 01:52:52.151166 2023] [proxy_fcgi:error] [pid 20

質問済み 1年前480ビュー
1回答
0

PHPやWebサーバーのログに何かエラーは出ていないでしょうか?
おそらくHTML側だけだと送信できているように見えるかもしれませんが、PHPで送信が失敗している可能性があります。

profile picture
エキスパート
回答済み 1年前
  • 『Webサーバーのログ』にはどのようにアクセスするのでしょうか。『WinSCP』で『/var/log/httpd』/『/var/log/php-fpm』を発見しましたが、アクセスを拒否されました。

  • SSHなどでOSに接続いただいてルートユーザーになってから確認するのがよいと思います。 Linuxであれば以下のようなコマンドで確認が可能です。

    sudo su -
    tail -f /var/log/httpd/error.log
    tail -f /var/log/httpd/access.log
    tail -f /var/log/php-fpm/access.log
    

    他にも、ユーザーのhomeディレクトリにコピーしてからWinSCPなどで接続してローカルにダウンロードする手段もあります。

  • AWSコンソールにログイン→『EC2 ダッシュボード』→WEBサイトを起ち上げたインスタンスにSSH接続後。『sudo su』→『tail -f /var/log/httpd/error.log』/『tail -f /var/log/httpd/access.log』/『tail -f /var/log/php-fpm/access.log』を実行し、それぞれ以下の回答を得ました。  tail: cannot open '/var/log/httpd/error.log' for reading: No such file or directory tail: no files remaining  tail: cannot open '/var/log/httpd/access.log' for reading: No such file or directory tail: no files remaining  tail: cannot open '/var/log/php-fpm/access.log' for reading: No such file or directory tail: no files remaining  『ルートユーザーになってから』と言う当たりを、理解できていないことが、不首尾の原因でしょうか。

  • 「No such file or directory」と言われているのでファイルが無い可能性があります。 各ディレクトリにファイルがあることを確認できますか? 例えば以下のコマンドでディレクトリ内を確認できます。

    ls -la /var/log/httpd/
    

    他にはPHPでsendmailを使用しているように見えましたが、「/var/log/maillog」などに送信ができているかのログなどがあると思うのでそちらを確認するのも良いと思います。

  • AWSコンソールから当該インスタンスにSSH接続後、『ls -la /var/log/httpd/』コマンドを実行して見ましたが、アクセスを拒否されました。ec2-user”に書き込み権限を与える『sudo chown -R ec2-user /var/www/html』を実行しましたが、やはり拒否されました。

    Last login: Sun Aug 20 00:00:58 2023 from 18.206.107.29 [ec2-user@ip-172-31-91-78 ~]$ ls -la /var/log/httpd/ ls: cannot open directory '/var/log/httpd/': Permission denied [ec2-user@ip-172-31-91-78 ~]$ sudo chown -R ec2-user /var/www/html [ec2-user@ip-172-31-91-78 ~]$ ls -la /var/log/httpd/ ls: cannot open directory '/var/log/httpd/': Permission denied [ec2-user@ip-172-31-91-78 ~]$

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ