diff --git a/dovecot/docker-compose.yml b/dovecot/docker-compose.yml index 0380b83..71f7f2b 100644 --- a/dovecot/docker-compose.yml +++ b/dovecot/docker-compose.yml @@ -13,6 +13,10 @@ services: - ./ssl:/etc/dovecot/ssl - ./mail:/var/mail - ./log:/var/log + - ./entrypoint.sh:/entrypoint.sh # Custom Entrypoint-Script + environment: + - UMASK=002 # Wird von unserem Entrypoint verwendet + entrypoint: ["/bin/sh", "/entrypoint.sh"] networks: - mail_network diff --git a/dovecot/entrypoint.sh b/dovecot/entrypoint.sh new file mode 100755 index 0000000..d67749c --- /dev/null +++ b/dovecot/entrypoint.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# entrypoint.sh - Custom entrypoint für Dovecot mit UMASK-Einstellung + +# UMASK aus Umgebungsvariable setzen (Standard ist 002, wenn nicht anders angegeben) +CUSTOM_UMASK=${UMASK:-002} +echo "Setting umask to $CUSTOM_UMASK" +umask $CUSTOM_UMASK + +# UMASK auch in /etc/login.defs setzen für zukünftige Logins +sed -i "s/^UMASK\s*[0-9]\+/UMASK $CUSTOM_UMASK/" /etc/login.defs +# Falls UMASK noch nicht existiert, hinzufügen +grep -q "^UMASK" /etc/login.defs || echo "UMASK $CUSTOM_UMASK" >> /etc/login.defs + +# Dovecot-Einstellungen anwenden (falls nötig) +if [ -n "$DOVECOT_UID" ] && [ -n "$DOVECOT_GID" ]; then + echo "Configuring Dovecot with UID=$DOVECOT_UID, GID=$DOVECOT_GID" + sed -i "s/^mail_uid\s*=.*/mail_uid = $DOVECOT_UID/" /etc/dovecot/dovecot.conf + sed -i "s/^mail_gid\s*=.*/mail_gid = $DOVECOT_GID/" /etc/dovecot/dovecot.conf +fi + +# Wenn nicht genügend Berechtigungen für Mail-Verzeichnisse, automatisch korrigieren +echo "Checking mail directory permissions..." +find /var/mail -type d -exec chmod 775 {} \; 2>/dev/null || true +find /var/mail -type f -exec chmod 664 {} \; 2>/dev/null || true + +# Original Docker-Entrypoint ausführen +# oder direkter Start von Dovecot, je nach Image +if [ -f "/docker-entrypoint.sh" ]; then + echo "Executing original docker-entrypoint.sh" + exec /docker-entrypoint.sh "$@" +else + echo "Starting dovecot" + exec dovecot -F +fi \ No newline at end of file