Repository Analysis

docker-mailserver/docker-mailserver

Production-ready fullstack but simple mail server (SMTP, IMAP, LDAP, Antispam, Antivirus, etc.) running inside a container.

6.7 Low AI signal View on GitHub
6.7
Adjusted Score
6.7
Raw Score
100%
Time Factor
2026-05-28
Last Push
18,290
Stars
Shell
Language
21,536
Lines of Code
182
Files
90
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 25LOW 65

Pattern Findings

90 matches across 8 categories. Click a row to expand file-level details.

Over-Commented Block54 hits · 54 pts
SeverityFileLineSnippet
LOWtest/config/junk-mailbox/user-patches.sh1#!/bin/bash
LOWtest/config/dovecot-lmtp/user-patches.sh21# unix_listener lmtp {
LOWtest/config/user-patches/user-patches.sh1#!/bin/bash
LOWtest/config/rspamd_full/user-patches.sh1#!/bin/bash
LOWtest/helper/log_and_filtering.bash1#!/bin/bash
LOWtest/helper/change-detection.bash1#!/bin/bash
LOWtest/helper/common.bash1#!/bin/bash
LOWtest/helper/common.bash21 load "${REPOSITORY_ROOT}/test/helper/log_and_filtering"
LOWtest/helper/common.bash41# If neither an explicit non-empty argument is given nor `CONTAINER_NAME`
LOWtest/helper/common.bash101# Execute a command inside the container with name ${CONTAINER_NAME}. The command
LOWtest/helper/common.bash121
LOWtest/helper/sending.bash1#!/bin/bash
LOWtest/helper/sending.bash21# The very first parameter **may** be `--expect-rejection` - use it of you expect the mail transaction to not finish
LOWtest/helper/sending.bash101 echo "${output}"
LOWtest/helper/setup.bash1#!/bin/bash
LOWtest/helper/setup.bash41
LOWtest/helper/setup.bash81# - Use `local <VARIABLE>` to override within a specific test case.
LOWtest/helper/setup.bash101 export TEST_FILES_VOLUME="${REPOSITORY_ROOT}/test/files:${TEST_FILES_CONTAINER_PATH}:ro"
LOWtest/helper/tls.bash1#!/bin/bash
LOWconfig-examples/user-patches.sh1#!/bin/bash
LOWtarget/scripts/check-for-changes.sh1#!/bin/bash
LOWtarget/scripts/startup/variables-stack.sh41
LOWtarget/scripts/startup/setup.d/dovecot.sh21 # https://doc.dovecot.org/2.3/settings/core/#core_setting-hostname
LOWtarget/scripts/startup/setup.d/mail_state.sh121 # NOTE: The Postfix spool location has mixed owner/groups to take into account:
LOWtarget/scripts/helpers/relay.sh1#!/bin/bash
LOWtarget/scripts/helpers/relay.sh21#
LOWtarget/scripts/helpers/relay.sh41# There is a minor chance of a lookup occurring during a rebuild of these files that may affect or delay delivery?
LOWtarget/scripts/helpers/relay.sh101 'smtp_tls_security_level = encrypt'
LOWtarget/scripts/helpers/relay.sh201}
LOWtarget/scripts/helpers/relay.sh221# relay-service.test relay-account:relay-pass
LOWtarget/scripts/helpers/relay.sh241# setup /etc/postfix/relayhost_map
LOWtarget/scripts/helpers/relay.sh261# smtp_tls_security_level = encrypt
LOWtarget/scripts/helpers/relay.sh281
LOWtarget/scripts/helpers/relay.sh301# https://www.mailjet.com/blog/news/which-smtp-port-mailjet/#port-465
LOWtarget/scripts/helpers/relay.sh321# and incorrectly describe how they deliver mail:
LOWtarget/scripts/helpers/relay.sh341#
LOWtarget/scripts/helpers/utils.sh101 fi
LOWtarget/scripts/helpers/utils.sh121# If you want to set a new value for `readme_directory` in Postfix's `main.cf`,
LOWtarget/scripts/helpers/ssl.sh161 local SCOPE_SSL_TYPE="TLS Setup [SSL_TYPE=${SSL_TYPE}]"
LOWtarget/scripts/helpers/ssl.sh321 fi
LOWtarget/scripts/helpers/dns.sh1#!/bin/bash
LOWtarget/scripts/helpers/dns.sh21 # TODO: `OVERRIDE_HOSTNAME` was introduced for non-Docker runtimes that could not configure an explicit hostname.
LOWtarget/scripts/helpers/dns.sh41 # Emulates the intended behaviour of `hostname -d`:
LOWtarget/scripts/helpers/log.sh21LCYAN=$(echo -ne '\e[1;36m')
LOWtarget/scripts/helpers/rspamd.sh81 #
LOWtarget/scripts/helpers/postfix.sh1#!/bin/bash
LOWtarget/scripts/helpers/postfix.sh81 [[ ${ACCOUNT_PROVISIONER} == 'LDAP' ]] && echo "${DOMAINNAME}" >>"${TMP_VHOST}"
LOW…get/scripts/helpers/database/manage/postfix-virtual.sh1#!/bin/bash
LOWdocs/content/faq.md421 Edit the system cron file `nano ./docker-data/dms/cron/sa-learn`, and set an appropriate configuration:
LOW…content/config/advanced/mail-forwarding/relay-hosts.md121 ```cf-extra
LOW…cs/content/examples/use-cases/ios-mail-push-support.md141 # 2. You don't need your mailboxes to synchronize immediately since they are automatically synchronized when ope
LOW.github/FUNDING.yml1github: [georglauterbach]
LOW.github/workflows/docs-preview-deploy.yml101 with:
LOW.github/workflows/docs-preview-deploy.yml121 # Disable adding a comment about successful deployment status to the PR.
Self-Referential Comments16 hits · 48 pts
SeverityFileLineSnippet
MEDIUMtest/helper/common.bash16# This function is internal and should not be used in tests.
MEDIUMtest/helper/common.bash54# This function is internal and should not be used in tests.
MEDIUMtest/helper/setup.bash17# This function is internal and should not be used in tests.
MEDIUMtest/helper/setup.bash56# Create a dedicated configuration directory for a test file.
MEDIUMtarget/scripts/startup/variables-stack.sh20# This function handles variables that are deprecated. This allows a
MEDIUMtarget/scripts/startup/variables-stack.sh193# This function handles environment variables related to LDAP.
MEDIUMtarget/scripts/startup/variables-stack.sh211# This function handles environment variables related to SASLAUTHD
MEDIUMtarget/scripts/startup/setup.d/getmail.sh14 # Create the directory /etc/getmailrc.d to place the user config in later.
MEDIUMtarget/scripts/startup/setup.d/saslauthd.sh13 # Create a config based on ENV
MEDIUMtarget/scripts/startup/setup.d/fetchmail.sh71 # Create a new fetchmail config for this poll entry:
MEDIUMtarget/scripts/startup/setup.d/security/rspamd.sh3# This file is executed during startup of DMS. Hence, the `index.sh` helper has already
MEDIUMtarget/scripts/startup/setup.d/security/rspamd.sh270# This function handles setup of the Hfilter module (see
MEDIUMtarget/scripts/startup/setup.d/security/rspamd.sh296# This function handles setup of the neural module (see
MEDIUMtarget/scripts/helpers/relay.sh125 # Create the relayhost_map config file:
MEDIUMtarget/scripts/helpers/log.sh29# This function provides the logging for scripts used by DMS.
MEDIUMtarget/scripts/helpers/rspamd.sh20# Create a temporary log file (with `mktemp`) that one can filter to search
Decorative Section Separators6 hits · 18 pts
SeverityFileLineSnippet
MEDIUMtarget/scripts/start-mailserver.sh10# ------------------------------------------------------------
MEDIUMtarget/scripts/start-mailserver.sh12# ------------------------------------------------------------
MEDIUMtarget/scripts/start-mailserver.sh29# ------------------------------------------------------------
MEDIUMtarget/scripts/start-mailserver.sh33# ------------------------------------------------------------
MEDIUMtarget/scripts/start-mailserver.sh163# ------------------------------------------------------------
MEDIUMtarget/scripts/start-mailserver.sh167# ------------------------------------------------------------
Redundant / Tautological Comments6 hits · 9 pts
SeverityFileLineSnippet
LOWtest/helper/change-detection.bash80 # Read file in reverse, collect lines until match with sed is found,
LOWtest/helper/common.bash383# Check if a container is running.
LOWtarget/scripts/startup/setup.d/getmail.sh17 # Check if custom getmailrc_general.cf file is present.
LOWtarget/scripts/startup/setup.d/security/rspamd.sh279 # Check if we received a number first
LOWtarget/scripts/helpers/utils.sh155# Check if an environment variable's value is zero or one. This aids in checking variables
LOWtarget/scripts/helpers/utils.sh178# Check if an environment variable's value is an integer.
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippet
MEDIUMtest/helper/common.bash27# test suite more robust as we can be sure that the container name is
MEDIUMtarget/scripts/helpers/relay.sh117# By sender: `sender_dependent_default_transport_maps = texthash:/etc/postfix/sender_transport_map` (the current opt-o
MEDIUM…et/scripts/helpers/database/manage/postfix-accounts.sh48# Dovecot Master account support can leverage the same management logic:
Fake / Example Data3 hits · 3 pts
SeverityFileLineSnippet
LOWtest/files/emails/quota-exceeded.txt6Lorem ipsum dolor sit amet. Et quidem architecto id Quis saepe vel corporis odit aut nesciunt nisi. Et voluptatem exerci
LOWtest/files/emails/quota-exceeded.txt6Lorem ipsum dolor sit amet. Et quidem architecto id Quis saepe vel corporis odit aut nesciunt nisi. Et voluptatem exerci
LOWdocs/content/config/security/ssl.md454 LETSENCRYPT_mail_EMAIL='admin@example.com'
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippet
LOWconfig-examples/user-patches.sh6# If you modify any supervisord configuration, make sure to run
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippet
LOWtarget/bin/acme_extract.py22