Vai al contenuto principale

Postmark (ActiveCampaign): Guida tecnica completa per le email transazionali

Di CaptainDNS
Pubblicato il 28 gennaio 2026

Dashboard Postmark con Message Streams e configurazione DNS DKIM
TL;DR
  • Postmark, specializzato nel transazionale, acquisito da ActiveCampaign nel 2022, punta sulla deliverability eccezionale con separazione rigorosa transazionale/broadcast tramite Message Streams.
  • API REST semplice su api.postmarkapp.com con header X-Postmark-Server-Token, massimo 50 destinatari per email, 500 messaggi per batch.
  • DKIM 1024 bit con selettore timestampato ([timestamp]pm._domainkey), rotazione manuale trimestrale consigliata.
  • Return-Path personalizzato tramite CNAME pm-bounces.captaindns.compm.mtasv.net per allineamento SPF DMARC solo relaxed (non strict).
  • IP dedicato a 50$/mese a partire da 300K email/mese, warm-up automatico in 3-6 settimane.
  • Piani a partire da 15$/mese per 10K email (Basic), piano Free Developer limitato a 100 email/mese.

Introduzione

Postmark si è costruito una reputazione di eccellenza nelle email transazionali, con una filosofia chiara: la deliverability prima di tutto. Acquisito da ActiveCampaign nel maggio 2022, il servizio rimane un prodotto autonomo, conservando il proprio team e DNA tecnico. La piattaforma gestisce miliardi di email con un focus esclusivo sul transazionale (conferme d'ordine, reimpostazioni password, notifiche).

La particolarità di Postmark risiede nella sua separazione rigorosa tra transazionale e broadcast tramite i Message Streams. Questa architettura garantisce che le email critiche non vengano mai impattate da campagne marketing. Il pool di IP condiviso è attivamente monitorato per mantenere una reputazione impeccabile.

Questa guida è rivolta a sviluppatori, DevOps e architetti di sistema che cercano di integrare Postmark con una comprensione completa dell'infrastruttura: configurazione DNS, scelta API vs SMTP, gestione degli IP, webhook e limiti tecnici.

API REST vs SMTP Relay: architettura e scelta di integrazione

Postmark propone due metodi di integrazione, ciascuno adatto a casi d'uso specifici.

Confronto tra API REST e SMTP Relay Postmark

Confronto tecnico

CriterioAPI RESTSMTP Relay
EndpointPOST https://api.postmarkapp.com/emailsmtp.postmarkapp.com porte 587/2525
AutenticazioneHeader X-Postmark-Server-TokenUsername: API key / Password: API key
Destinatari/email50 max (To + Cc + Bcc)50 max
Batch500 messaggi/chiamata, 50 MB max1 email per connessione
Dimensione max10 MB per email10 MB per email
TemplatesMustachio (simile a Handlebars)Solo contenuto inline
SchedulingNon supportato nativamenteNon supportato nativamente
TrackingTramite parametri JSONTramite header X-PM-*
Caso d'uso idealeApp moderne, batch, templatesLegacy, CMS, server mail esistenti

Quando scegliere l'API REST?

L'API REST è il metodo consigliato per qualsiasi nuova integrazione. Offre un controllo preciso su ogni aspetto dell'invio.

Endpoint principale: POST https://api.postmarkapp.com/email

Header richiesti:

Content-Type: application/json
Accept: application/json
X-Postmark-Server-Token: il-tuo-server-token

Esempio di invio completo:

curl "https://api.postmarkapp.com/email" \
  -X POST \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-Postmark-Server-Token: il-tuo-server-token" \
  -d '{
    "From": "notifications@captaindns.com",
    "To": "client@captaindns.com",
    "Subject": "La tua analisi DNS è pronta",
    "TextBody": "Salve, il tuo report DNS è disponibile.",
    "HtmlBody": "<html><body><strong>Salve</strong>, il tuo report DNS è disponibile.</body></html>",
    "Tag": "dns-report",
    "TrackOpens": true,
    "TrackLinks": "HtmlAndText",
    "MessageStream": "outbound",
    "Metadata": {
      "report_id": "RPT-12345",
      "user_id": "USR-789"
    }
  }'

Risposta attesa (200 OK):

