Kurocoからのメール送信に任意のメール配信サービスを使用する(blastengine)
概要
トリガ「デフォルトのメール送信方法(SendGrid)を代替」を利用すると、SendGridの代わりに、blastengine、Mailchimp、Amazon SESなどの任意のメール配信サービスを利用して、通知や招待のメールを送信できます。
本チュートリアルではその例として、SendGridによるメール送信をblastengineに代替する手順を紹介します。
学べること
以下の手順で任意のメール配信サービスを使用したメール送信を実装します。
前提条件
本チュートリアルではメールの送信にblastengine(ブラストエンジン)を使用します。
サービスの詳細はblastengineとそのAPIドキュメントを確認してください。
また、SPF/DKIMの設定をするのでfromのメールに使用するドメインは自身が所有しているものを利用することとします。
SendGridを利用しない場合、配信のトラッキング機能(配信、メールバウンス、開封率、クリック数)はご利用できませんのでご注意ください。
blastengineの設定
まずはblastengineにアクセスして、無料トライアルに登録します。
トライアルアカウントにログインしたら[API連携で試す]タブの[アドレス登録]をクリックして、blastengineからの配信を許可するアドレスを入力します。
続いて、APIキーの取得をします。
[設定ページ]をクリックしてblastengineの設定ページに遷移します。
APIキーの[確認・再発行]をクリックします。
APIキーが表示されるのでメモします。
また、アカウント管理のページにアクセスし、IDをメモします。
Kurocoの設定
シークレットを登録する
Kurocoの管理画面にアクセスし、[環境設定] -> [シークレット]をクリックします。
[追加]をクリックします。
以下のblastengineの管理画面で確認したAPIキーと、IDを登録します。
項目 | 値 |
---|---|
名前 | BLASTENGINE_API_KEY |
値 | blastengineのAPIキー |
項目 | 値 |
---|---|
名前 | BLASTENGINE_ID |
値 | blastengineのID |
以上でblastengineを利用する準備が整いました。
カスタム処理を登録する
blastengineを利用する準備ができたら、SendGridによるメール送信をblastengineに代替するカスタム処理を書きます。
[オペレーション] -> [カスタム処理]をクリックします。
[追加]をクリックします。
以下のように設定します。
項目 | 値 |
---|---|
タイトル | sending_email_with_blastengine |
識別子 | sending_email_with_blastengine |
トリガ | デフォルトのメール送信方法(SendGrid)を代替 |
処理 | 以下の内容 |
{* Create BearerToken *}
{secret var='apiKey' key='BLASTENGINE_API_KEY'}
{secret var='id' key='BLASTENGINE_ID'}
{rcms_hash var='token' data="`$id``$apiKey`" algo="sha256"}
{assign var='BearerToken' value=$token|strtolower|base64_encode}
{* Set Request Headers *}
{append var=headers value="Authorization: Bearer `$BearerToken`"}
{append var=headers value="Content-Type: application/json"}
{append var=headers value="Accept-Language: ja-JP"}
{* Set Body *}
{assign var='body' value=$payload|@json_decode}
{assign var='body.from.email' value="noreply@kuroco-mail.app"}
{* Send Request *}
{api
endpoint="https://app.engn.jp/api/v1/deliveries/transaction"
method='POST'
headers=$headers
body=$body
var=response
status_var=status
}
{logger msg1="blastengine_mail_log" msg2=$body msg3=$response}
{assign var='is_mail_sent' value=true}
noreply@kuroco-mail.app
の部分は自身のメールアドレスに変更してください。
入力ができたら[追加する]をクリックしてカスタム処理を追加します。
動作の確認
実際にKurocoからのメールを送信してみます。
動作の確認のため、パスワードリマインダーを使用してみます。
Kurocoのログイン画面にアクセスし、[パスワードを忘れた場合はこちら]をクリックします。
blastengineからの配信を許可したメールアドレスを入力して、[送信する]をクリックします。
届いたメールを確認すると、fromがカスタム処理内のメールアドレスになっており、besender-s.jp 経由
の表示が確認できます。
また、blastengineの配信ログを確認すると、該当のメールがblastengineから送られたことが分かります。
メールの到達率を上げる
ここまでで、blastengineを利用したメールの送信はできていますが、 送信したメールが迷惑メールと判断されるのを防ぐために、SPFレコードとDKIMの設定をしてメール認証を実施します。
メール認証を実施することで、メールのなりすましを防ぎ、実際にメールを送信したのがドメイン所有者であると判断できます。
SPF/DKIMの設定がされていないメールに対する処理が年々厳しくなっていますので必ず実施するようにしてください。
SPFレコードを設定する
ドメイン管理サービスで以下のTXTレコードを設定します。
ホスト名 | TYPE | VALUE |
---|---|---|
空欄 | TXT | v=spf1 include:spf.besender.jp ~all |
設定ができたらMxToolboxのSPF Record Checkで、正しく設定されているか確認します。
DKIMを設定する
次にDKIMの設定をします。
まず、公開鍵・秘密鍵のペアを準備し、blastengineに秘密鍵を設定します。
秘密鍵・公開鍵の生成
秘密鍵はローカル環境でOpenSSLのコマンドラインツールを使用して、生成します。
まず、ターミナル開いて以下のコマンドでOpenSSLが利用可能か確認します。
openssl version
Windowsの場合などでOpenSSLがインストールされていない場合は別途インストールしてください。
次に以下のコマンドで秘密鍵を作成します。
openssl genpkey -algorithm RSA -out private_key.pem
公開鍵は、OpenSSLを使用して、秘密鍵から抽出します。
以下がそのコマンドです。
openssl rsa -pubout -in private_key.pem -out public_key.pem
blastengineに登録
作成した秘密鍵をblastengineに登録します。
blastengineの設定ページにアクセスしてDKIM作成者署名の設定の[確認・変更]をクリックします。
DKIM作成者署名の設定が表示されるので、新規登録をクリックし、以下を設定します。
項目 | 値 |
---|---|
セレクタ | kuroco |
ドメイン | fromメールで利用するドメイン |
秘密鍵 | 先ほど作成した-----BEGIN PRIVATE KEY----- から始まる秘密鍵 |
入力が完了したら[確認]をクリックして登録します。
DNSを設定
ドメイン管理サービスで以下のTXTレコードを設定します。
ホスト名 | TYPE | VALUE |
---|---|---|
kuroco._domainkey | TXT | v=DKIM1; k=rsa; p=公開鍵の-----BEGIN PUBLIC KEY-----と-----END PUBLIC KEY-----を抜いた部分 |
VALUEの長さが設定できる文字数を超える場合はTXTレコードを分割して登録する必要があります。
対応が必要な場合はドメイン管理サービスに問い合わせて設定してください。
設定ができたらMxToolboxのDKIM Record Lookupで、正しく設定されているか確認します。
再度Kurocoからのメールを送信して確認すると、fromがカスタム処理内のメールアドレスになっており、今度はbesender-s.jp 経由
の表示が無いことを確認できます。
以上で、任意のメール配信サービスを利用する設定は完了です。
関連ドキュメント
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。