@bumail/smtp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +263 -0
  3. package/dist/errors.d.ts +13 -0
  4. package/dist/errors.d.ts.map +1 -0
  5. package/dist/index.d.ts +9 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +1319 -0
  8. package/dist/index.js.map +29 -0
  9. package/dist/protocol/command.d.ts +20 -0
  10. package/dist/protocol/command.d.ts.map +1 -0
  11. package/dist/protocol/data.d.ts +24 -0
  12. package/dist/protocol/data.d.ts.map +1 -0
  13. package/dist/protocol/path.d.ts +20 -0
  14. package/dist/protocol/path.d.ts.map +1 -0
  15. package/dist/protocol/reply.d.ts +13 -0
  16. package/dist/protocol/reply.d.ts.map +1 -0
  17. package/dist/protocol/sasl.d.ts +16 -0
  18. package/dist/protocol/sasl.d.ts.map +1 -0
  19. package/dist/server/auth.d.ts +6 -0
  20. package/dist/server/auth.d.ts.map +1 -0
  21. package/dist/server/commands.d.ts +4 -0
  22. package/dist/server/commands.d.ts.map +1 -0
  23. package/dist/server/connection.d.ts +52 -0
  24. package/dist/server/connection.d.ts.map +1 -0
  25. package/dist/server/guard.d.ts +18 -0
  26. package/dist/server/guard.d.ts.map +1 -0
  27. package/dist/server/input.d.ts +31 -0
  28. package/dist/server/input.d.ts.map +1 -0
  29. package/dist/server/intake.d.ts +31 -0
  30. package/dist/server/intake.d.ts.map +1 -0
  31. package/dist/server/lines.d.ts +25 -0
  32. package/dist/server/lines.d.ts.map +1 -0
  33. package/dist/server/options.d.ts +151 -0
  34. package/dist/server/options.d.ts.map +1 -0
  35. package/dist/server/received.d.ts +11 -0
  36. package/dist/server/received.d.ts.map +1 -0
  37. package/dist/server/refusals.d.ts +16 -0
  38. package/dist/server/refusals.d.ts.map +1 -0
  39. package/dist/server/server.d.ts +25 -0
  40. package/dist/server/server.d.ts.map +1 -0
  41. package/dist/server/settings.d.ts +16 -0
  42. package/dist/server/settings.d.ts.map +1 -0
  43. package/dist/server/state.d.ts +24 -0
  44. package/dist/server/state.d.ts.map +1 -0
  45. package/dist/server/transaction.d.ts +6 -0
  46. package/dist/server/transaction.d.ts.map +1 -0
  47. package/dist/server/transport.d.ts +42 -0
  48. package/dist/server/transport.d.ts.map +1 -0
  49. package/docs/README.md +10 -0
  50. package/docs/guide.md +976 -0
  51. package/docs/roadmap.md +45 -0
  52. package/docs/troubleshooting.md +1308 -0
  53. package/package.json +55 -0
@@ -0,0 +1,45 @@
1
+ # Roadmap
2
+
3
+ What `@bumail/smtp` gives a mail server, and what is coming. This page is a
4
+ direction, not a commitment: the version something shipped in is the only
5
+ number on it.
6
+
7
+ ## Now
8
+
9
+ Nothing in progress: the server below is merged and waits for its first
10
+ release.
11
+
12
+ ## Next
13
+
14
+ - **The client, on its own subpath** — outbound delivery: MX lookup,
15
+ opportunistic STARTTLS, connection reuse per destination. In this
16
+ package, beside the server, since both share the command and reply
17
+ grammar.
18
+ - **DSN** (RFC 3461) — `RET`, `ENVID`, `NOTIFY` and `ORCPT` accepted and
19
+ handed to the app, so a sender can ask for delivery status
20
+ notifications. Today they are refused with `555 5.5.4`.
21
+ - **Delivery into `@bumail/store`, ready-made** — an `onData` that puts
22
+ each message in its recipients' inboxes, instead of the few lines the
23
+ [guide](guide.md#delivering-into-bumailstore) shows today. The store
24
+ itself has landed; only the helper is to come.
25
+
26
+ ## Not planned
27
+
28
+ - **Relaying without AUTH** — not as a default, not as an option. A
29
+ recipient outside `localDomains` takes an authenticated session; an open
30
+ relay is a spam source within hours of going online.
31
+ - **AUTH on a clear connection** — the password would cross the network in
32
+ base64. Use STARTTLS or implicit TLS.
33
+
34
+ ## Shipped
35
+
36
+ Merged, not yet published:
37
+
38
+ - **The server** — RFC 5321 on `Bun.listen`: EHLO with PIPELINING, SIZE,
39
+ 8BITMIME, SMTPUTF8 and ENHANCEDSTATUSCODES; STARTTLS and implicit TLS;
40
+ AUTH PLAIN and LOGIN, offered only once encrypted; hooks where the app
41
+ accepts or refuses a connection, a sender, a recipient or a message;
42
+ limits on size, recipients, connections, errors and idle time; a
43
+ greeting delay that turns away senders who talk before the 220; a `250`
44
+ only once the app read the whole message; and a refusal of SMTP
45
+ smuggling.