Postmark (ActiveCampaign): Guida tecnica completa per le email transazionali
Di CaptainDNS
Pubblicato il 28 gennaio 2026

- 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.comcon headerX-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.com→pm.mtasv.netper 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 tecnico
| Criterio | API REST | SMTP Relay |
|---|---|---|
| Endpoint | POST https://api.postmarkapp.com/email | smtp.postmarkapp.com porte 587/2525 |
| Autenticazione | Header X-Postmark-Server-Token | Username: API key / Password: API key |
| Destinatari/email | 50 max (To + Cc + Bcc) | 50 max |
| Batch | 500 messaggi/chiamata, 50 MB max | 1 email per connessione |
| Dimensione max | 10 MB per email | 10 MB per email |
| Templates | Mustachio (simile a Handlebars) | Solo contenuto inline |
| Scheduling | Non supportato nativamente | Non supportato nativamente |
| Tracking | Tramite parametri JSON | Tramite header X-PM-* |
| Caso d'uso ideale | App moderne, batch, templates | Legacy, 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:
| Porta | Supporto | Note |
|---|---|---|
| 25 | ✅ | SMTP standard |
| 465 | ❌ | Implicit TLS non supportato |
| 587 | ✅ | Consigliato - porta submission |
| 2525 | ✅ | Porta alternativa |
Metodi di autenticazione: CRAM-MD5 (consigliato), DIGEST-MD5, PLAIN, LOGIN.
Header proprietari X-PM-*:
| Header | Utilizzo | Esempio |
|---|---|---|
X-PM-Tag | Categorizzazione | X-PM-Tag: password-reset |
X-PM-Message-Stream | Specificare lo stream | X-PM-Message-Stream: outbound |
X-PM-Metadata-* | Metadati personalizzati | X-PM-Metadata-user-id: 12345 |
X-PM-TrackOpens | Tracking aperture | X-PM-TrackOpens: true |
X-PM-TrackLinks | Tracking link | X-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.

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.comjan2026pm._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:
| Configurazione | SPF Pass | Allineamento 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.com ≠ captaindns.com).
Strategia consigliata: fare affidamento su DKIM per l'allineamento DMARC, che supporta la modalità strict (adkim=s).
Tabella riepilogativa DNS completa
| Record | Tipo | Hostname | Valore | Obbligatorio |
|---|---|---|---|---|
| DKIM | TXT | [timestamp]pm._domainkey.captaindns.com | k=rsa; p=[chiave-pubblica] | ✅ Consigliato |
| Return-Path | CNAME | pm-bounces.captaindns.com | pm.mtasv.net | Per allineamento DMARC |
| Link Tracking | CNAME | [custom].captaindns.com | [valore-postmark] | Opzionale |
| SPF | TXT | captaindns.com | v=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
| Aspetto | Transazionale | Broadcast |
|---|---|---|
| Utilizzo | Email attivate dall'utente | Email bulk (newsletter) |
| SMTP host | smtp.postmarkapp.com | smtp-broadcasts.postmarkapp.com |
| Link unsubscribe | Opzionale | Obbligatorio |
| Infrastruttura | Pool IP dedicato | Pool IP separato |
| Stream predefinito | outbound | broadcast |
Link unsubscribe obbligatorio (Broadcast)
Per gli stream Broadcast, il link di disiscrizione è obbligatorio:
<a href="{{{ pm:unsubscribe }}}">Annulla iscrizione</a>
Gestione delle disiscrizioni:
UnsubscribeHandlingType: "Postmark": gestito automaticamenteUnsubscribeHandlingType: "None": da gestire manualmente
Limiti dei Message Streams
| Risorsa | Limite |
|---|---|
| Stream per Server | 10 max (contattare supporto per aumentare) |
| Inbound Streams per Server | Solo 1 |
| Nome stream | 100 caratteri max |
| Stream archiviati | Eliminati 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.
| Criterio | Valore |
|---|---|
| Volume minimo | 300.000 email/mese |
| Costo | 50$/IP/mese (nessun costo di setup) |
| IP aggiuntivo | Richiesti 100.000+ messaggi/giorno |
| Warm-up | Automatico, 3-6 settimane |
| Overflow | Instradato 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
| Piano | Prezzo/mese (10K) | Overage /1000 | Server | Domini | Stream | IP dedicato |
|---|---|---|---|---|---|---|
| Free Developer | 0$ | N/A | 10 | 10 | 30 | ❌ |
| Basic | 15$ | 1,80$ | 5 | 5 | 15 | ❌ |
| Pro | 16,50$ | 1,30$ | 10 | 10 | 30 | ✅ (300K+) |
| Platform | 18$ | 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 mensile | Tariffa approssimativa |
|---|---|
| 10.000 | 15-18$/mese |
| 50.000 | 50-60$/mese |
| 125.000 | ~100$/mese |
| 300.000 | ~200$/mese |
| 700.000 | ~400$/mese |
| 5.000.000+ | Tariffazione personalizzata |
Add-on opzionali
| Add-on | Prezzo |
|---|---|
| IP dedicato | 50$/mese/IP |
| Custom Activity Retention | A partire da 5$/mese |
| DMARC Digests | A 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.