{
  "To": "client@captaindns.com",
  "SubmittedAt": "2026-01-28T10:30:00.1234567-05:00",
  "MessageID": "b7bc2f4a-e38e-4336-af7d-e6c392c2f817",
  "ErrorCode": 0,
  "Message": "OK"
}

Limiti principali:

  • Rate limit: non pubblicato esplicitamente, monitoring interno
  • Destinatari: 50 max per email (To + Cc + Bcc)
  • Batch: 500 messaggi per chiamata, 50 MB totali
  • Dimensione email: 10 MB max

SDK ufficiali: Ruby, .NET, Java, PHP, Node.js. Nessun SDK Python ufficiale (utilizzare postmarker o python-postmark).

Quando scegliere lo SMTP Relay?

Lo SMTP Relay è ideale per sistemi legacy o applicazioni che supportano solo SMTP.

Configurazione ufficiale:

# Transazionale
SMTP server: smtp.postmarkapp.com
Port: 587 (consigliato) o 2525 (fallback)

# Broadcast
SMTP server: smtp-broadcasts.postmarkapp.com
Port: 587 o 2525

# Autenticazione
Username: il-tuo-server-api-token
Password: il-tuo-server-api-token

Porte disponibili:

PortaSupportoNote
25SMTP standard
465Implicit TLS non supportato
587Consigliato - porta submission
2525Porta alternativa

Metodi di autenticazione: CRAM-MD5 (consigliato), DIGEST-MD5, PLAIN, LOGIN.

Header proprietari X-PM-*:

HeaderUtilizzoEsempio
X-PM-TagCategorizzazioneX-PM-Tag: password-reset
X-PM-Message-StreamSpecificare lo streamX-PM-Message-Stream: outbound
X-PM-Metadata-*Metadati personalizzatiX-PM-Metadata-user-id: 12345
X-PM-TrackOpensTracking apertureX-PM-TrackOpens: true
X-PM-TrackLinksTracking linkX-PM-TrackLinks: HtmlAndText

Domain Authentication: DKIM, Return-Path e allineamento DMARC

L'autenticazione del dominio su Postmark si basa su DKIM e un Return-Path personalizzabile. La configurazione avviene in Sender Signatures o Domain Authentication.

Flusso di autenticazione DNS con Postmark

Configurazione DKIM

Postmark genera una chiave DKIM 1024 bit con un selettore unico basato su un timestamp.

Formato del selettore: [timestamp]pm._domainkey.captaindns.com

Esempi di selettori:

  • 20260128pm._domainkey.captaindns.com
  • jan2026pm._domainkey.captaindns.com

Record DNS da creare:

Type: TXT
Hostname: 20260128pm._domainkey.captaindns.com
Value: k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDO...

Caratteristiche:

  • Dimensione chiave: 1024 bit (non 2048)
  • Rotazione: manuale, consigliata trimestralmente
  • API rotation: POST /domains/{domainid}/rotatedkim

La rotazione utilizza il sistema a due selettori: Postmark prepara il nuovo selettore prima di effettuare lo switch, garantendo una transizione senza interruzioni.

SPF: richiesto o no?

SPF non è più richiesto per Postmark. Ecco perché:

Per impostazione predefinita, Postmark utilizza il proprio dominio per il Return-Path:

Return-Path: <pm_bounces@pm.mtasv.net>

I server di destinazione verificano SPF rispetto al dominio Return-Path (pm.mtasv.net), non rispetto al dominio From (captaindns.com). Le email passano automaticamente SPF senza modifiche DNS da parte vostra.

Include opzionale (se si vuole essere espliciti):

v=spf1 a mx include:spf.mtasv.net ~all

Return-Path personalizzato e allineamento DMARC

Per ottenere l'allineamento SPF DMARC, è necessario configurare un Return-Path personalizzato.

Record DNS richiesto:

Type: CNAME
Hostname: pm-bounces.captaindns.com
Value: pm.mtasv.net

Dopo la configurazione:

Return-Path: <pm_bounces@pm-bounces.captaindns.com>

Impatto sull'allineamento DMARC:

ConfigurazioneSPF PassAllineamento DMARC
Return-Path predefinito✅ (dominio Postmark)❌ Fallisce
Return-Path personalizzato✅ (sottodominio cliente)✅ Solo Relaxed

Punto critico: l'allineamento strict (aspf=s) non è possibile con Postmark perché il Return-Path utilizza sempre un sottodominio (pm-bounces.captaindns.comcaptaindns.com).

