⭐️n8n: メールの導入(SendGrid)

手順

  1. SendGrid で API キーを取得

    • SendGrid にログイン → Settings > API Keys > Create API Key
    • 権限は「Mail Send」のみで OK
    • 生成された API キーをコピーしておく
  2. n8n の環境変数を設定

    docker-compose.yml または .env に以下を追加:

    N8N_EMAIL_MODE=smtp
    N8N_SMTP_HOST=smtp.sendgrid.net
    N8N_SMTP_PORT=465
    N8N_SMTP_SSL=true
    N8N_SMTP_USER=apikey
    N8N_SMTP_PASS=<SendGrid の API キー>
    N8N_SMTP_SENDER=<送信元メールアドレス>
    

    N8N_SMTP_USER は文字列 apikey で固定(SendGrid の仕様)

  3. n8n を再起動

    docker compose down && docker compose up -d
    
  4. 動作確認

    • n8n の管理画面 → Settings > Users からユーザーを招待、またはパスワードリセットを試して、メールが届くことを確認

Q&A

SendGrid のメール送信の流れは?

n8n → SMTP/API → SendGrid サーバー → 宛先メールサーバー → 受信者

n8n はメール送信をあくまで SendGrid に「依頼」するだけで、実際の配送は SendGrid が担う。SendGrid 側でバウンス処理・スパム対策・到達率管理なども行われる。


ポート 465 を使う理由は?

SMTP のポートには主に 3 種類ある:

ポート用途
25サーバー間の転送用(一般的にブロックされる)
587STARTTLS(接続後に暗号化)
465SMTPS(最初から SSL/TLS で暗号化)

465 は接続の最初から暗号化されるため、API キーなどの認証情報を安全に送れる。N8N_SMTP_SSL=true と組み合わせて使う。587 + STARTTLS でも動作するが、465 の方がシンプルで安全。


N8N_SMTP_SENDER には何のアドレスを入れる?

SendGrid で Domain Authentication(送信ドメイン認証) を完了させたドメインのアドレスを使う必要がある。なんでもいいわけではない。

  • noreply@yourdomain.com(自分が所有・認証済みのドメイン)
  • noreply@gmail.com などの他社ドメイン

未認証のドメインを使うとメールが届かない、または迷惑メール扱いになる。Domain Authentication は SendGrid の Settings > Sender Authentication から設定する。


メール送信の詳細な流れは?

① n8n
    ↓ SMTP(API キーで認証)
② SendGrid サーバー
    ↓ 送信元ドメインの DNS を確認(SPF / DKIM で「本物か」検証)
    ↓ 宛先アドレスの DNS を確認(MX レコードで「どのサーバーに届けるか」を調べる)
③ 宛先メールサーバー(例: Gmail のサーバー)
    ↓ SPF / DKIM を検証して迷惑メールでないか判定
④ 受信者の受信箱
  • SPF — 「このドメインからの送信は SendGrid に許可している」と DNS に宣言する仕組み
  • DKIM — メール本文にデジタル署名を付けて「改ざんされていない」ことを証明する仕組み
  • MX レコード — 「このドメイン宛のメールは○○サーバーへ」と DNS に登録した転送先情報。自分で設定する必要はない。 SendGrid が宛先ドメイン(例: gmail.com)の MX レコードを勝手に調べて届けてくれる。MX レコードを自分で設定するのは「自分のドメインでメールを受信したい」場合のみ

STARTTLS とは?

最初は暗号化なしで接続し、途中で「TLS に切り替えよう」と交渉してから暗号化する方式。ポート 587 で使う。接続開始時は平文なので、切り替え前に通信を傍受される理論的リスクがある。


SMTPS とは?

接続の最初から SSL/TLS で暗号化する方式。ポート 465 で使う。STARTTLS のような「途中で切り替え」がないため、よりシンプルで安全。


Domain Authentication(送信ドメイン認証)とは?

「このメールは本当に yourdomain.com から送られた正規のメールです」と証明するための設定。SendGrid の指示に従い、自分のドメインの DNS に SPF・DKIM のレコードを追加するだけで完了する。設定しないと受信側サーバーに「なりすましかも」と判断されて迷惑メールフォルダに入ったり、そもそも届かないことがある。