docker-entrypoint.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/bash
  2. set -e
  3. if [[ ! -d "/data/dkim/txt" || ! -d "/data/dkim/keys" ]] ; then mkdir -p /data/dkim/{txt,keys} ; chown -R www-data:www-data /data/dkim; fi
  4. if [[ $(stat -c %U /data/dkim/) != "www-data" ]] ; then chown -R www-data:www-data /data/dkim ; fi
  5. # Wait for containers
  6. while ! mysqladmin ping --host mysql --silent; do
  7. sleep 2
  8. done
  9. until [ $(redis-cli -h redis-mailcow PING) == "PONG" ]; do
  10. sleep 2
  11. done
  12. # Migrate domain map
  13. declare -a DOMAIN_ARR
  14. redis-cli -h redis-mailcow DEL DOMAIN_MAP
  15. while read line
  16. do
  17. DOMAIN_ARR+=("$line")
  18. done < <(mysql -h mysql-mailcow -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT domain FROM domain" -Bs)
  19. if [[ ! -z ${DOMAIN_ARR} ]]; then
  20. for domain in "${DOMAIN_ARR[@]}"; do
  21. redis-cli -h redis-mailcow HSET DOMAIN_MAP ${domain} 1
  22. done
  23. fi
  24. # Migrate tag settings map
  25. declare -a SUBJ_TAG_ARR
  26. redis-cli -h redis-mailcow DEL SUBJ_TAG_ARR
  27. while read line
  28. do
  29. SUBJ_TAG_ARR+=("$line")
  30. done < <(mysql -h mysql-mailcow -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT username FROM mailbox WHERE wants_tagged_subject='1'" -Bs)
  31. if [[ ! -z ${SUBJ_TAG_ARR} ]]; then
  32. for user in "${SUBJ_TAG_ARR[@]}"; do
  33. redis-cli -h redis-mailcow HSET RCPT_WANTS_SUBJECT_TAG ${user} 1
  34. mysql -h mysql-mailcow -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "UPDATE mailbox SET wants_tagged_subject='2' WHERE username = '${user}'"
  35. done
  36. fi
  37. # Migrate DKIM keys
  38. for file in $(ls /data/dkim/keys/); do
  39. domain=${file%.dkim}
  40. if [[ -f /data/dkim/txt/${file} ]]; then
  41. redis-cli -h redis-mailcow HSET DKIM_PUB_KEYS "${domain}" "$(cat /data/dkim/txt/${file})"
  42. redis-cli -h redis-mailcow HSET DKIM_PRIV_KEYS "${domain}" "$(cat /data/dkim/keys/${file})"
  43. redis-cli -h redis-mailcow HSET DKIM_SELECTORS "${domain}" "dkim"
  44. fi
  45. rm /data/dkim/{keys,txt}/${file}
  46. done
  47. exec "$@"