Strategia consigliata: fare affidamento su DKIM per l'allineamento DMARC, che supporta la modalità strict (adkim=s).

Tabella riepilogativa DNS completa

RecordTipoHostnameValoreObbligatorio
DKIMTXT[timestamp]pm._domainkey.captaindns.comk=rsa; p=[chiave-pubblica]✅ Consigliato
Return-PathCNAMEpm-bounces.captaindns.compm.mtasv.netPer allineamento DMARC
Link TrackingCNAME[custom].captaindns.com[valore-postmark]Opzionale
SPFTXTcaptaindns.comv=spf1 include:spf.mtasv.net ~all❌ Non richiesto

Message Streams: transazionale vs broadcast

Postmark impone una separazione rigorosa tra email transazionali e broadcast tramite i Message Streams. Questa architettura protegge la reputazione delle email critiche.

Architettura degli stream

AspettoTransazionaleBroadcast
UtilizzoEmail attivate dall'utenteEmail bulk (newsletter)
SMTP hostsmtp.postmarkapp.comsmtp-broadcasts.postmarkapp.com
Link unsubscribeOpzionaleObbligatorio
InfrastrutturaPool IP dedicatoPool IP separato
Stream predefinitooutboundbroadcast

Per gli stream Broadcast, il link di disiscrizione è obbligatorio:

<a href="{{{ pm:unsubscribe }}}">Annulla iscrizione</a>

Gestione delle disiscrizioni:

  • UnsubscribeHandlingType: "Postmark": gestito automaticamente
  • UnsubscribeHandlingType: "None": da gestire manualmente

Limiti dei Message Streams

RisorsaLimite
Stream per Server10 max (contattare supporto per aumentare)
Inbound Streams per ServerSolo 1
Nome stream100 caratteri max
Stream archiviatiEliminati dopo 45 giorni

IP condiviso vs IP dedicato

Pool IP condiviso (tutti i piani)

Per impostazione predefinita, tutti i clienti Postmark utilizzano un pool di IP condiviso ad alta reputazione.

Filosofia Postmark: "Un pool IP di alta qualità e alta reputazione offre una deliverability migliore e più affidabile" per la maggior parte dei mittenti.

Caratteristiche:

  • Pool attivamente monitorato
  • Alert automatici per blacklist
  • Nessun warm-up necessario
  • Adatto per la maggior parte dei volumi

IP dedicato

Per grandi volumi, Postmark propone IP dedicati.

CriterioValore
Volume minimo300.000 email/mese
Costo50$/IP/mese (nessun costo di setup)
IP aggiuntivoRichiesti 100.000+ messaggi/giorno
Warm-upAutomatico, 3-6 settimane
OverflowInstradato tramite pool condiviso durante il warm-up

Warm-up automatico:

  • Limiti giornalieri definiti da Postmark
  • Adeguamento in base alla risposta dei destinatari
  • Volume in eccesso inviato tramite pool condiviso
  • Monitoring continuo dal team Postmark

Re-warmup richiesto: se il volume scende sotto 20.000 messaggi/settimana per 4 settimane consecutive.

Reverse DNS: gestito da Postmark (non personalizzabile dal cliente).

Tariffe 2026

Piani e prezzi

PianoPrezzo/mese (10K)Overage /1000ServerDominiStreamIP dedicato
Free Developer0$N/A101030
Basic15$1,80$5515
Pro16,50$1,30$101030✅ (300K+)
Platform18$1,20$✅ (300K+)

Limiti del piano Free Developer:

  • 100 email/mese (limite rigido)
  • Nessun overage possibile
  • Ideale per test e sviluppo

Scaling per volume

Volume mensileTariffa approssimativa
10.00015-18$/mese
50.00050-60$/mese
125.000~100$/mese
300.000~200$/mese
700.000~400$/mese
5.000.000+Tariffazione personalizzata

Add-on opzionali

Add-onPrezzo
IP dedicato50$/mese/IP
Custom Activity RetentionA partire da 5$/mese
DMARC DigestsA partire da 14$/mese/dominio

Regole di conteggio

  • Ogni messaggio inviato = 1 email
  • Ogni indirizzo Cc/Bcc = 1 email aggiuntiva
  • Messaggi sandbox = conteggiati
  • Email non utilizzate = non riportate al mese successivo

