#!/usr/bin/env bash set -e KEY_FILE=/etc/opendkim/keys/mail.private # Wait for DKIM key (mounted read-only from host) for i in $(seq 1 30); do [[ -f "$KEY_FILE" ]] && break echo "Waiting for DKIM key at $KEY_FILE ... (run mail/install.sh on host)" sleep 2 done if [[ ! -f "$KEY_FILE" ]]; then echo "ERROR: DKIM key not found at $KEY_FILE" >&2 exit 1 fi # Docker の embedded DNS (127.0.0.11) は MX クエリを解決できないことがあるため # 外部 DNS に差し替える(sed -i は bind mount で失敗するため python3 で書き換え) python3 - << 'PYEOF' path = '/etc/resolv.conf' content = open(path).read().replace('nameserver 127.0.0.11', 'nameserver 8.8.8.8') if '1.1.1.1' not in content: content += 'nameserver 1.1.1.1\n' open(path, 'w').write(content) PYEOF # Start rsyslog for Postfix logging rsyslogd # Start OpenDKIM (runs as root per opendkim.conf UserID) opendkim -x /etc/opendkim.conf sleep 2 # Start Postfix postfix start # Keep container alive, forward mail log to stdout touch /var/log/mail.log exec tail -f /var/log/mail.log