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 キーで十分です。ドメインを限定したキーは、そのドメインからしか送信できません。
制御ヘッダー
Section titled “制御ヘッダー”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" },});import os, smtplibfrom email.message import EmailMessage
msg = EmailMessage()msg["From"] = "Acme <hello@acme.com>"msg["To"] = "user@example.com"msg["Subject"] = "Hello over SMTP"msg["X-SpacePost-Tags"] = "category=welcome"msg.set_content("It works.")msg.add_alternative("<p>It works.</p>", subtype="html")
with smtplib.SMTP("smtp.spacepost.dev", 25976) as s: s.starttls() s.login("spacepost", os.environ["SPACEPOST_API_KEY"]) s.send_message(msg)swaks --server smtp.spacepost.dev --port 25976 --tls \ --auth-user spacepost --auth-password "$SPACEPOST_API_KEY" \ --from hello@acme.com --to delivered@test.spacepost.dev \ --header "Subject: Hello" --header "X-SpacePost-Tags: category=test" --body "It works."メッセージの対応付け
Section titled “メッセージの対応付け”To、Cc、Reply-Toはヘッダーから取得します。ToやCcにないエンベロープの宛先(RCPT TO)は Bcc になります。- HTML 部分とテキスト部分は保持されます。インライン画像(
Content-ID)を含む添付ファイルに対応しています。 - 件名のないメッセージの件名は
(no subject)になります。 - API と同様に、宛先ごとにクォータが加算されます。
上限とエラーコード
Section titled “上限とエラーコード”| 項目 | 上限 |
|---|---|
| メッセージのサイズ | 40 MB、応答コードは 552 |
| 認証の失敗 | IP ごとに 10 分間で 10 回失敗すると、ブロックされます |
SMTP の応答は、API のエラーに対応しています。
| 状況 | 応答 |
|---|---|
| 1 日または月間のクォータを超過 | 452(一時的: お使いのソフトウェアが後で再試行します) |
| レート制限 | 421 |
From ドメインが未検証 |
553 |
| 制限付きのキー、一時停止中のチーム、検証エラー、ブロックされたコンテンツ | 550 |
| こちら側の一時的な問題 | 451 |