Client Onboarding
SMTP Configuration
Configure your application, platform, or MTA to send through your dedicated relay.
Connection settings
Replace placeholder values with your credentials from the portal.
Three port choices matter for different integration scenarios. Port 587 with STARTTLS is the modern default for application-to-MTA submission — this is what MailWizz, sendmail-aware applications, and the major SDKs (PHPMailer, Nodemailer, SendGrid SDK) expect. Port 465 with implicit TLS exists for legacy systems that do not negotiate STARTTLS reliably. Port 25 is unblocked on CSE infrastructure but blocked at most residential ISPs and many cloud providers (AWS, Azure, GCP outbound) — if your application server cannot reach port 25, the originating network is the cause, not CSE.
Authentication is mandatory on all three ports. The credentials from the portal authenticate the submission and bind it to your account for tracking, reputation, and billing. Anonymous SMTP relay is not supported.
MailWizz
Navigate to Backend → Servers → Delivery Servers → Add delivery server, select SMTP type and enter your credentials. Use the Test connection button to verify.
Two MailWizz-specific notes. The "Bounce server" configuration in MailWizz is separate from the SMTP delivery server — it polls a mailbox for bounce notifications via IMAP and is required for proper subscriber-status updates. Without it configured, MailWizz keeps mailing addresses that have hard-bounced, which damages reputation. Second, the "Hourly quota" setting in MailWizz delivery server should match your account's daily rate divided by 24, with a small buffer for burst sending; setting it too high produces 421 rate-limit responses from CSE infrastructure during peaks.
PHPMailer
For production PHPMailer code, also set $mail->SMTPKeepAlive = true when sending in batches — without it, every message opens a new TCP connection, which is wasteful and triggers connection-rate limits faster. Set explicit timeouts ($mail->Timeout = 30) so slow upstream resolution does not block your application thread indefinitely.
Node.js (Nodemailer)
For Nodemailer in production, add pool: true to enable connection pooling, maxConnections: 5 to match the per-IP concurrency you have allocated, and maxMessages: 100 to amortise connection overhead across messages. Without these, Nodemailer opens a new connection per message, which is roughly 3-4x slower than pooled and uses connection-rate budget unnecessarily.
Verifying your first send
Send a test to Gmail and open More → Show original. Look for SPF: PASS, DKIM: PASS, DMARC: PASS. DKIM requires DNS setup first — see the next guide.
If SPF fails, DNS may not have propagated yet. Allow up to 24 hours.