Brevo SMTP: gids voor installatie, instellingen en probleemoplossing
Stel Brevo SMTP correct in: serverhost, poorten 587, 465 en 2525, SMTP-sleutels, domeinauthenticatie, WordPress en codevoorbeelden, limieten en foutoplossingen.
Brevo SMTP haalt de uitgaande post van een applicatie weg bij de lokale mailagent van een webhost en zet die op infrastructuur die elk bericht authenticeert, logt en rapporteert. De opzet is klein: één hostnaam, één poort, twee inloggegevens. Het fout doen is ook klein, en de manieren waarop het misgaat zijn stil. Deze gids behandelt de instellingen, het model achter de inloggegevens, het DNS-werk dat bezorging mogelijk maakt, en de fouten die je tegenkomt als er iets verkeerd staat. Ben je nog een aanbieder aan het kiezen, dan vergelijkt de bredere gids over SMTP-e-maildiensten eerst de markt.
Wat Brevo SMTP is
Brevo beschrijft Brevo SMTP als zijn SMTP-relaydienst. Je applicatie, website of mailserver geeft een bericht via een geauthenticeerde verbinding door aan de relay, en Brevo neemt de verantwoordelijkheid voor routering, nieuwe pogingen, reputatie en rapportage. Statistieken over doorgestuurde post verschijnen naast de campagnestatistieken, en een hard bounce zet dat contact automatisch op de blokkeerlijst.
De relay is gebouwd voor transactionele berichten: wachtwoordherstel, bonnetjes, orderbevestigingen, accountmeldingen. Is de scheidslijn tussen die berichten en marketingpost nog niet scherp, dan legt wat transactionele e-mail is dat uit.
SMTP of de REST API
Beide paden komen uit bij hetzelfde platform. De praktische verdeling:
| Gebruik SMTP wanneer | Gebruik de REST API wanneer |
|---|---|
| Het systeem alleen SMTP spreekt (WordPress, Postfix, een ERP, een mailclient) | Je de integratie zelf schrijft en gestructureerde foutmeldingen wilt |
| Je een bestaande SMTP-configuratie verhuist en de kortste wijziging wilt | Je batchverzending, planning of idempotentiesleutels nodig hebt |
Eén harde grens: de ontwikkelaarsdocumentatie van Brevo stelt dat de SMTP-relay geen batchverzending ondersteunt en verwijst batchbewerkingen door naar de API-endpoints.
Je SMTP-inloggegevens aanmaken
De SMTP-authenticatie van Brevo gebruikt twee waarden die makkelijk te verwarren zijn met inloggegevens die je al hebt.
Je SMTP-login vinden
Je SMTP-login is niet het e-mailadres van je Brevo-account. Het is een aparte identificatie die in het veld Login staat op de pagina Settings, SMTP and API, in het formaat [email protected].
Daaruit volgen twee regels, allebei uit de probleemoplossingsdocumentatie van Brevo. Zet smtp-relay.brevo.com niet in het veld voor de gebruikersnaam: dat is de relayhost, niet je login. En zet je SMTP-login niet in de From-header, want die authenticeert je in plaats van een afzender te identificeren.
Een SMTP-sleutel genereren
Het wachtwoord is een SMTP-sleutel, niet je accountwachtwoord en niet een API-sleutel.
- Open het accountmenu en kies Settings, daarna SMTP and API.
- Klik onder het tabblad SMTP op Generate a new SMTP key.
- Vernoem de sleutel naar de integratie die hem gaat gebruiken.
- Kies de variant. Standard is de aanbevolen sleutel van 64 tekens; Short is een sleutel van 15 tekens, voor clients die geen lange wachtwoorden aankunnen.
- Stel een geldigheidsduur in tussen 7 dagen en 1 jaar, of kies geen vervaldatum.
- Klik op Generate en kopieer de volledige sleutel meteen.
De volledige sleutel wordt één keer getoond, daarna laat de pagina alleen de laatste paar tekens zien. Raak je hem kwijt, genereer dan een vervanger en werk je configuratie bij.
Verbindingsinstellingen
De waarden die je in elke client of bibliotheek invult:
| Instelling | Waarde |
|---|---|
| SMTP-server | smtp-relay.brevo.com |
| Poort | 587, 465 of 2525 |
| Versleuteling | Laat leeg tenzij je poort 465 gebruikt, die SSL of TLS vereist |
| Gebruikersnaam | Je SMTP-login, formaat [email protected] |
| Wachtwoord | Je SMTP-sleutel |
Een poort kiezen
| Poort | Versleuteling | Wanneer te gebruiken |
|---|---|---|
| 587 | TLS, onderhandeld met STARTTLS | De standaard. Begin hier. |
| 465 | SSL of TLS, impliciet vanaf het verbinden | Wanneer je client een impliciet versleutelde verbinding vereist |
| 2525 | TLS, onderhandeld met STARTTLS | Wanneer je hostingpartij 587 blokkeert |
Brevo raadt 587 aan als standaard. Poort 465 was ooit aangewezen voor SMTP over SSL en later afgeschaft, maar wordt nog breed ondersteund en is de juiste keuze wanneer je de verbinding versleuteld wilt hebben vóór het eerste commando. Poort 2525 is geen bij de IETF of IANA geregistreerde poort, maar de meeste internetaanbieders en cloudpartijen staan hem toe, wat hem tot de nooduitgang maakt als 587 geblokkeerd is.
Het veld voor versleuteling laat mensen struikelen. Brevo zegt je het leeg te laten tenzij je op 465 zit. Dat betekent niet dat de verbinding onversleuteld is: op 587 en 2525 kondigt de server STARTTLS aan en upgradet elke fatsoenlijke client vóór het authenticeren. Het betekent dat je niet “SSL” moet selecteren terwijl je met 587 verbindt, want een poort die niet bij de versleuteling past laat de authenticatie mislukken, zelfs met correcte inloggegevens.
Test de verbinding voordat je code schrijft
Bevestig dat de relay antwoordt en dat TLS tot stand komt voordat je applicatiecode gaat debuggen.
openssl s_client -starttls smtp -crlf -connect smtp-relay.brevo.com:587Een geslaagde handshake eindigt met de 250-lijst met mogelijkheden van de server, waarin STARTTLS en een AUTH-regel met PLAIN en LOGIN horen te staan. Helemaal geen banner is een netwerkprobleem, geen probleem met de inloggegevens.
Je verzenddomein authenticeren
Dit is de stap die mensen overslaan, en die bepaalt of er überhaupt iets aankomt. Sinds 1 februari 2024 is domeinauthenticatie verplicht onder de afzenderseisen van Gmail en Yahoo, en Brevo meldt dat Microsoft op 5 mei 2025 vergelijkbare normen aankondigde. Niet-geauthenticeerde post wordt gefilterd of geweigerd, ongeacht welke relay hem verstuurde.
De records die Brevo vraagt
| Record | Type | Doel |
|---|---|---|
| Brevo code | TXT | Bevestigt dat je het verzenddomein bezit en beheert |
| DKIM | 1 TXT of 2 CNAME | Ondertekent berichten zodat ontvangers wijzigingen onderweg kunnen detecteren |
| DMARC | TXT | Vertelt ontvangende servers hoe ze verdachte post moeten behandelen, met een beleid van none, quarantine of reject |
Brevo kan deze automatisch toevoegen als je vanuit Brevo inlogt bij je domeinaanbieder, of je kopieert de waarden met de hand naar je DNS-zone. Welke DKIM-vorm je krijgt hangt af van het account: twee CNAME-records gebruiken standaard een sleutel van 2048 bit, de enkele TXT-vorm een sleutel van 1024 bit.
Waarom er geen SPF-record is
De FAQ van Brevo is duidelijk: SPF- en MX-records zijn niet nodig om een domein te authenticeren en worden alleen verstrekt bij het inrichten van een dedicated IP. Op gedeelde infrastructuur beheert Brevo het return path, dus DKIM plus de eigendomscontrole draagt de authenticatie. Kom je van een aanbieder die een SPF-include eiste, verzin er dan geen: een overbodige include levert alleen risico op een probleem met de opzoeklimiet.
DMARC doet er nog steeds toe, en Brevo publiceert een werkend startrecord:
v=DMARC1; p=none; rua=mailto:[email protected]Begin op p=none voor geaggregeerde rapporten zonder de bezorging te riskeren, en scherp daarna aan naar quarantine en reject zodra elke legitieme bron uitgelijnd is. Onze gids over bezorgbaarheid van e-mail beschrijft die opbouw.
Verifieer de afzender
Elk From-adres moet een geverifieerde afzender zijn of op een geauthenticeerd domein zitten. Een nieuwe afzender verifieer je met een code van 6 cijfers die naar dat adres gaat, maar afzenders op een geauthenticeerd domein slaan die stap over, en daarom authenticeer je eerst. Gratis maildomeinen kunnen niet worden geauthenticeerd, dus een From-adres op gmail.com of outlook.com wordt geweigerd of gefilterd.
Integraties stap voor stap
WordPress
WordPress geeft uitgaande post door aan wp_mail, dat aanroept wat de host aanbiedt. Die post via Brevo routeren vraagt om een plug-in.
- Ga in de beheerzijbalk naar Plugins en dan Add New Plugin.
- Zoek op Brevo, installeer “Newsletter, SMTP, Email marketing and Subscribe forms by Brevo” en activeer de plug-in.
- Ga naar Brevo, dan Home, en vul je Brevo API key v3 in het activatieveld in. Deze stap gebruikt een API-sleutel omdat de plug-in ook contacten synchroniseert. Klik op Login.
- Zet onder Transactional emails de optie op Yes.
- Kies een bestaande afzender of maak er een aan. Elke WordPress-e-mail gebruikt die afzendernaam en dat adres.
- Vul een adres in en klik op Send email om een test af te vuren.
Twee fouten komen veel voor. Een melding dat transactionele e-mails niet geactiveerd zijn omdat je Brevo SMTP-account niet is geactiveerd, betekent dat de support van Brevo het platform moet aanzetten. Een melding dat SMTP niet gebruikt kan worden omdat wp_mail al door een ander proces is gedeclareerd, wijst op een concurrerende SMTP-plug-in; schakel de andere plug-ins één voor één uit.
Een applicatie aan de serverkant
Het eigen Node.js-voorbeeld van Brevo gebruikt nodemailer en de bovenstaande instellingen:
const nodemailer = require("nodemailer");
const transporter = nodemailer.createTransport({ host: "smtp-relay.brevo.com", port: 587, secure: false, // true voor 465, false voor andere poorten auth: { pass: process.env.BREVO_SMTP_KEY, },});
async function sendOrderConfirmation() { const info = await transporter.sendMail({ subject: "Je bestelling is bevestigd", text: "Bestelling 10482 is bevestigd en wordt binnen twee werkdagen verzonden.", }); console.log("Bericht verstuurd:", info.messageId);}
sendOrderConfirmation().catch(console.error);Let op secure: false op poort 587. Die vlag bepaalt impliciete TLS, niet of de verbinding versleuteld is; nodemailer stuurt nog steeds STARTTLS. Zet hem alleen op true voor 465.
Het Python-equivalent met de standaardbibliotheek:
import smtplib, sslfrom email.message import EmailMessage
msg = EmailMessage()msg["Subject"] = "Je bestelling is bevestigd"msg.set_content("Bestelling 10482 is bevestigd en wordt binnen twee werkdagen verzonden.")
with smtplib.SMTP("smtp-relay.brevo.com", 587, timeout=20) as server: server.starttls(context=ssl.create_default_context()) server.login(BREVO_SMTP_LOGIN, BREVO_SMTP_KEY) server.send_message(msg)Beide lezen de inloggegevens uit de omgeving, en dat is het volgende onderwerp.
Sleutelbeveiliging en rotatie
Brevo behandelt SMTP-sleutels als wachtwoorden. De operationele regels zijn het waard om letterlijk te volgen.
- Eén sleutel per integratie. Vernoem elke sleutel naar het systeem dat hem gebruikt, zodat een lek of een uitfasering precies één ding intrekt.
- Zet een sleutel nooit in je repository. Omgevingsvariabelen, een secrets manager of de configuratieopslag van je platform. Niet in versiebeheer, niet in een gevolgd
.env-bestand, niet in een schermafbeelding. - Roteer zonder downtime. Genereer de vervanger, deploy, bevestig dat verzenden werkt en verwijder daarna de oude sleutel. Verwijderen is onomkeerbaar, en een sleutel verwijderen die nog in gebruik is stopt transactionele verzending onmiddellijk.
- Deactiveer in plaats van verwijderen om een integratie te pauzeren. Sleutels kunnen later weer geactiveerd worden.
- Reken op verval. Sleutels kunnen een geldigheidsduur van 7 dagen tot 1 jaar dragen, en Brevo laat inactieve sleutels na 90 dagen verlopen.
Voor een hardere grens kan Brevo verzoeken van onbekende IP-adressen blokkeren. De toegestane lijst wordt gedeeld tussen API- en SMTP-sleutels, dus alles wat je toestaat geldt voor beide. Wees voorzichtig bij workloads in containers of in de cloud: het uitgaande adres kan een NAT-gateway zijn in plaats van het instance-IP dat je verwacht, en dat verkeerd hebben levert een afwijzing 525 5.7.1 Unauthorized IP address op.
Teams die Brevo naast een webshop, een CRM en een supportdesk draaien, beheren al snel meerdere sleutels, afzenders en domeinen tegelijk. Tajo houdt die configuratie op één plek in plaats van in vier dashboards.
Verzendlimieten en throttling
SMTP-verzending put uit de e-mailcredits van je abonnement. Op het Gratis abonnement betekent dat 300 verzendingen per dag; de limiet wordt dagelijks gereset en ongebruikte verzendingen schuiven niet door. Zodra je hem raakt, houdt Brevo maximaal 1.000 extra e-mails in een wachtrij voor nieuwe pogingen en bezorgt het niets boven die wachtrij. Betaalde abonnementen halen de daglimiet weg, en de Brevo prijzengids splitst de niveaus uit.
Raken de credits helemaal op, dan worden berichten die via SMTP zijn aangeboden gepauzeerd en in de wachtrij gezet in plaats van weggegooid. De achterstand staat onder Transactional, dan Real time, dan Usage and plan, in de sectie Email queue.
Brevo publiceert harde rate limits voor de REST API in plaats van voor de relay. Op het algemene niveau staat POST /v3/smtp/email 1.000 verzoeken per seconde toe, en een limiet overschrijden geeft 429 Too Many Requests. Het API-pad geeft bovendien rate limit-headers terug waarop je je tempo kunt afstemmen, iets wat de relay niet doet.
Bounces en klachten bewaken
Doorgestuurde post is zichtbaar onder Transactional, op de pagina’s Statistics en Logs. De gebeurtenissen die om een reactie vragen:
- Hard bounce. Het adres bestaat niet, en Brevo zet het contact automatisch op de blokkeerlijst.
- Blocked. De ontvanger klaagde eerder, meldde zich af, bouncete hard of werd handmatig geblokkeerd.
- Deferred en soft bounce. De aanbieder accepteerde de verbinding maar stelde het bericht uit of weigerde het. Terugkerende uitstellen bij één aanbieder wijzen op een reputatieprobleem, niet op een codeprobleem.
Logs pollen schaalt niet. Brevo ondersteunt transactionele webhooks die bezorg-, bounce-, open- en klachtgebeurtenissen in realtime naar je endpoint duwen, en zo houd je je eigen onderdrukkingsgegevens actueel.
Het getal om in de gaten te houden is het spamklachtpercentage. Gmail, Yahoo en Microsoft eisen dat afzenders onder 0,3% blijven, en Brevo raadt aan dat te volgen met Gmail Postmaster Tools. Herstellen van een overschrijding duurt veel langer dan hem voorkomen.
Problemen oplossen
535 5.7.8 Authentication failed
De gebruikersnaam of het wachtwoord kon niet worden geverifieerd. Op volgorde van waarschijnlijkheid:
- Het account-e-mailadres is gebruikt in plaats van de SMTP-login in het formaat
[email protected]. smtp-relay.brevo.comis in het veld voor de gebruikersnaam geplakt. Brevo noemt dit een van de meest voorkomende oorzaken.- Er is een API-sleutel gebruikt in plaats van een SMTP-sleutel.
- De sleutel draagt een spatie of regelafbreking aan het eind, meegekomen bij het kopiëren.
- De instelling voor versleuteling past niet bij de poort.
- De sleutel is ongeldig gemaakt na een beveiligingsmelding; genereer in dat geval een nieuwe.
525 5.7.1 Unauthorized IP address
IP-blokkering staat aan en het verbindende adres is niet toegestaan. Voeg het toe, en controleer eerst je echte uitgaande adres als de applicatie achter NAT of op een containerplatform draait.
Geen antwoord en geen banner
Gaat de TCP-verbinding open maar stuurt de server nooit zijn 220-begroeting, dan kan de authenticatie niet beginnen en ligt de fout aan jouw kant van het netwerk. Bedrijfsfirewalls laten de verbinding soms toe en gooien SMTP-verkeer daarna stilletjes weg. AWS, Azure en Google Cloud beperken uitgaand SMTP standaard op nieuwe accounts. Vraag om opheffing van die beperking, of stap over op poort 2525.
450, platform niet geactiveerd
De fout zegt dat je SMTP-account nog niet geactiveerd is of dat je verzendplatform op dit moment uitgeschakeld is. Op een nieuw account vraagt transactionele verzending om een aparte activatiestap bij de support van Brevo. Op een bestaand account betekent het meestal een schorsing, ofwel omdat een onbeschermd formulier door bots is bestookt, ofwel omdat het account tekenen van compromittering vertoonde.
Afzender geweigerd
Controleer drie dingen: het domein is geauthenticeerd, de afzender is geverifieerd, en de From-header is niet je SMTP-login.
Post wordt geaccepteerd maar belandt in spam
Werk in deze volgorde. Bevestig dat het verzenddomein geauthenticeerd is en dat DKIM ondertekent. Bevestig dat het From-domein van jou is en niet van een gratis mailaanbieder. Controleer je klachtpercentage in Postmaster Tools tegen de drempel van 0,3%. Kijk pas naar de inhoud als die controles schoon zijn, want die is bijna nooit de eerste oorzaak.
Dedicated IP-adressen
Een dedicated IP helpt alleen bij hoog en constant volume. Het moet worden opgewarmd voordat je er serieus doorheen verstuurt, en het heeft een verzendsubdomein nodig dat als mailed by- en return path-domein in je headers verschijnt. Dit is de enige configuratie waarin Brevo SPF- en MX-records verstrekt, naast A-, CNAME-, DKIM- en DMARC-records voor dat subdomein.
Twee details laten mensen struikelen. Een dedicated IP dat alleen voor marketing-e-mail is ingericht zet je transactionele berichten in de wachtrij in plaats van ze te versturen, dus schakel het om of koop een tweede IP. En transactioneel van marketing scheiden in de routering vraagt om een pool van minstens twee IP-adressen met verschillende afzenders, zodat zwakke betrokkenheid bij marketingpost bonnetjes en wachtwoordherstel niet omlaag kan trekken.
Het meteen goed doen
Authenticeer het domein, maak een SMTP-sleutel met een naam aan, verbind met smtp-relay.brevo.com op 587 en stuur een test via het echte codepad in plaats van via een knop in het dashboard. Bijna elk later probleem is terug te voeren op een van deze drie dingen.
- De verkeerde waarde in het veld voor de gebruikersnaam of het wachtwoord.
- Een poort en een versleutelingsinstelling die niet bij elkaar passen.
- Een verzenddomein dat nooit is geauthenticeerd.
Krijg je die goed, dan verdwijnt de relay naar de achtergrond, en dat is precies wat transactionele infrastructuur hoort te doen.