Give your team real mailboxes at yourdomain.com — send and receive, connect any IMAP client (Apple Mail, Thunderbird, mobile) with an app password, and manage it all from one dashboard. No mail server to run.
Addresses at your own domain, aligned with SPF/DKIM so mail authenticates as you — not a mailbox on someone else's consumer domain.
Connect Apple Mail, Thunderbird, or a phone with an app password over IMAPS. People use the mail app they already know.
Outbound goes through the same Send API and quota as inbound — one account for the whole mail flow, no second vendor.
Create mailboxes, issue and revoke app passwords, and watch delivery from one console — no mail server, no per-seat mail host to license.
Add MX (inbound) and SPF/DKIM (outbound) records. MailKite checks them and unlocks send + receive for the domain.
Add the addresses your team needs — you@, sales@, hello@ — from the dashboard. Catch-all is one toggle if you want everything.
Generate an app password and sign in from any IMAP client, or use the open-source webmail UI.
Standard IMAPS — the same address and app password open in Apple Mail, Thunderbird, mobile, the open-source webmail UI, or any language's IMAP library.
Dashboard → Mailboxes → you@yourdomain.com
Click [ + App password ] (copy it — shown once)
Point any mail app at:
Incoming IMAP imap.mailkite.dev : 993 (TLS)
Username you@yourdomain.com
Password <the app password>
Outbound goes through the Send API or the SMTP relay,
SPF/DKIM aligned to your domain.import { ImapFlow } from "imapflow";
const client = new ImapFlow({
host: "imap.mailkite.dev",
port: 993,
secure: true,
auth: { user: "you@yourdomain.com", pass: process.env.MAILKITE_IMAP_PASSWORD },
});
await client.connect();
const lock = await client.getMailboxLock("INBOX");
try {
for await (const msg of client.fetch({ seen: false }, { source: true })) {
handle(msg.source);
}
} finally {
lock.release();
}
await client.logout();import imaplib
m = imaplib.IMAP4_SSL("imap.mailkite.dev", 993)
m.login("you@yourdomain.com", APP_PASSWORD) # from the dashboard
m.select("INBOX")
_, data = m.search(None, "UNSEEN")
for num in data[0].split():
_, msg = m.fetch(num, "(RFC822)")
handle(msg[0][1])<?php
$mbox = imap_open(
"{imap.mailkite.dev:993/imap/ssl}INBOX",
"you@yourdomain.com",
getenv("MAILKITE_IMAP_PASSWORD")
);
foreach (imap_search($mbox, "UNSEEN") ?: [] as $num) {
handle(imap_fetchbody($mbox, $num, ""));
}
imap_close($mbox);Properties props = new Properties();
props.put("mail.store.protocol", "imaps");
Session session = Session.getInstance(props);
Store store = session.getStore("imaps");
store.connect("imap.mailkite.dev", 993, "you@yourdomain.com", System.getenv("MAILKITE_IMAP_PASSWORD"));
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
for (Message msg : inbox.search(new FlagTerm(new Flags(Flags.Flag.SEEN), false))) {
handle(msg);
}c, err := client.DialTLS("imap.mailkite.dev:993", nil)
if err != nil { log.Fatal(err) }
defer c.Logout()
if err := c.Login("you@yourdomain.com", os.Getenv("MAILKITE_IMAP_PASSWORD")); err != nil {
log.Fatal(err)
}
c.Select("INBOX", false)
criteria := imap.NewSearchCriteria()
criteria.WithoutFlags = []string{imap.SeenFlag}
uids, _ := c.Search(criteria)
seqset := new(imap.SeqSet)
seqset.AddNum(uids...)
messages := make(chan *imap.Message, 10)
go c.Fetch(seqset, []imap.FetchItem{imap.FetchRFC822}, messages)
for msg := range messages { handle(msg) }require "net/imap"
imap = Net::IMAP.new("imap.mailkite.dev", port: 993, ssl: true)
imap.login("you@yourdomain.com", ENV["MAILKITE_IMAP_PASSWORD"])
imap.select("INBOX")
imap.search(["UNSEEN"]).each do |id|
raw = imap.fetch(id, "RFC822")[0].attr["RFC822"]
handle(raw)
end
imap.logout# IMAP over TLS — curl speaks it, so you can check credentials
# without a mail client.
curl --ssl-reqd "imaps://imap.mailkite.dev/INBOX?UNSEEN" \
-u "you@yourdomain.com:$MAILKITE_IMAP_PASSWORD" For teams that want real mailboxes on their own domain with standard IMAP access and a developer-friendly Send API, it covers the core mail job. It is not a full office suite — there's no calendar or docs; it's email on your domain, managed from a dashboard.
Any that speak IMAPS — Apple Mail, Thunderbird, and mobile mail apps — using the mailbox address and an app password. There's also the MIT-licensed @mailkite/mail webmail UI.
Through the MailKite Send API (or point an SMTP-only app at the SMTP relay). Either way it's aligned to your domain's SPF and DKIM so it authenticates as you.
Start free on unlimited domains — no credit card. Or browse the other solutions.