イントラネット上に構成したUbuntu ServerにWordPressをインストールして、社内の職員が予約申し込みをするシステムをつくりました。
主に使用するのはBooking Packageで予約申込と、Contact Formでお問い合わせ(主に予約キャンセルの連絡用)なのですが、何やらBooking Packageからのメール送信がうまくいかない。
Contact Formにいたってはこのようにエラーが出て送れません。
どうやらそのままではSMTPの機能を使えない様子。今回はWordPressのプラグインを使って簡単に設定してみました。
ついでにContact Formと合わせて使いたいFlamingoを編集者権限でも閲覧可能にするのと、SSLでの暗号化通信もできるようにしました。
SMTPを設定できるプラグインを導入
WP Mail SMTPというプラグインをインストールします。
プラグインを有効化するとセットアップウィザードから初期設定ができます。
使用するメーラーを選択します。今回は契約しているホスティングサービスのSMTPを使用します。僕はスターサーバーを使っています。
各ホスティングサービスにメーラーの設定方法が案内されているかと思いますので、ここに指定のホスト名を入力。
続いて適当にメールアドレスを用意して、ユーザー名(メールアドレス)とパスワードを入力します。
下のフォーム名や送信元メールアドレスは適当に設定しておきます。
メール機能を選択できますが、ほとんどが有料プラン用のものなのでデフォルトのままでOK。
以降は有料プランへの案内やおすすめのプラグインの紹介などの画面が出てきますが割愛。適当に進めて設定完了。
Contact Formから無事送ることができました。
編集者ユーザーもFlamingoを閲覧可能にする
Contact Formと合わせて使いたいのがFlamingo。
Contact Formから送られてきたメッセージを、メールの設定間違いや容量制限で受け取れないといった場合があります。
Flamingoを入れておけばWordPressの管理画面から内容を確認することができます。
ただ、管理者権限でしか見られないので、今回は編集者権限のユーザーでも見られるようにします。
User Role Editorというプラグインをインストールします。
メニューのユーザーに「User Role Editor」が追加されますので開き、役割を「エディター (editor)」に切り替えます。
「edit_users(ユーザーの編集)」と「read(読み取り権限)」にチェックを入れて更新。
これで編集者権限でもFlamingoを見ることができます。
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の値が表示されていればちゃんと暗号化されていることを確認できます。
実際にそんなことをいちいち確認することを要求したところで誰も聞かないので、個人的かかなり限定的な使い方しかできませんが、とりあえず暗号化はできるということで。
コメント