コンテンツにスキップ

SMTP リレー

SMTP リレーを使うと、SMTP しか話せないソフトウェア(CMS、認証プロバイダー、フレームワーク、レガシーなアプリ)から SpacePost 経由で送信できます。メッセージは API と同じパイプラインを通ります。ドメインのチェック、送信停止リスト、クォータ、追跡、Webhook です。

設定 値
ホスト smtp.spacepost.dev
ポート 25976
セキュリティ STARTTLS、認証の前に必須
ユーザー名 spacepost(移行用に、別名 resend も受け付けます)
パスワード API キー(sp_live_...)

TLS なしで接続し、ログインの前に STARTTLS でアップグレードしてください。証明書は smtp.spacepost.dev に対して有効です。暗黙的 TLS(ポート 465)はまだ提供していないため、ほとんどのクライアントでは「SSL」ではなく「STARTTLS」または「TLS」を選んでください。

From アドレスは、検証済みドメインのものである必要があります。sending_access キーで十分です。ドメインを限定したキーは、そのドメインからしか送信できません。

SMTP にフィールドがない機能を使うには、メッセージにこれらのヘッダーを追加します。SpacePost が処理し、受信者には配信されません。

ヘッダー 例 効果
X-SpacePost-Tags category=welcome, user_id=u_1042 タグを追加します。カンマ区切りの name=value のペアで、使える文字のルールは API と同じです。
X-SpacePost-Scheduled-At 2026-11-01T09:00:00Z または in 1 hour メールをスケジュールします(最大 30 日先)。

その他の X-* ヘッダー、List-Unsubscribe、List-Unsubscribe-Post、In-Reply-To、References は、カスタムヘッダーとして転送されます。

import nodemailer from "nodemailer";
const transport = nodemailer.createTransport({
host: "smtp.spacepost.dev",
port: 25976,
secure: false, // STARTTLS: the connection is upgraded to TLS before login
requireTLS: true,
auth: { user: "spacepost", pass: process.env.SPACEPOST_API_KEY },
});
await transport.sendMail({
from: "Acme <hello@acme.com>",
to: "user@example.com",
subject: "Hello over SMTP",
html: "<p>It works.</p>",
headers: { "X-SpacePost-Tags": "category=welcome", "X-SpacePost-Scheduled-At": "in 10 minutes" },
});
  • To、Cc、Reply-To はヘッダーから取得します。To や Cc にないエンベロープの宛先(RCPT TO)は Bcc になります。
  • HTML 部分とテキスト部分は保持されます。インライン画像(Content-ID)を含む添付ファイルに対応しています。
  • 件名のないメッセージの件名は (no subject) になります。
  • API と同様に、宛先ごとにクォータが加算されます。
項目 上限
メッセージのサイズ 40 MB、応答コードは 552
認証の失敗 IP ごとに 10 分間で 10 回失敗すると、ブロックされます

SMTP の応答は、API のエラーに対応しています。

状況 応答
1 日または月間のクォータを超過 452(一時的: お使いのソフトウェアが後で再試行します)
レート制限 421
From ドメインが未検証 553
制限付きのキー、一時停止中のチーム、検証エラー、ブロックされたコンテンツ 550
こちら側の一時的な問題 451