Commit graph

11 commits

Author SHA1 Message Date
fox.cpp
03d9e52627
Rename modules and introduce namespace-aware module name lookups
See #248.
2020-07-15 01:31:05 +03:00
fox.cpp
30c50b6a91
Implement SMTP REQUIRETLS support
Closes #123.
2020-06-10 19:51:08 +03:00
fox.cpp
ceda7259c0
queue: Fix misuse of TriesCount 2020-03-07 01:29:50 +03:00
fox.cpp
4b3e7ce819
queue: Fix retry delay calculation
It was generating negative delays due to incorrect power being used.
2020-03-06 23:40:47 +03:00
fox.cpp
9b279735e8
Address several TODO comments
Several comments were removed since they are not worth the trouble.
A few minor issues were addressed.
Most of remaining comments got corresponding GitHub issues assigned.
2020-03-05 02:26:30 +03:00
fox.cpp
1579ea10b2
Use config.Node instead of *config.Node everywhere
Closes #197.
2020-03-05 02:26:29 +03:00
fox.cpp
f559143728
target/queue: Increase the amount of tries, decrease delay scale factor
This makes server more aggressive in retrying delivery. The total
attempts time is approximately the same (around 5 days).

Notably, the increased amount of attempts is needed to handle large
recipient lists where the remote server sometimes rejects subset of them
with "Too Many Recipients" code.

See #149.
2020-02-16 19:56:57 +03:00
fox.cpp
8635a11293
target/queue: Rework error handling to track retries per-recipient
While was not strictly needed before, it is necessary in the presence of
limits and other internal target errors that should cause the delivery
to get rescheduled without increasing retries counter.
2020-02-16 16:28:39 +03:00
fox.cpp
c4ea9a730f
Instrument the SMTP code using runtime/trace
runtime/trace together with 'go tool trace' provides extremely powerful
tooling for performance (latency) analysis. Since maddy prides itself on
being "optimized for concurrency", it is a good idea to actually live up
to this promise.

Closes #144. No need to reinvent the wheel. The original issue
proposed a solution to use in production to detect "performance
anomalies", it is possible to use runtime/trace in production too, but
the corresponding flag to enable profiler endpoint is hidden behind the
'debugflags' build tag at the moment.

For SMTP code, the basic latency information can be obtained from
regular logs since they include timestamps with millisecond granularity.
After the issue is apparent, it is possible to deploy the server
executable compiled with tracing support and obtain more information

... Also add missing context.Context arguments to smtpconn.C.
2019-12-13 17:31:35 +03:00
fox.cpp
305fdddf24
Use context.Context all over the place
It is useful to define background tasks lifetimes more precisely,
especially involving timeouts and other cancellation methods.

On top of that, several tracing facilities are context-based (e.g.
runtime/trace), so it is possible to use them now.
2019-12-13 17:31:35 +03:00
fox.cpp
bf188e454f
Move most code from the repo root into subdirectories
The intention is to keep to repo root clean while the list of packages
is slowly growing.

Additionally, a bunch of small (~30 LoC) files in the repo root is
merged into a single maddy.go file, for the same reason.

Most of the internal code is moved into the internal/ directory. Go
toolchain will make it impossible to import these packages from external
applications.

Some packages are renamed and moved into the pkg/ directory in the root.
According to https://github.com/golang-standards/project-layout this is
the de-facto standard to place "library code that's ok to use by
external applications" in.

To clearly define the purpose of top-level directories, README.md files
are added to each.
2019-12-06 01:35:12 +03:00
Renamed from target/queue/queue.go (Browse further)