Ghost では mail の設定が必須です。後回しにしていてとても後悔したので、手順を書いておきます。
Ghost での mail 設定について、公式では Maiilgunの使用が推奨されています。
Configuration - Adapt your publication to suit your needs
(以下「公式」という)
Mailgunを使用して、Ghostにmailを設定・運用するには、下記のモノが必要です。
- 取得したドメイン(以下「sample.com」とする)
- クレジットカード
- SMSメッセージ確認用の電話番号
Ghostの設定
Ghostの設定は最終的にconfig.production.jsonに反映されている必要があります。
自分の場合は、docker のimage ghost:latest
を利用しているので、docker-compose.yml に設定を書いていきます.
docker-compose.yml は下記です。
version: '3.1'
services:
ghost:
image: ghost:latest
container_name: sample-ghost
tty: true
restart: always
volumes:
- ./ghost:/var/lib/ghost/content
# - ./ghost-setting/config.production.json:/var/lib/ghost/config.production.json
environment:
url: https://sample.com
database__client: mysql
database__connection__host: db
database__connection__user: root
database__connection__password: password
database__connection__database: ghost
server__host: '0.0.0.0'
server__port: '2368'
mail__transport: 'SMTP'
mail__options__service: 'Mailgun'
# mail__options__host: smtp.mailgun.org
# mail__options__port: 465
# mail__options__secureConnection: 'true'
mail__options__auth__user: 'postmaster@mg.sample.com'
mail__options__auth__pass: '799XXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXX-XXXXXX'
forceAdminSSL: 'true'
networks:
- sample_net
db:
image: mysql:5.7
container_name: sample-ghost-db
tty: true
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
BIND-ADDRESS: 0.0.0.0
volumes:
- ./mysql:/var/lib/mysql
networks:
- sample_net
networks:
sample_net:
external: true
上記 yml の中で、mail__
と書いている項目部分が config.production.json へ渡すmail の設定です。
*今回は書きませんが、
config.production.json を volume と紐付けて(volumes の コメントアウトしている、- ./ghost-setting/config.production.json:/var/lib/ghost/
部分です)containerの中のファイルにして設定するコトも出来ます。
Mailgun の登録
下記記事では画像付きでご説明いただいているのでとても参考になります。感謝🙏。下記の通り進めましょう。
いますぐ使う Mailgun - Qiita
(以下「Mailgun設定記事」という)
一部追記していきます。
Mailgun設定記事で、 [Sandboxから送信] の部分です。
Mailgun設定記事 では 画面下側? 右側? の Try Now
とあった部分です。
自分は下記の手順でたどり着きました。
左側サイドバーの Sending 欄、 Domains 項目を開き、Domainsのリストの中にある、”sandboxXXXXXXXXXXXXXXXXXXXX…”を選択します。
すると、”sandboxXXXXXXXXXXXXXXXXXXXX…”のOverview が開くので、API の Select ボタンをクリックし、cURL の項目を選択すると、Mailgun設定記事のお試し用 コマンドが表示されます。
そのコマンドを terminal に貼り付けて実行してみて下さい。
自分が実際に使用したコマンドは下記です。(Mailgun サンプルから変えています)
*API key 、API base URL は個別のものなので書き換えて下さい(cURL ボタンの下に表示されています)
*あと、-F to=
の部分も、送信したい mail アドレス(確認できるモノ)に書き換えてください。
curl -s --user 'api:6d8XXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXX' \
https://api.mailgun.net/v3/sandbox0d7XXXXXXXXXXXXXXXXXXXXX.mailgun.org/messages \
-F from='Mailgun Sandbox <postmaster@sandbox0d7XXXXXXXXXXXXXXXXXXXXX.mailgun.org>' \
-F to='sample@sample.com' \
-F subject='Hello' \
-F text='Testing some Mailgun awesomeness!'
お試し、届きましたかね?
自分の場合は、/messages
が抜けていたりして、入力するコマンドを何回も確認・修正したら送信・確認できました。
(迷惑メールフォルダに入っていたりするので、そちらも確認してみてください)
Mailgun設定記事で、[DNSレコード作成] の部分です。
Mailgun設定記事では、Route53を使用されていますが、自分は Google Domains で設定しています。
なので、GoogleDomainsでの設定方法を書いておきます。
カスタムリソースレコードに 4つの 項目を追加します。
名前(@):タイプ(A):TTL(1H):データ(IPv4 アドレス)の順に列挙します
- mg:TXT:未入力(空欄で良いです):v=spf1 include:mailgun.org ~all
- smtp._domainkey.mg.sample.com:TXT:未入力(空欄で良いです):k=rsa; p=MIGXXXX(個別の環境で変化します)
- mg:MX:未入力(空欄で良いです):mxa.mailgun.org (この項目ではデータ入力時にプラスで追加して下さい → [mxb.mailgun.org] を 追加します)
- email.mg:CNAME:未入力(空欄で良いです):mailgun.org
Mailgun設定記事にも、ある通り DNS が紐づくまで放置しつつ、たまに [Verify DNS Settings] で確認しましょう。
*自分の場合は、次の部分で間違っていました。
名前(@)の部分に、mg のサブドメイン + sample.com のドメイン まで入力していた。正しくは、mg のサブドメインのみでOK。
下記の記事に助けていただきました。感謝🙏。
value-domainでmaingunのDNS設定をする
どうでしょう。いけましたかね?
Mailgun設定記事を参照して、今回設定する Mailgun の設定は以上です。
Ghost のmail 設定時、Mailgun の画面で参照するのは、次の画面SMTP credentials
です。
以下、表示方法です。
左側サイドバーの Sending欄、Domain settings項目の、右画面のタブ SMTP credentials 項目です。
公式のリンク先で [create a Mailgun account] の項目で表示されているものです。
SMTPの設定をする Mailgun から Ghostへ
SMTP credentials 画面を参照しながら、設定を [docker-compose.yml] へコピーしていきます。
下記の部分です。
mail__options__auth__user: 'postmaster@mg.sample.com'
mail__options__auth__pass: '799XXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXX-XXXXXX'
自分は mail__options__auth__pass
って何? となりましたが、ちゃんと公式では説明されています。
SMTP credentials 画面の [Reset Password] をクリックして下さい。
すると、現在のPassword をコピーできます。
コピーした Password を [docker-compose.yml] に ペーストしてください。
以上で、Mailgun と Ghost の紐付けは終了です。
確認方法ですが、自分の場合は Ghost のLabs でbeta のmember 機能で確認しました。(memberを登録する際に使用するmagic link の mail 部分でerror が出ていたので)
どうでしょう。動いていますかね?
公式にもある通り( [Secure connection]の項目です)、セキュアの設定も出来ます。
[docker-compose.yml] でコメントアウトしていた下記の部分です。
# mail__options__host: smtp.mailgun.org
# mail__options__port: 465
# mail__options__secureConnection: 'true'
コメントアウトを外しましょう。
公式では、”port”: 587
とあるのですが、自分の場合 error になったので、 465
に変更したら 動きました。
下記のやりとりに感謝です🙏。
Signup/login fails in Dawn theme with Portal (Beta) - Members (beta) - Ghost Forum
設定は以上で終了です。お疲れ様でした。
参考
Configuration - Adapt your publication to suit your needs
いますぐ使う Mailgun - Qiita
value-domainでmaingunのDNS設定をする
Signup/login fails in Dawn theme with Portal (Beta) - Members (beta) - Ghost Forum
Local Ghost 3.0 - subscribing does not work - #26 by mindtrades - Members (beta) - Ghost Forum