92 lines
2.1 KiB
Bash
Executable File
92 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
# Prosess 2:
|
|
# Importerer alle private DKIM-nøkler fra private/dkim/ til Mailu.
|
|
#
|
|
# Leser:
|
|
# private/dkim/<domene>.<selector>.private.pem
|
|
#
|
|
# Skriver:
|
|
# private/mailu-dkim-import.yml
|
|
#
|
|
# Dette scriptet er trygt å publisere.
|
|
# Importfilen og private nøkler ligger under private/, som skal være i .gitignore.
|
|
|
|
selector="${DKIM_SELECTOR:-mail}"
|
|
import_file="private/mailu-dkim-import.yml"
|
|
|
|
mapfile -t private_keys < <(
|
|
find private/dkim -maxdepth 1 -type f -name "*.${selector}.private.pem" | sort
|
|
)
|
|
|
|
if [[ ${#private_keys[@]} -eq 0 ]]; then
|
|
echo "FEIL: Fant ingen private DKIM-nøkler."
|
|
echo "Forventet filer som:"
|
|
echo " private/dkim/<domene>.${selector}.private.pem"
|
|
exit 1
|
|
fi
|
|
|
|
{
|
|
echo "domain:"
|
|
for private_key in "${private_keys[@]}"; do
|
|
filename="$(basename "$private_key")"
|
|
domain="${filename%.${selector}.private.pem}"
|
|
|
|
echo " - name: ${domain}"
|
|
echo " dkim_key: |"
|
|
sed 's/^/ /' "$private_key"
|
|
done
|
|
} > "$import_file"
|
|
|
|
chmod 600 "$import_file"
|
|
|
|
echo "Importfil laget:"
|
|
echo " $import_file"
|
|
echo
|
|
echo "Domener som blir importert:"
|
|
for private_key in "${private_keys[@]}"; do
|
|
filename="$(basename "$private_key")"
|
|
domain="${filename%.${selector}.private.pem}"
|
|
echo " - $domain"
|
|
done
|
|
|
|
echo
|
|
echo "Dry-run mot Mailu:"
|
|
docker compose exec -T admin flask mailu config-import \
|
|
--update \
|
|
--dry-run \
|
|
--verbose \
|
|
- < "$import_file"
|
|
|
|
echo
|
|
read -r -p "Importere DKIM-nøklene i Mailu nå? Skriv YES: " confirm
|
|
|
|
if [[ "$confirm" != "YES" ]]; then
|
|
echo "Avbrutt. Ingen endring gjort."
|
|
exit 1
|
|
fi
|
|
|
|
docker compose exec -T admin flask mailu config-import \
|
|
--update \
|
|
--verbose \
|
|
- < "$import_file"
|
|
|
|
echo
|
|
echo "DKIM-status i Mailu:"
|
|
docker compose exec -T admin flask mailu config-export domain \
|
|
| grep -A5 -E 'name:|dkim_key'
|
|
|
|
echo
|
|
echo "Restarter relevante Mailu-tjenester hvis de finnes..."
|
|
services="$(docker compose ps --services)"
|
|
|
|
for svc in admin smtp antispam; do
|
|
if echo "$services" | grep -qx "$svc"; then
|
|
docker compose restart "$svc"
|
|
fi
|
|
done
|
|
|
|
echo
|
|
echo "OK: DKIM-nøkler importert til Mailu."
|