SMTP relay
Point any mail library at smtp.koltrix.com:2525 and authenticate with your
API key. Identical pipeline to the REST API — same bounce handling,
suppression, tracking, and webhooks.
Connection details
| Setting | Value |
|---|---|
| Host | smtp.koltrix.com |
| Port | 2525 |
| Security | STARTTLS not yet required at :2525 (TLS termination in front of the cluster) |
| Auth | AUTH PLAIN or AUTH LOGIN |
| Username | apikey |
| Password | Your full kx_… key (with send scope) |
Python (stdlib)
import smtplib, email.message, os
msg = email.message.EmailMessage()
msg["From"] = "[email protected]"
msg["To"] = "[email protected]"
msg["Subject"] = "Hello via SMTP"
msg.set_content("Plain body")
msg.add_alternative("<p>HTML body</p>", subtype="html")
with smtplib.SMTP("smtp.koltrix.com", 2525) as s:
s.login("apikey", os.environ["KOLTRIX_KEY"])
s.send_message(msg)Node (nodemailer)
import nodemailer from "nodemailer";
const t = nodemailer.createTransport({
host: "smtp.koltrix.com",
port: 2525,
auth: { user: "apikey", pass: process.env.KOLTRIX_KEY! },
});
await t.sendMail({
from: "[email protected]",
to: "[email protected]",
subject: "Hello via SMTP",
html: "<p>HTML body</p>",
});PHP
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = "smtp.koltrix.com";
$mail->Port = 2525;
$mail->SMTPAuth = true;
$mail->Username = "apikey";
$mail->Password = getenv("KOLTRIX_KEY");
$mail->setFrom("[email protected]");
$mail->addAddress("[email protected]");
$mail->Subject = "Hello via SMTP";
$mail->msgHTML("<p>Hi</p>");
$mail->send();When to use SMTP vs REST
- REST wins when: you need
Idempotency-Key, structured error responses, or want to send to many recipients with metadata. - SMTP wins when: you have legacy code or a library that already speaks SMTP, or your customer needs to point a third-party tool at us.
Either way, every send shows up under Settings → Email logs.