Webhook ed eventi

Postmark propone un sistema di webhook completo per seguire il ciclo di vita delle email.

Architettura webhook Postmark

Eventi disponibili

EventoDescrizione
DeliveryEmail consegnata al server di destinazione
BounceEmail rimbalzata (hard, soft, transient)
OpenIl destinatario ha aperto l'email
ClickIl destinatario ha cliccato un link
SpamComplaintEmail segnalata come spam
SubscriptionChangeAggiunta/rimozione dalla lista Suppression
InboundEmail inbound ricevuta e analizzata

Esempio di payload Bounce

{
  "RecordType": "Bounce",
  "ID": 692560173,
  "Type": "HardBounce",
  "TypeCode": 1,
  "Name": "Hard bounce",
  "Tag": "dns-report",
  "MessageID": "2c1b63fe-43f2-4db5-91b0-8bdfa44a9316",
  "ServerID": 23,
  "MessageStream": "outbound",
  "Description": "The server was unable to deliver your message",
  "Email": "invalido@captaindns.com",
  "From": "notifications@captaindns.com",
  "BouncedAt": "2026-01-28T16:09:19Z",
  "Inactive": true,
  "CanActivate": true
}

Politica di retry

Tipo webhookPolitica retry
Bounce, Inbound1 min → 5 min → 10 min (×3) → 15 min → 30 min → 1h → 2h → 6h = 10 retry in ~10,5h
Click, Open, Delivery1 min → 5 min → 15 min = 3 retry

Importante: una risposta HTTP 403 interrompe immediatamente i retry.

Sicurezza: firma HMAC-SHA256

Ogni webhook è firmato con l'header X-Postmark-Signature.

Verifica (Node.js):

const crypto = require('crypto');

function verifyWebhookSignature(payload, signature, secret) {
  const computedSignature = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('base64');
  return crypto.timingSafeEqual(
    Buffer.from(computedSignature),
    Buffer.from(signature)
  );
}

Configurazione tramite API

curl "https://api.postmarkapp.com/webhooks" \
  -X POST \
  -H "Content-Type: application/json" \
  -H "X-Postmark-Server-Token: il-tuo-server-token" \
  -d '{
    "Url": "https://captaindns.com/webhooks/postmark",
    "MessageStream": "outbound",
    "Triggers": {
      "Delivery": { "Enabled": true },
      "Bounce": { "Enabled": true, "IncludeContent": false },
      "SpamComplaint": { "Enabled": true },
      "Open": { "Enabled": true, "PostFirstOpenOnly": true },
      "Click": { "Enabled": true }
    }
  }'

Limiti tecnici e quote

Dimensione dei messaggi

LimiteValore
Dimensione max email (API)10 MB totali
Dimensione max batch (Batch API)50 MB totali
TextBody / HtmlBody5 MB ciascuno
Storage messaggio1 MB (troncato oltre)

Quote API

RisorsaLimite
Destinatari per email50 max (To + Cc + Bcc)
Messaggi per batch500 max
URL webhook per stream10 max
Dimensione Tag1.000 caratteri
Ricerca bounce/messaggi10.000 risultati max

Conservazione dei dati

TipoDurata
Conservazione predefinita45 giorni
Conservazione minima7 giorni
Conservazione massima365 giorni (add-on)
Bounce dump30 giorni max
Statistiche aggregateIndefinitamente
Lista suppressioniIndefinitamente

Templates con Mustachio

Postmark utilizza Mustachio, un linguaggio di templating basato su Mustache con miglioramenti specifici.

Sintassi di base

<!-- Variabile con escape HTML -->
{{ nome }}

<!-- Variabile senza escape (raw) -->
{{{ html_content }}}

<!-- Notazione punto -->
{{ ordine.numero }}

Condizioni (blocchi truthy/falsy)

