SMTP relay — LoopNow developer docs
LoopNow SMTP relay: smtp.loopnow.in on port 587 with STARTTLS, supported AUTH mechanisms, sending limits per plan, swaks test command, SendGrid/Pepipost/Postmark migration.
On this page
When to use SMTP vs the API
Use the API for anything new. SMTP is the fallback for:
- Legacy applications that already speak SMTP and cannot be easily modified to call an API.
- On-prem appliances and monitoring tools (network hardware, CCTV systems, alarm panels) that only have an SMTP settings UI.
- WordPress sites using a plugin that only supports SMTP transport.
- Local development environments where you do not want to install the SDK.
The trade-off: SMTP is fire and forget. The API gives you per-message delivery receipts, bounce webhooks, idempotency keys, and structured error handling. SMTP cannot do any of that. The loopnow SMTP server will accept your message, hand it to the queue, and return a 250 OK — but you will not know if the message actually delivered, bounced, or was marked as spam, unless you also subscribe to webhooks.
Credentials
You get SMTP credentials in Settings → Sending → SMTP credentials. The credentials are workspace-scoped and look like:
Host: smtp.loopnow.in
Port: 587 (STARTTLS) or 465 (TLS)
Username: ln_smtp_xxxxxxxxxxxxxxxxxxxx
Password: (shown once, store securely)
You can create up to 5 SMTP credentials per workspace. Each is independent — rotate, revoke, or scope to a specific sub-account without affecting the others.
For TLS, port 465 is direct TLS (the connection starts in TLS). Port 587 with STARTTLS starts as plain text and upgrades to TLS via the STARTTLS command. Use 587 unless your application specifically requires 465. STARTTLS is more widely supported and is the modern best practice.
Supported AUTH mechanisms
LoopNow's SMTP server supports the following AUTH mechanisms:
- LOGIN — the most widely supported. Used by every legacy application.
- PLAIN — simpler than LOGIN, requires TLS in transit.
- CRAM-MD5 — challenge-response, no plaintext password. Useful for very old clients that cannot do TLS.
- XOAUTH2 — for OAuth-secured sending. LoopNow supports OAuth 2.0 SMTP on Scale plans; contact support@loopnow.in to enable.
The server advertises the supported mechanisms in response to the EHLO command. Clients pick the most secure mutually-supported mechanism.
Sending limits
| Plan | Messages / day | Messages / hour | Concurrent connections |
|---|---|---|---|
| Free (when available) | 100 | 20 | 2 |
| Starter | 10,000 | 1,000 | 5 |
| Scale | 100,000 | 10,000 | 20 |
| Enterprise | unlimited | unlimited | custom |
Daily and hourly limits are sliding windows, not hard cutoffs. If you send 10,000 messages in the first hour of the day and then try to send 1,000 more in the second hour, the second batch is delayed (not rejected) until the hourly window has space. This keeps your application retrying without immediate rejection.
Concurrent connections are a hard cap. If you open more, the server will accept them but queue them.
Test command (swaks)
The easiest way to verify your SMTP setup is with swaks (Swiss Army Knife for SMTP). Install it with brew install swaks on macOS, apt install swaks on Debian/Ubuntu, or download from the GitHub releases.
swaks \
--from "you@yourdomain.in" \
--to "test-recipient@example.com" \
--server smtp.loopnow.in \
--port 587 \
--auth-user "ln_smtp_xxxxxxxxxxxxxxxxxxxx" \
--auth-password "your_smtp_password" \
--tls \
--body "Hello from LoopNow SMTP" \
--header "Subject: Test from swaks"
Expected output ends with 250 OK. The recipient's inbox should have the message within a few seconds. If you get 535 Authentication failed, your username or password is wrong. If you get 554 Message rejected, your sending domain is not verified — add it to your workspace first.
Migrating from SendGrid / Pepipost / Postmark SMTP
The migration is usually a configuration change, not a code change.
From SendGrid
SendGrid SMTP host is smtp.sendgrid.net on port 587. LoopNow's equivalent is smtp.loopnow.in on port 587. Change the host and the credentials in your application; everything else (the message body, the From/To headers, attachments) is the same. The one SendGrid-specific thing to remove: SendGrid's X-SMTPAPI header. LoopNow does not parse that header; if you need batch send with merge variables, use the API instead.
From Pepipost / Netcore
Pepipost SMTP host is smtp.pepipost.com on port 587. Same migration pattern. Note: Pepipost was rebranded to Netcore Email API in 2023 and the SMTP service was deprecated. If you are still pointing at the Pepipost host, this is a good time to move.
From Postmark
Postmark SMTP host is smtp.postmarkapp.com on port 587. Same migration. Postmark uses PLAIN AUTH by default; LoopNow supports it.
Custom headers and X-headers
LoopNow preserves any custom headers your application adds. X- prefixed headers are passed through unchanged.
Two headers that LoopNow adds automatically — you should not try to set these yourself:
List-Unsubscribe— set to your workspace's unsubscribe endpoint.List-Unsubscribe-Post—List-Unsubscribe=One-Click.
LoopNow also sets DKIM-Signature, ARC-Seal, ARC-Message-Signature, and ARC-Authentication-Results based on the sending domain. Setting these manually will break signing and cause your messages to fail DMARC.
Troubleshooting
535 Authentication failed
Wrong username or password. Reset the credential in Settings → SMTP credentials and try again. SMTP credentials are not the same as API keys.
554 Message rejected: sender not verified
The From: address is using a domain that is not verified in your workspace. Add the domain in Settings → Sending domains, publish the DNS records, and wait for verification (usually under an hour).
454 Throttling, try again later
You hit the hourly or daily limit. Wait, or upgrade your plan.
Connection times out
Your network cannot reach smtp.loopnow.in on port 587. Check your firewall, security group, or ISP blocks. From AWS Mumbai, the route is direct; from corporate networks you may need to allow-list the IP ranges listed in the trust center.
Troubleshooting continued
STARTTLS not supported by client
Some very old clients do not advertise STARTTLS support. The connection will start as plain text and the server will not upgrade. The server logs the event with STARTTLS_NOT_NEGOTIATED. The fix is to upgrade the client, or to use port 465 (direct TLS) if the client supports it.
DKIM failures
If your outgoing email is failing DKIM, the most common cause is a missing or mis-configured DKIM record on your sending domain. Run dig TXT loopnow1._domainkey.yourdomain.in and verify the record matches what the dashboard shows. If the record is correct but DKIM is still failing, check that the signing is enabled in the dashboard (Settings → Sending domains).
Open relay concerns
LoopNow's SMTP server is not an open relay. It only accepts mail from authenticated connections with a valid From: address on a verified sending domain. If you see a 554 error mentioning "open relay," check that your From: address is on a domain you have verified.
Next steps
- REST API — if you can use the API instead, prefer it.
- Webhooks — for delivery receipts that SMTP cannot give you.
- Python SDK or Node SDK — both wrap the API.