mirror of
https://github.com/bokysan/docker-postfix.git
synced 2025-09-03 21:14:26 +08:00
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.
30 lines
1.7 KiB
Bash
30 lines
1.7 KiB
Bash
#!/bin/sh
|
|
set -e
|
|
|
|
. /common.sh
|
|
. /common-run.sh
|
|
|
|
announce_startup # Print startup banner
|
|
setup_timezone # Check if we need to configure the container timezone
|
|
reown_folders # Make and reown postfix folders
|
|
postfix_disable_utf8 # Disable SMTPUTF8, because libraries (ICU) are missing in alpine
|
|
postfix_create_aliases # Update aliases database. It's not used, but postfix complains if the .db file is missing
|
|
postfix_disable_local_mail_delivery # Disable local mail delivery
|
|
postfix_disable_domain_relays # Don't relay for any domains
|
|
postfix_increase_header_size_limit # Increase the allowed header size, the default (102400) is quite smallish
|
|
postfix_restrict_message_size # Restrict the size of messages (or set them to unlimited)
|
|
postfix_reject_invalid_helos # Reject invalid HELOs
|
|
postfix_set_hostname # Set up host name
|
|
postfix_set_relay_tls_level # Set TLS level security for relays
|
|
postfix_setup_relayhost # Setup a relay host, if defined
|
|
postfix_setup_networks # Set MYNETWORKS
|
|
postfix_setup_debugging # Enable debugging, if defined
|
|
postfix_setup_sender_domains # Configure allowed sender domains
|
|
postfix_setup_masquarading # Setup masquaraded domains
|
|
postfix_setup_header_checks # Enable SMTP header checks, if defined
|
|
postfix_setup_dkim # Configure DKIM, if enabled
|
|
postfix_open_submission_port # Enable the submission port
|
|
execute_post_init_scripts # Execute any scripts found in /docker-init.db/
|
|
|
|
echo -e "‣ $notice Starting: ${emphasis}rsyslog${reset}, ${emphasis}postfix${reset}$DKIM_ENABLED"
|
|
exec supervisord -c /etc/supervisord.conf
|