Test a few more functionalities in the image. Change how postfix
message IDs are detected. Message ID can be set by the client and
hence detecting them via regex is not the best way to go around it.
This fix will actually look at the log line and try to determine
if we're looking at the message ID or not.
fix regex to avoid '>' at the end of email
set default prefix & suffix to '' have a clean email in logs
update hmac hashing to use the same function as others programming languages
fix typos
A small error where sed was called wrongly ('s/.../d') instead of
'/.../d' was causing an error `sed: unmatched '/' on configuration
change`.
This commit should fix the issue.
This email anonymizer tries to be a bit more smart about how it goes
about anonymizing email addresses, by providing as much as possible
information while still making sure to respect user's privacy.
More info available in `README.md`.
This new feature will anonymize emails in the Postfix logs. This allows
you to keep them indefinetely while being compliant with GDPR.
Based on excellent work on [this pull request](https://github.com/bokysan/docker-postfix/pull/91).
Check `README.md` for more details.
With upgrade to Alpine 3.13, support for `hash:` and `btree:` has
beenremoved from Alpine.
As such `hash:<file>` references do not work any more.
[Alpine](https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.13.0)
explains it like this:
> Oracle has changed the license of BDB to AGPL-3.0, making it unsuitable
> to link to packages with GPL-incompatible licenses. Since the old version
> is no longer maintained, the db package is now deprecated. Alpine Linux
> packages are being transitioned to alternatives or, where no alternatives
> exist, removed entirely.
This, unfortunately, will mean that the new version of `docker-postfix`
might not be backwards-compatible, if you're using your own postfix
configuration. Sorry. :-(
The postfix configuration was a bit too permissive with `mynetworks`.
This commit:
- adds `reject` at the end of `*restrictions` list
- adds tests for this feature
Private keys generated with `DKIM_AUTOGENERATE` were created with
the root account and as such were not readable by OpenDKIM.
This fix will reown the created files to the `opendkim` user.
While quite annoying behavour, this is the how `postconf` works.
If you tell it to comment out a command, it will add it to the config
even when the same command exists commented out in the config file.
This commit does a bit of sed and grep magic to find if the comment
already exists and if yes, then it does nothing.
Apparently using sleep with very large numbers is not a good idea
when your image can be compiled down to 32-bit platforms.
This fix uses `sleep infinity` and -- failing that -- tries to
sleep for about 68 years (which is exactly 2^15 seconds).
- It's now possible to choose the logging type - either 'plain' or
'json'
- The code is ready to support multiple integration tests (with
different configurations)
- `OPENDKIM_` and `POSTFIX_` variables are handled properly and recorded
in the corresponding files. (This had a downfall that `bash` now needs
to be installed, so we can probably simplify some of the shell
scripts.)
Summary
^^^^^^^
This commit refactors the code base to be more manageble and
prepares the groundwork for tests.
Refactoring
^^^^^^^^^^^
Files are now moved to subdirectories, all for the sole purpose of
easier management. Tests live in their own folders, as well as configs
and other files.
Test framework
^^^^^^^^^^^^^^
Two new important scripts/directories are available:
- `unit-tests.sh` / `/unit-test` which executes unit tests across shell
scripts, and
- `integration-test.sh` / `integration-tests`, which spins up the
container and tries to send the email.
Both tests use the [BATS](https://github.com/sstephenson/bats) framework
for testing. To create a new test, simply drop a `.bats` file into a
corresponding directory.
Functions have been extracted into `common-run.sh`, to be able to test
them independently.
DKIM_SELECTOR
^^^^^^^^^^^^^
It is now possible to specify a DKIM selector to use (instead of
the default "mail"). See `README.md` for more details.
JSON logging
^^^^^^^^^^^^
WIP: rsyslog will now output JSON logs. This is especially important
if you plan on deploying the image into Kubernetes, as [Prometheus](https://prometheus.io/)
can handle logs in JSON much easier.
TODO: Make this an optional feature, to not confuse existing users.