Eventi disponibili
| Evento | Descrizione |
|---|---|
| Delivery | Email consegnata al server di destinazione |
| Bounce | Email rimbalzata (hard, soft, transient) |
| Open | Il destinatario ha aperto l'email |
| Click | Il destinatario ha cliccato un link |
| SpamComplaint | Email segnalata come spam |
| SubscriptionChange | Aggiunta/rimozione dalla lista Suppression |
| Inbound | Email 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 webhook | Politica retry |
|---|---|
| Bounce, Inbound | 1 min → 5 min → 10 min (×3) → 15 min → 30 min → 1h → 2h → 6h = 10 retry in ~10,5h |
| Click, Open, Delivery | 1 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
| Limite | Valore |
|---|---|
| Dimensione max email (API) | 10 MB totali |
| Dimensione max batch (Batch API) | 50 MB totali |
| TextBody / HtmlBody | 5 MB ciascuno |
| Storage messaggio | 1 MB (troncato oltre) |
Quote API
| Risorsa | Limite |
|---|---|
| Destinatari per email | 50 max (To + Cc + Bcc) |
| Messaggi per batch | 500 max |
| URL webhook per stream | 10 max |
| Dimensione Tag | 1.000 caratteri |
| Ricerca bounce/messaggi | 10.000 risultati max |
Conservazione dei dati
| Tipo | Durata |
|---|---|
| Conservazione predefinita | 45 giorni |
| Conservazione minima | 7 giorni |
| Conservazione massima | 365 giorni (add-on) |
| Bounce dump | 30 giorni max |
| Statistiche aggregate | Indefinitamente |
| Lista suppressioni | Indefinitamente |
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
| Certificazione | Dettaglio |
|---|---|
| SOC 2 Type 2 | No - certificazioni a livello data center (AWS, Deft) |
| ISO 27017/27018 | Tramite AWS |
| PCI DSS Level 1 | Tramite Stripe (pagamenti) |
GDPR
| Aspetto | Dettaglio |
|---|---|
| DPA disponibile | Sì - con SCC |
| URL DPA | https://postmarkapp.com/dpa |
| Localizzazione dati | USA (nessuna opzione EU) |
| Rappresentante EU | EU-REP.Global |
HIPAA
| Aspetto | Dettaglio |
|---|---|
| Conforme HIPAA | NO |
| BAA disponibile | NO |
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
- Creare un account su https://account.postmarkapp.com/sign_up
- Richiedere l'approvazione tramite "Request approval" (~24h di revisione manuale)
- Verificare il dominio (Sender Signature individuale o dominio completo)
- Configurare i record DNS:
- DKIM: TXT
[timestamp]pm._domainkey.captaindns.com - Return-Path: CNAME
pm-bounces.captaindns.com→pm.mtasv.net
- DKIM: TXT
- Creare un Server API Token in Settings → API Tokens
- Testare con il token di test: utilizzare
POSTMARK_API_TESTcome token per validare senza inviare - Configurare i webhook per bounce e spam complaint
- Monitorare tramite Activity Feed e statistiche
Guide tecniche: altre piattaforme email transazionali
Scopri le nostre guide complete per altre soluzioni email transazionali:
- SendGrid: autenticazione dominio e Web API v3 - DKIM 2048 bit con rotazione, IP dedicato da 50k/mese
- Mailgun: DKIM con rotazione automatica - Return-Path nativo, rotazione DKIM 120 giorni
- Amazon SES: Easy DKIM e Custom MAIL FROM - $0.10/1000 email, 7 regioni EU
- Mailjet: API v3.1 e configurazione DKIM - DKIM 2048/4096 bit, acquisizione Sinch
- Mandrill: integrazione Mailchimp transazionale - Requisito Mailchimp Standard, blocchi da 25k email
- Brevo: configurazione DKIM e SPF - 300 email/giorno gratis, DKIM TXT o CNAME
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