{{#has_discount}}
  <p>Il tuo sconto: {{ discount_amount }}</p>
{{/has_discount}}

{{^has_discount}}
  <p>Nessuno sconto applicato</p>
{{/has_discount}}

Cicli

{{#each items}}
  <li>{{ name }} - {{ price }} €</li>
{{/each}}

Limiti:

  • Nessuna sintassi if/else esplicita
  • Logica complessa non supportata
  • Tag <link> vietati in <head>
  • CSS automaticamente inlineato all'invio

Sicurezza e conformità

Certificazioni

CertificazioneDettaglio
SOC 2 Type 2No - certificazioni a livello data center (AWS, Deft)
ISO 27017/27018Tramite AWS
PCI DSS Level 1Tramite Stripe (pagamenti)

GDPR

AspettoDettaglio
DPA disponibileSì - con SCC
URL DPAhttps://postmarkapp.com/dpa
Localizzazione datiUSA (nessuna opzione EU)
Rappresentante EUEU-REP.Global

HIPAA

AspettoDettaglio
Conforme HIPAANO
BAA disponibileNO

Postmark dichiara esplicitamente: "Postmark is not HIPAA-compliant so we do not recommend using our platform if you need to send HIPAA-compliant emails".

Autenticazione account

FunzionalitàDisponibilità
2FA✅ Tutti i piani
SSO/SAML❌ Non disponibile

Piano d'azione: integrare Postmark passo dopo passo

  1. Creare un account su https://account.postmarkapp.com/sign_up
  2. Richiedere l'approvazione tramite "Request approval" (~24h di revisione manuale)
  3. Verificare il dominio (Sender Signature individuale o dominio completo)
  4. Configurare i record DNS:
    • DKIM: TXT [timestamp]pm._domainkey.captaindns.com
    • Return-Path: CNAME pm-bounces.captaindns.compm.mtasv.net
  5. Creare un Server API Token in Settings → API Tokens
  6. Testare con il token di test: utilizzare POSTMARK_API_TEST come token per validare senza inviare
  7. Configurare i webhook per bounce e spam complaint
  8. Monitorare tramite Activity Feed e statistiche

Guide tecniche: altre piattaforme email transazionali

Scopri le nostre guide complete per altre soluzioni email transazionali:

FAQ

Postmark è adatto all'email marketing?

No, Postmark è specializzato nelle email transazionali. Le email broadcast (newsletter, annunci) sono supportate tramite Message Streams separati, ma la piattaforma non offre funzionalità di marketing avanzate (segmentazione, A/B testing, automation). Per il marketing, considerate soluzioni dedicate o la piattaforma madre ActiveCampaign.

Qual è la differenza tra Postmark e SendGrid?

Postmark si concentra esclusivamente sulla deliverability transazionale con un pool IP molto controllato. SendGrid offre più flessibilità (DKIM 2048 bit, rate limit pubblicati, più SDK) ma con un posizionamento più generalista. Postmark utilizza chiavi DKIM 1024 bit e non pubblica esplicitamente i propri rate limit.

È possibile utilizzare Postmark con una policy DMARC strict?

Sì, tramite DKIM. L'allineamento DKIM supporta la modalità strict (adkim=s). L'allineamento SPF invece funziona solo in modalità relaxed (aspf=r) perché il Return-Path utilizza un sottodominio. Configurate la policy DMARC per fare affidamento su DKIM: p=reject; adkim=s; aspf=r.

Quanto costa un IP dedicato su Postmark?

50$/mese per IP, senza costi di setup. Condizione: inviare almeno 300.000 email/mese. Il warm-up è automatico in 3-6 settimane. Per un IP aggiuntivo, bisogna superare 100.000 messaggi/giorno.

Esiste un SDK Python ufficiale per Postmark?

No, Postmark non mantiene un SDK Python ufficiale. Le alternative della community consigliate sono postmarker e python-postmark. Gli SDK ufficiali coprono Ruby, .NET, Java, PHP e Node.js.

Postmark è conforme HIPAA?

No. Postmark rifiuta esplicitamente di firmare BAA (Business Associate Agreement). Se dovete inviare PHI (Protected Health Information), utilizzate un'altra soluzione conforme HIPAA.

Glossario

  • Message Stream: flusso di invio separato che permette di isolare le email transazionali dalle broadcast, ciascuno con il proprio pool di IP e le proprie metriche
  • Sender Signature: verifica di un indirizzo email mittente individuale, alternativa alla verifica del dominio completo
  • Return-Path: indirizzo di bounce (Envelope From) utilizzato dai server di destinazione per SPF e le notifiche di bounce
  • Mustachio: linguaggio di templating di Postmark basato su Mustache, con supporto per condizioni, cicli e variabili

Fonti ufficiali

Articoli simili