产品

签名 Webhook

带 HMAC 签名的投递事件。

HMAC-SHA256
// Headers: Postline-Timestamp, Postline-Event-Id, Postline-Signature
signed   = timestamp + "\0" + event_id + "\0" + raw_body
expected = "v1=" + hex(HMAC-SHA256(webhook_secret, signed))
constant_time_compare(expected, Postline-Signature)

// 2xx acknowledges the event. Otherwise up to 6 attempts:
// now, +1m, +5m, +30m, +2h, +8h (15 s timeout each)

事件

每个端点可订阅以下 1–20 种事件类型:

  • email.accepted
  • email.queued
  • email.sent
  • email.delivered
  • email.deferred
  • email.bounced
  • email.complained
  • email.opened
  • email.clicked
  • email.received
  • email.suppressed
  • domain.verified
  • domain.failed

接收方要求

  • 基于原始请求体(raw body)的确切内容计算签名。
  • 以恒定时间(constant time)方式比较签名。
  • 拒绝超出允许时间窗口的 timestamp。
  • 保存 event_id,并确保每个事件只处理一次。
  • 不要假定事件按生命周期顺序到达。

出站控制

创建端点要求使用 HTTPS。私有地址、环回地址(loopback)、link-local 地址、metadata 地址、携带凭据的地址以及内部目标均会被阻止,并在拨号(dial)时重新解析。系统不会跟随重定向。投递采用有限的超时时间与重试次数。

超时与重试

任何 2xx 响应即确认事件。超时(15 秒)、网络错误或其他状态均视为失败。Postline 最多尝试 6 次:首次投递,以及在 1 分钟、5 分钟、30 分钟、2 小时和 8 小时后重试。每次尝试都会记录在投递日志中,任何投递都可以通过 API 或控制台手动重放。