2026-08-03 12:26:42 +08:00
# Runbook: use mailcow SMTP / IMAP (client)
2026-08-17 15:59:00 +08:00
## Purpose
Reference for configuring mail clients against the mailcow SMTP/IMAP endpoints.
## Scope
- Applicable: [mx2.windy.me ](../hosts/mx2.windy.me.md ) client submission (587/465) and IMAP/POP (993/995).
- Not applicable: server-side mailcow configuration or administration.
2026-08-03 12:26:42 +08:00
Target: [mx2.windy.me ](../hosts/mx2.windy.me.md )
Prerequisite: a mailbox on `windy.me` (password from mailcow UI, not the admin account unless it is that mailbox).
Clients should use **submission** to send. Do **not** use port 25 as a desktop/app outbound port.
## Send (SMTP)
| Item | Value |
|------|--------|
| Server | `mx2.windy.me` |
| Port | **587** (STARTTLS) — preferred |
| Alt port | **465** (SSL/TLS) |
| Username | Full address, e.g. `zhiqiang@windy.me` |
| Password | Mailbox password |
| Auth | Required (LOGIN / PLAIN) |
Match encryption to the port: 587 → STARTTLS; 465 → SSL/TLS (not STARTTLS).
From address should be that mailbox or an allowed alias on the same domain.
## Receive (IMAP / POP)
| Protocol | Server | Port |
|----------|--------|------|
| IMAPS | `mx2.windy.me` | **993** |
| POP3S | `mx2.windy.me` | **995** |
Username = full email address; same mailbox password.
## Webmail
- UI / SOGo: https://mx2.windy.me
- Log in with the same mailbox credentials.
## CLI smoke test (optional)
```bash
swaks --to someone@example.com \
--from YOU@windy.me \
--server mx2.windy.me --port 587 -tls \
--auth LOGIN --auth-user YOU@windy.me --auth-password 'MAILBOX_PASSWORD'
```
Do not commit or paste real passwords into this repo.
## Auth failures — quick checks
- Username is the **full** email, not a local part alone
- Password is the **mailbox** password (not unrelated host/root secrets)
- Port/TLS mode mismatch (587 vs 465)
- Account active in mailcow; not rate-limited / fail2banned after bad attempts
- Apps that store SMTP in their own config (e.g. Vaultwarden `config.json` ) may keep a **stale** password even when `.env` is correct — verify AUTH against the effective config ([vaultwarden-health ](vaultwarden-health.md ) §5)
2026-08-17 15:59:00 +08:00
## Safety
- Do not commit or paste real passwords into this repo or chat.
- Use submission (587/465) for client sending; never use port 25 as a desktop/app outbound port.