Integrations
It isn't only copiers. Half your building sends email.
Backup software, the NAS, the accounting package, the alarm system, a WordPress contact form, a script somebody wrote in 2014. All of them stopped working for the same reason, and all of them fix the same way. Here's the exact configuration for each.
The settings, once
Everything below is the same handful of values in a different box. Your console has your account's exact credentials.
| Server | mail.send25.net |
|---|---|
| Port | 587 |
| Encryption | STARTTLSSome software calls this "TLS", or just "yes". It is not the same as SSL/465, which we don't offer. |
| Authentication | Username and password, from your console |
| From address | Any address at a domain you've verifiedThe display name is yours to choose — Accounts Payable <billing@yourdomain.com>. |
Old equipment that can't do TLS or authentication? That's what port 25 is for. We allow-list your building's IP address instead, so the device needs no credentials at all. Ask us to add your address — it's the standard answer for hardware too old to be updated, and it's why we still run port 25 when most services won't.
Applications
The ones we're asked about most. If yours isn't here, the settings above go in whatever it calls its SMTP page — and we'll happily walk through it with you.
WordPress WP Mail SMTP, FluentSMTP, Post SMTP
WordPress's built-in wp_mail() hands mail to PHP's mail(), which sends straight from your web host — unauthenticated, from an IP with no reputation. It is the single most common reason contact-form mail vanishes. Any SMTP plugin fixes it.
- Install WP Mail SMTP (or FluentSMTP — either is fine).
- Choose Other SMTP as the mailer.
- Enter the settings below and send the plugin's test email.
SMTP Host mail.send25.net Encryption TLS (this means STARTTLS) SMTP Port 587 Authentication ON SMTP Username (from your console) SMTP Password (from your console) From Email forms@yourdomain.com From Name Your Company Website
Synology NAS DSM 7
- Control Panel → Notification → Email.
- Tick Enable email notifications.
- Choose Custom SMTP server from the provider list.
- Fill in the fields, then Send a test email.
SMTP server mail.send25.net SMTP port 587 Secure connection TLS/STARTTLS (tick) Requires authentication (tick) Username / Password (from your console) Sender email nas@yourdomain.com
Veeam Backup & Replication
- Main menu → Options → Notifications → Email Settings.
- Tick Enable email notifications.
- Add the SMTP server, then Advanced for the port and TLS.
- Use Test Message before saving.
SMTP server mail.send25.net Port 587 Connect using STARTTLS (or "Use secure connection") Authentication (tick) — username + password from your console From backup@yourdomain.com To whoever should read it
UniFi Network Controller and UniFi OS
- Settings → System → Notifications (older versions: Settings → Email Server).
- Choose Custom SMTP.
Host mail.send25.net Port 587 Enable SSL OFF (587 uses STARTTLS, not SSL) Enable Auth ON Username/Password (from your console) Sender address unifi@yourdomain.com
Home Assistant
Add to configuration.yaml and restart:
notify:
- name: send25
platform: smtp
server: mail.send25.net
port: 587
timeout: 15
encryption: starttls
username: !secret send25_user
password: !secret send25_pass
sender: ha@yourdomain.com
recipient:
- you@yourdomain.com
sender_name: Home AssistantGrafana, Jira, GitLab and similar self-hosted tools
Nearly all of these expose the same five settings. Grafana's grafana.ini is representative:
[smtp] enabled = true host = mail.send25.net:587 user = (from your console) password = (from your console) startTLS_policy = MandatoryStartTLS from_address = grafana@yourdomain.com from_name = Grafana
Accounting and line-of-business software Sage, QuickBooks, ERP systems
These vary far too much for us to give you exact menu paths without guessing, and a wrong instruction wastes more of your time than none at all. What's consistent is what they ask for:
| Server / host | mail.send25.net |
|---|---|
| Port | 587 |
| Security / encryption | TLS or STARTTLS — not SSL |
| Authentication | On, with your console credentials |
| From / reply address | An address at your verified domain |
Look for a menu called Email Setup, Email Defaults, SMTP or Send Options. If the software only offers "Outlook" or "Webmail" as choices, look for an Other / Custom SMTP option — it's usually there but not first in the list.
Tell us what you're running and we'll work it out with you. Invoices going out from the accounting package is usually the reason people call us in the first place, and it's the one worth getting right.
Code and scripts
Working examples. Put the credentials in your environment or a secrets store, not in the file.
PowerShell Windows
$cred = Get-Credential # or build from a secret store Send-MailMessage ` -SmtpServer mail.send25.net ` -Port 587 ` -UseSsl ` -Credential $cred ` -From "alerts@yourdomain.com" ` -To "you@yourdomain.com" ` -Subject "Nightly job finished" ` -Body "All good."
Python
import os, smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg["From"] = "Alerts <alerts@yourdomain.com>"
msg["To"] = "you@yourdomain.com"
msg["Subject"] = "Nightly job finished"
msg.set_content("All good.")
with smtplib.SMTP("mail.send25.net", 587, timeout=30) as s:
s.starttls() # required on 587
s.login(os.environ["SEND25_USER"], os.environ["SEND25_PASS"])
s.send_message(msg)PHP PHPMailer
$mail = new PHPMailer\PHPMailer\PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'mail.send25.net';
$mail->Port = 587;
$mail->SMTPSecure = PHPMailer\PHPMailer\PHPMailer::ENCRYPTION_STARTTLS;
$mail->SMTPAuth = true;
$mail->Username = getenv('SEND25_USER');
$mail->Password = getenv('SEND25_PASS');
$mail->setFrom('forms@yourdomain.com', 'Your Company');
$mail->addAddress('you@yourdomain.com');
$mail->Subject = 'Website enquiry';
$mail->Body = 'Someone filled in the form.';
$mail->send();Node.js Nodemailer
import nodemailer from "nodemailer";
const transport = nodemailer.createTransport({
host: "mail.send25.net",
port: 587,
secure: false, // false = STARTTLS on 587. NOT "no encryption".
requireTLS: true, // refuse to send if STARTTLS fails
auth: { user: process.env.SEND25_USER, pass: process.env.SEND25_PASS },
});
await transport.sendMail({
from: '"Alerts" <alerts@yourdomain.com>',
to: "you@yourdomain.com",
subject: "Nightly job finished",
text: "All good.",
});Bash / cron msmtp
The tidiest way to give a Linux box outbound mail without running a mail server.
defaults auth on tls on tls_starttls on logfile ~/.msmtp.log account send25 host mail.send25.net port 587 from server@yourdomain.com user (from your console) password (from your console) account default : send25
Then:
echo "Backup finished" | msmtp -s "Nightly backup" you@yourdomain.com
Relaying from a mail server
If you already run a mail server and just want its outbound mail to leave through us.
Postfix smarthost / relayhost
relayhost = [mail.send25.net]:587 smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = encrypt smtp_tls_note_starttls_offer = yes
[mail.send25.net]:587 username:password
sudo postmap /etc/postfix/sasl_passwd sudo chmod 600 /etc/postfix/sasl_passwd* sudo systemctl reload postfix
Microsoft 365 connector
Only needed if you want M365 to route outbound mail through us — most customers don't, and point their devices at us directly instead while leaving staff mail alone. That's simpler, and it's what we'd normally suggest.
- Exchange admin center → Mail flow → Connectors.
- New connector: from Office 365 to Partner organization.
- Route through the smart host mail.send25.net.
- Require TLS.
What not to send through us
We'd rather tell you now than suspend your account later. This is not fine print — it's how the service stays reliable for everyone on it.
| Yes | Scans, invoices, statements, purchase orders, alerts, backup reports, monitoring, password resets, form notifications, appointment reminders, receipts |
|---|---|
| No | Marketing campaigns, newsletters, anything to a purchased or scraped list, bulk mail to people who didn't ask for it |
The line isn't about volume, it's about whether the recipient expects the message. A thousand invoices a day is fine. Two hundred newsletters to a list you bought is not — and it's the second one that gets a sending IP blocklisted, taking everyone else's invoices down with it.
If you need to send newsletters, use a platform built for it. We'll tell you that on the first call rather than take the business and deal with the fallout later. It's also why we cap volume per customer: the caps protect the customers who are already here.
What happens when you hit your limit. By default we defer rather than reject — your device is told to try again shortly, and the mail goes out once the window rolls over. Nothing is lost. If you'd rather have a hard failure so a runaway system is obvious immediately, we can set that instead; some customers prefer knowing loudly.