Ubuntu Server にインストールした WordPressで Contact Form を使うための設定

イントラネット上に構成したUbuntu ServerにWordPressをインストールして、社内の職員が予約申し込みをするシステムをつくりました。

主に使用するのはBooking Packageで予約申込と、Contact Formでお問い合わせ(主に予約キャンセルの連絡用)なのですが、何やらBooking Packageからのメール送信がうまくいかない。

Contact Formにいたってはこのようにエラーが出て送れません。

どうやらそのままではSMTPの機能を使えない様子。今回はWordPressのプラグインを使って簡単に設定してみました。

ついでにContact Formと合わせて使いたいFlamingoを編集者権限でも閲覧可能にするのと、SSLでの暗号化通信もできるようにしました。

SMTPを設定できるプラグインを導入

WP Mail SMTPというプラグインをインストールします。

WP Mail SMTP by WPForms – 人気のある SMTP およびメールログプラグイン
WordPress でのメール配信を簡単にします。 SMTP、Gmail、Outlook、SendGrid、Mailgun、SES、Zoho などに接続できます。ナンバー1と評価されている WordPress SMTP メールプラグインです...

プラグインを有効化するとセットアップウィザードから初期設定ができます。

使用するメーラーを選択します。今回は契約しているホスティングサービスのSMTPを使用します。僕はスターサーバーを使っています。

各ホスティングサービスにメーラーの設定方法が案内されているかと思いますので、ここに指定のホスト名を入力。

続いて適当にメールアドレスを用意して、ユーザー名(メールアドレス)とパスワードを入力します。

下のフォーム名や送信元メールアドレスは適当に設定しておきます。

メール機能を選択できますが、ほとんどが有料プラン用のものなのでデフォルトのままでOK。

以降は有料プランへの案内やおすすめのプラグインの紹介などの画面が出てきますが割愛。適当に進めて設定完了。

Contact Formから無事送ることができました。

“ContactForm7”と”WP-Mail-SMTP”を使ったVPSでのメールサーバー構築手順 - S-Port|法人向けデータセンターサービスの鈴与シンワート
“ContactForm7”と”WP-Mail-SMTP”を使ったVPSでのメールサーバー構築手順 についてのコラムです。|Wordpressユーザにもオススメ!鈴与シンワートの堅牢なクラウドサーバとは…!? ContactForm7

編集者ユーザーもFlamingoを閲覧可能にする

Contact Formと合わせて使いたいのがFlamingo。

Flamingo
Contact Form 7 の信頼できるメッセージストレージプラグイン。

Contact Formから送られてきたメッセージを、メールの設定間違いや容量制限で受け取れないといった場合があります。

Flamingoを入れておけばWordPressの管理画面から内容を確認することができます。

ただ、管理者権限でしか見られないので、今回は編集者権限のユーザーでも見られるようにします。

User Role Editor
User Role Editor WordPress プラグインはユーザーの種類と権限を簡単に変更できます。WordPress ユーザーの種類と権限の 編集/追加/削除。

User Role Editorというプラグインをインストールします。

メニューのユーザーに「User Role Editor」が追加されますので開き、役割を「エディター (editor)」に切り替えます。

「edit_users(ユーザーの編集)」と「read(読み取り権限)」にチェックを入れて更新。

これで編集者権限でもFlamingoを見ることができます。

WP★User Role EditerでFlamingoを編集者権限でも使えるようにする – WEB-Geek-Site.com

SSL通信を可能にする

Ubuntu Server上に入れたWordPressサイトは、HTTPS化されていないのでブラウザ上で「保護されていない通信」と表示されます。

Contact Formなどの投稿フォームに入力・送信した内容が暗号化されないので、第三者によって傍受されると内容が丸見え状態です。

今回はイントラネットで同じネットワークに接続している人しか閲覧できないWordPressなのでそこまで注意しなくてもいいかなと思っていましたが、VPNを使って外部から接続している人や、内部での傍受の可能性もあると考えるとHTTPS化しておく方が無難ですね(本当にその必要性があるかどうかまではあまり考えていません)

Ubuntu Serverで以下のコマンドを実行します。

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 restart

これでHTTPS化の準備が完了です。「ss -lnt」でポートを確認すると443番ポートが使えるようになっています。

ss -lnt
LISTEN  0        511                    *:443                  *:*
LISTEN  0        511                    *:80                   *:*

本来、暗号化には証明書が必要なのですが、UbuntuでインストールしたApacheにはサンプルの証明書が用意されており、これを使って暗号化できるとのこと。

その証明書と秘密鍵には「snakeoil」というファイル名がつけられており、スネークオイルとは「万能であるように見せかけた効能が不明な薬」という意味で、転じて自己署名証明書の名前に使われるとか。実際にインターネット上で公開するページで使うには危険です。

URLを「https~」に変えてアクセスすると、このように警告が出ます。

証明書は登録されているものの、信頼された認証局の署名がないため警告が出ます。

警告を無視してアクセスします。

ブラウザから証明書ビューアを開くと、発行先と発行元がUbuntu Serverを入れたサーバー名になっています。

そしてSHA-256に値が入っていますが、Ubuntu Serverでこの値の照合ができます。

openssl x509 -in /etc/ssl/certs/ssl-cert-snakeoil.pem -noout -text -fingerprint -sha256
sha256 Fingerprint=AD:16:94:83:1A:FF:10:F7:F8:59:55:8D:7D:D6:7D:8C:23:D3:86:65:48:1B:A6:43:CE:44:3C:DD:DD:01:91:C3

このサイトを利用する人は、このFingerprintの値が表示されていればちゃんと暗号化されていることを確認できます。

実際にそんなことをいちいち確認することを要求したところで誰も聞かないので、個人的かかなり限定的な使い方しかできませんが、とりあえず暗号化はできるということで。

第387回 UbuntuでSSLを利用したサービスを構築する | gihyo.jp
危険なインターネット上で、安全に通信するためのプロトコルがSSLです。SSLを利用することで「暗号化による通信の保護」と「通信相手の真正性の確認」を行うことができます。

コメント

コメントする前にお読みください

プログラミングに関する質問について、詳細なコードはお答えしませんのでご了承ください。
また、迷惑コメント防止のために初回のコメント投稿は承認制です。投稿が反映されるまで少し時間がかかります。