From 7368593d19e8c54193c317adc81133535af1a884 Mon Sep 17 00:00:00 2001 From: Yvan Masson Date: Fri, 8 Sep 2023 14:29:06 +0200 Subject: [PATCH] feat (mysql): use IP and port instead of unix socket --- data/Dockerfiles/acme/acme.sh | 6 +-- data/Dockerfiles/dovecot/clean_q_aged.sh | 4 +- data/Dockerfiles/dovecot/docker-entrypoint.sh | 20 ++++---- data/Dockerfiles/dovecot/imapsync_runner.pl | 2 +- data/Dockerfiles/dovecot/quarantine_notify.py | 2 +- data/Dockerfiles/phpfpm/docker-entrypoint.sh | 16 +++---- data/Dockerfiles/postfix/postfix.sh | 42 ++++++++--------- data/Dockerfiles/sogo/bootstrap-sogo.sh | 46 +++++++++---------- data/Dockerfiles/watchdog/watchdog.sh | 8 ++-- data/conf/rspamd/dynmaps/aliasexp.php | 3 +- data/conf/rspamd/dynmaps/bcc.php | 3 +- data/conf/rspamd/dynmaps/settings.php | 3 +- data/conf/rspamd/meta_exporter/pipe.php | 3 +- data/conf/rspamd/meta_exporter/pushover.php | 3 +- data/web/autodiscover.php | 4 +- data/web/inc/init_db.inc.php | 2 +- data/web/inc/prerequisites.inc.php | 2 +- data/web/inc/vars.inc.php | 4 +- generate_config.sh | 4 +- 19 files changed, 87 insertions(+), 90 deletions(-) diff --git a/data/Dockerfiles/acme/acme.sh b/data/Dockerfiles/acme/acme.sh index 1cd456a4..891074c1 100755 --- a/data/Dockerfiles/acme/acme.sh +++ b/data/Dockerfiles/acme/acme.sh @@ -113,7 +113,7 @@ fi chmod 600 ${ACME_BASE}/key.pem log_f "Waiting for database..." -while ! mysqladmin status --socket=/var/run/mysqld/mysqld.sock -u${DBUSER} -p${DBPASS} --silent > /dev/null; do +while ! mysqladmin status --host=${DBHOST} --port=${DBPORT} -u${DBUSER} -p${DBPASS} --silent > /dev/null; do sleep 2 done log_f "Database OK" @@ -134,7 +134,7 @@ log_f "Resolver OK" log_f "Waiting for domain table..." while [[ -z ${DOMAIN_TABLE} ]]; do curl --silent http://nginx/ >/dev/null 2>&1 - DOMAIN_TABLE=$(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SHOW TABLES LIKE 'domain'" -Bs) + DOMAIN_TABLE=$(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SHOW TABLES LIKE 'domain'" -Bs) [[ -z ${DOMAIN_TABLE} ]] && sleep 10 done log_f "OK" no_date @@ -223,7 +223,7 @@ while true; do ######################################### # IP and webroot challenge verification # - SQL_DOMAINS=$(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT domain FROM domain WHERE backupmx=0 and active=1" -Bs) + SQL_DOMAINS=$(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT domain FROM domain WHERE backupmx=0 and active=1" -Bs) if [[ ! $? -eq 0 ]]; then log_f "Failed to read SQL domains, retrying in 1 minute..." sleep 1m diff --git a/data/Dockerfiles/dovecot/clean_q_aged.sh b/data/Dockerfiles/dovecot/clean_q_aged.sh index ef6b61f1..5f249cc1 100755 --- a/data/Dockerfiles/dovecot/clean_q_aged.sh +++ b/data/Dockerfiles/dovecot/clean_q_aged.sh @@ -15,6 +15,6 @@ if ! [[ ${MAX_AGE} =~ ${NUM_REGEXP} ]] ; then exit 1 fi -TO_DELETE=$(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT COUNT(id) FROM quarantine WHERE created < NOW() - INTERVAL ${MAX_AGE//[!0-9]/} DAY" -BN) -mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM quarantine WHERE created < NOW() - INTERVAL ${MAX_AGE//[!0-9]/} DAY" +TO_DELETE=$(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT COUNT(id) FROM quarantine WHERE created < NOW() - INTERVAL ${MAX_AGE//[!0-9]/} DAY" -BN) +mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "DELETE FROM quarantine WHERE created < NOW() - INTERVAL ${MAX_AGE//[!0-9]/} DAY" echo "Deleted ${TO_DELETE} items from quarantine table (max age is ${MAX_AGE//[!0-9]/} days)" diff --git a/data/Dockerfiles/dovecot/docker-entrypoint.sh b/data/Dockerfiles/dovecot/docker-entrypoint.sh index b2633c27..0be29047 100755 --- a/data/Dockerfiles/dovecot/docker-entrypoint.sh +++ b/data/Dockerfiles/dovecot/docker-entrypoint.sh @@ -2,7 +2,7 @@ set -e # Wait for MySQL to warm-up -while ! mysqladmin status --socket=/var/run/mysqld/mysqld.sock -u${DBUSER} -p${DBPASS} --silent; do +while ! mysqladmin status --host=${DBHOST} --port=${DBPORT} -u${DBUSER} -p${DBPASS} --silent; do echo "Waiting for database to come up..." sleep 2 done @@ -45,7 +45,7 @@ else fi cat < /etc/dovecot/sql/dovecot-dict-sql-quota.conf # Autogenerated by mailcow -connect = "host=/var/run/mysqld/mysqld.sock dbname=${DBNAME} user=${DBUSER} password=${DBPASS}" +connect = "host=${DBHOST} port=${DBPORT} dbname=${DBNAME} user=${DBUSER} password=${DBPASS}" map { pattern = priv/quota/storage table = ${QUOTA_TABLE} @@ -63,7 +63,7 @@ EOF # Create dict used for sieve pre and postfilters cat < /etc/dovecot/sql/dovecot-dict-sql-sieve_before.conf # Autogenerated by mailcow -connect = "host=/var/run/mysqld/mysqld.sock dbname=${DBNAME} user=${DBUSER} password=${DBPASS}" +connect = "host=${DBHOST} port=${DBPORT} dbname=${DBNAME} user=${DBUSER} password=${DBPASS}" map { pattern = priv/sieve/name/\$script_name table = sieve_before @@ -86,7 +86,7 @@ EOF cat < /etc/dovecot/sql/dovecot-dict-sql-sieve_after.conf # Autogenerated by mailcow -connect = "host=/var/run/mysqld/mysqld.sock dbname=${DBNAME} user=${DBUSER} password=${DBPASS}" +connect = "host=${DBHOST} port=${DBPORT} dbname=${DBNAME} user=${DBUSER} password=${DBPASS}" map { pattern = priv/sieve/name/\$script_name table = sieve_after @@ -123,7 +123,7 @@ chmod 644 /etc/dovecot/mail_plugins /etc/dovecot/mail_plugins_imap /etc/dovecot/ cat < /etc/dovecot/sql/dovecot-dict-sql-userdb.conf # Autogenerated by mailcow driver = mysql -connect = "host=/var/run/mysqld/mysqld.sock dbname=${DBNAME} user=${DBUSER} password=${DBPASS}" +connect = "host=${DBHOST} port=${DBPORT} dbname=${DBNAME} user=${DBUSER} password=${DBPASS}" user_query = SELECT CONCAT(JSON_UNQUOTE(JSON_VALUE(attributes, '$.mailbox_format')), mailbox_path_prefix, '%d/%n/${MAILDIR_SUB}:VOLATILEDIR=/var/volatile/%u:INDEX=/var/vmail_index/%u') AS mail, '%s' AS protocol, 5000 AS uid, 5000 AS gid, concat('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u' AND (active = '1' OR active = '2') iterate_query = SELECT username FROM mailbox WHERE active = '1' OR active = '2'; EOF @@ -388,15 +388,15 @@ printenv | sed 's/^\(.*\)$/export \1/g' > /source_env.sh # Clean stopped imapsync jobs rm -f /tmp/imapsync_busy.lock -IMAPSYNC_TABLE=$(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SHOW TABLES LIKE 'imapsync'" -Bs) -[[ ! -z ${IMAPSYNC_TABLE} ]] && mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "UPDATE imapsync SET is_running='0'" +IMAPSYNC_TABLE=$(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SHOW TABLES LIKE 'imapsync'" -Bs) +[[ ! -z ${IMAPSYNC_TABLE} ]] && mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "UPDATE imapsync SET is_running='0'" # Envsubst maildir_gc echo "$(envsubst < /usr/local/bin/maildir_gc.sh)" > /usr/local/bin/maildir_gc.sh # GUID generation while [[ ${VERSIONS_OK} != 'OK' ]]; do - if [[ ! -z $(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = \"${DBNAME}\" AND TABLE_NAME = 'versions'") ]]; then + if [[ ! -z $(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = \"${DBNAME}\" AND TABLE_NAME = 'versions'") ]]; then VERSIONS_OK=OK else echo "Waiting for versions table to be created..." @@ -407,11 +407,11 @@ PUBKEY_MCRYPT=$(doveconf -P 2> /dev/null | grep -i mail_crypt_global_public_key if [ -f ${PUBKEY_MCRYPT} ]; then GUID=$(cat <(echo ${MAILCOW_HOSTNAME}) /mail_crypt/ecpubkey.pem | sha256sum | cut -d ' ' -f1 | tr -cd "[a-fA-F0-9.:/] ") if [ ${#GUID} -eq 64 ]; then - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF REPLACE INTO versions (application, version) VALUES ("GUID", "${GUID}"); EOF else - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF REPLACE INTO versions (application, version) VALUES ("GUID", "INVALID"); EOF fi diff --git a/data/Dockerfiles/dovecot/imapsync_runner.pl b/data/Dockerfiles/dovecot/imapsync_runner.pl index 5b297abd..0c603ff4 100644 --- a/data/Dockerfiles/dovecot/imapsync_runner.pl +++ b/data/Dockerfiles/dovecot/imapsync_runner.pl @@ -36,7 +36,7 @@ sub qqw($) { } $run_dir="/tmp"; -$dsn = 'DBI:mysql:database=' . $ENV{'DBNAME'} . ';mysql_socket=/var/run/mysqld/mysqld.sock'; +$dsn = 'DBI:mysql:database=' . $ENV{'DBNAME'} . ';host=' . $ENV{'DBHOST'} . ';port=' . $ENV{'DBPORT'}; $lock_file = $run_dir . "/imapsync_busy"; $lockmgr = LockFile::Simple->make(-autoclean => 1, -max => 1); $lockmgr->lock($lock_file) || die "can't lock ${lock_file}"; diff --git a/data/Dockerfiles/dovecot/quarantine_notify.py b/data/Dockerfiles/dovecot/quarantine_notify.py index 65f2a0e6..08cd0af0 100755 --- a/data/Dockerfiles/dovecot/quarantine_notify.py +++ b/data/Dockerfiles/dovecot/quarantine_notify.py @@ -50,7 +50,7 @@ try: def query_mysql(query, headers = True, update = False): while True: try: - cnx = mysql.connector.connect(unix_socket = '/var/run/mysqld/mysqld.sock', user=os.environ.get('DBUSER'), passwd=os.environ.get('DBPASS'), database=os.environ.get('DBNAME'), charset="utf8mb4", collation="utf8mb4_general_ci") + cnx = mysql.connector.connect(host=os.environ.get('DBHOST'), port=os.environ.get('DBPORT'), user=os.environ.get('DBUSER'), passwd=os.environ.get('DBPASS'), database=os.environ.get('DBNAME'), charset="utf8mb4", collation="utf8mb4_general_ci") except Exception as ex: print('%s - trying again...' % (ex)) time.sleep(3) diff --git a/data/Dockerfiles/phpfpm/docker-entrypoint.sh b/data/Dockerfiles/phpfpm/docker-entrypoint.sh index 37370113..deed3f02 100755 --- a/data/Dockerfiles/phpfpm/docker-entrypoint.sh +++ b/data/Dockerfiles/phpfpm/docker-entrypoint.sh @@ -3,7 +3,7 @@ function array_by_comma { local IFS=","; echo "$*"; } # Wait for containers -while ! mysqladmin status --socket=/var/run/mysqld/mysqld.sock -u${DBUSER} -p${DBPASS} --silent; do +while ! mysqladmin status --host=${DBHOST} --port=${DBPORT} -u${DBUSER} -p${DBPASS} --silent; do echo "Waiting for SQL..." sleep 2 done @@ -43,7 +43,7 @@ until [[ ${SQL_UPGRADE_STATUS} == 'success' ]]; do echo "MySQL applied an upgrade, debug output:" echo ${SQL_FULL_UPGRADE_RETURN} sleep 3 - while ! mysqladmin status --socket=/var/run/mysqld/mysqld.sock -u${DBUSER} -p${DBPASS} --silent; do + while ! mysqladmin status --host=${DBHOST} --port=${DBPORT} -u${DBUSER} -p${DBPASS} --silent; do echo "Waiting for SQL to return, please wait" sleep 2 done @@ -71,7 +71,7 @@ if [ ${SQL_CHANGED} -eq 1 ]; then fi # Check mysql tz import (master and slave) -TZ_CHECK=$(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT CONVERT_TZ('2019-11-02 23:33:00','Europe/Berlin','UTC') AS time;" -BN 2> /dev/null) +TZ_CHECK=$(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT CONVERT_TZ('2019-11-02 23:33:00','Europe/Berlin','UTC') AS time;" -BN 2> /dev/null) if [[ -z ${TZ_CHECK} ]] || [[ "${TZ_CHECK}" == "NULL" ]]; then SQL_FULL_TZINFO_IMPORT_RETURN=$(curl --silent --insecure -XPOST https://dockerapi/containers/${CONTAINER_ID}/exec -d '{"cmd":"system", "task":"mysql_tzinfo_to_sql"}' --silent -H 'Content-type: application/json') echo "MySQL mysql_tzinfo_to_sql - debug output:" @@ -110,11 +110,11 @@ if [[ "${MASTER}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then while read line do DOMAIN_ARR+=("$line") - done < <(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT domain FROM domain" -Bs) + done < <(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT domain FROM domain" -Bs) while read line do DOMAIN_ARR+=("$line") - done < <(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT alias_domain FROM alias_domain" -Bs) + done < <(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT alias_domain FROM alias_domain" -Bs) if [[ ! -z ${DOMAIN_ARR} ]]; then for domain in "${DOMAIN_ARR[@]}"; do @@ -136,13 +136,13 @@ if [[ "${MASTER}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then VALIDATED_IPS=$(array_by_comma ${VALIDATED_API_ALLOW_FROM_ARR[*]}) if [[ ! -z ${VALIDATED_IPS} ]]; then if [[ ${API_KEY} != "invalid" ]] && [[ ! -z ${API_KEY} ]]; then - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF DELETE FROM api WHERE access = 'rw'; INSERT INTO api (api_key, active, allow_from, access) VALUES ("${API_KEY}", "1", "${VALIDATED_IPS}", "rw"); EOF fi if [[ ${API_KEY_READ_ONLY} != "invalid" ]] && [[ ! -z ${API_KEY_READ_ONLY} ]]; then - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF DELETE FROM api WHERE access = 'ro'; INSERT INTO api (api_key, active, allow_from, access) VALUES ("${API_KEY_READ_ONLY}", "1", "${VALIDATED_IPS}", "ro"); EOF @@ -151,7 +151,7 @@ EOF fi # Create events (master only, STATUS for event on slave will be SLAVESIDE_DISABLED) - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF DROP EVENT IF EXISTS clean_spamalias; DELIMITER // CREATE EVENT clean_spamalias diff --git a/data/Dockerfiles/postfix/postfix.sh b/data/Dockerfiles/postfix/postfix.sh index f981bff6..710a52ea 100755 --- a/data/Dockerfiles/postfix/postfix.sh +++ b/data/Dockerfiles/postfix/postfix.sh @@ -5,7 +5,7 @@ trap "postfix stop" EXIT [[ ! -d /opt/postfix/conf/sql/ ]] && mkdir -p /opt/postfix/conf/sql/ # Wait for MySQL to warm-up -while ! mysqladmin status --socket=/var/run/mysqld/mysqld.sock -u${DBUSER} -p${DBPASS} --silent; do +while ! mysqladmin status --host=${DBHOST} --port=${DBPORT} -u${DBUSER} -p${DBPASS} --silent; do echo "Waiting for database to come up..." sleep 2 done @@ -46,7 +46,7 @@ cat < /opt/postfix/conf/sql/mysql_relay_ne.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT IF(EXISTS(SELECT address, domain FROM alias WHERE address = '%s' @@ -63,7 +63,7 @@ cat < /opt/postfix/conf/sql/mysql_relay_recipient_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT DISTINCT CASE WHEN '%d' IN ( @@ -82,7 +82,7 @@ cat < /opt/postfix/conf/sql/mysql_tls_policy_override_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT CONCAT(policy, ' ', parameters) AS tls_policy FROM tls_policy_override WHERE active = '1' AND dest = '%s' EOF @@ -91,7 +91,7 @@ cat < /opt/postfix/conf/sql/mysql_tls_enforce_in_policy.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT IF(EXISTS( SELECT 'TLS_ACTIVE' FROM alias @@ -109,7 +109,7 @@ cat < /opt/postfix/conf/sql/mysql_sender_dependent_default_transport_maps. # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT GROUP_CONCAT(transport SEPARATOR '') AS transport_maps FROM ( @@ -156,7 +156,7 @@ cat < /opt/postfix/conf/sql/mysql_transport_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT CONCAT('smtp_via_transport_maps:', nexthop) AS transport FROM transports WHERE active = '1' @@ -167,7 +167,7 @@ cat < /opt/postfix/conf/sql/mysql_virtual_resource_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT 'null@localhost' FROM mailbox WHERE kind REGEXP 'location|thing|group' AND username = '%s'; @@ -177,7 +177,7 @@ cat < /opt/postfix/conf/sql/mysql_sasl_passwd_maps_sender_dependent.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT CONCAT_WS(':', username, password) AS auth_data FROM relayhosts WHERE id IN ( @@ -215,7 +215,7 @@ cat < /opt/postfix/conf/sql/mysql_sasl_passwd_maps_transport_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT CONCAT_WS(':', username, password) AS auth_data FROM transports WHERE nexthop = '%s' @@ -228,7 +228,7 @@ cat < /opt/postfix/conf/sql/mysql_virtual_alias_domain_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT username FROM mailbox, alias_domain WHERE alias_domain.alias_domain = '%d' @@ -241,7 +241,7 @@ cat < /opt/postfix/conf/sql/mysql_virtual_alias_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT goto FROM alias WHERE address='%s' @@ -252,7 +252,7 @@ cat < /opt/postfix/conf/sql/mysql_recipient_bcc_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT bcc_dest FROM bcc_maps WHERE local_dest='%s' @@ -264,7 +264,7 @@ cat < /opt/postfix/conf/sql/mysql_sender_bcc_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT bcc_dest FROM bcc_maps WHERE local_dest='%s' @@ -276,7 +276,7 @@ cat < /opt/postfix/conf/sql/mysql_recipient_canonical_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT new_dest FROM recipient_maps WHERE old_dest='%s' @@ -287,7 +287,7 @@ cat < /opt/postfix/conf/sql/mysql_virtual_domains_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT alias_domain from alias_domain WHERE alias_domain='%s' AND active='1' UNION @@ -301,7 +301,7 @@ cat < /opt/postfix/conf/sql/mysql_virtual_mailbox_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT CONCAT(JSON_UNQUOTE(JSON_VALUE(attributes, '$.mailbox_format')), mailbox_path_prefix, '%d/%u/') FROM mailbox WHERE username='%s' AND (active = '1' OR active = '2') EOF @@ -310,7 +310,7 @@ cat < /opt/postfix/conf/sql/mysql_virtual_relay_domain_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '1' AND active = '1' EOF @@ -319,7 +319,7 @@ cat < /opt/postfix/conf/sql/mysql_virtual_sender_acl.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} # First select queries domain and alias_domain to determine if domains are active. query = SELECT goto FROM alias @@ -374,7 +374,7 @@ cat < /opt/postfix/conf/sql/mysql_mbr_access_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT CONCAT('FILTER smtp_via_transport_maps:', nexthop) as transport FROM transports WHERE '%s' REGEXP destination @@ -386,7 +386,7 @@ cat < /opt/postfix/conf/sql/mysql_virtual_spamalias_maps.cf # Autogenerated by mailcow user = ${DBUSER} password = ${DBPASS} -hosts = unix:/var/run/mysqld/mysqld.sock +hosts = inet:${DBHOST}:${DBPORT} dbname = ${DBNAME} query = SELECT goto FROM spamalias WHERE address='%s' diff --git a/data/Dockerfiles/sogo/bootstrap-sogo.sh b/data/Dockerfiles/sogo/bootstrap-sogo.sh index aa15525c..940dafb6 100755 --- a/data/Dockerfiles/sogo/bootstrap-sogo.sh +++ b/data/Dockerfiles/sogo/bootstrap-sogo.sh @@ -1,7 +1,7 @@ #!/bin/bash # Wait for MySQL to warm-up -while ! mysqladmin status --socket=/var/run/mysqld/mysqld.sock -u${DBUSER} -p${DBPASS} --silent; do +while ! mysqladmin status --host=${DBHOST} --port=${DBPORT} -u${DBUSER} -p${DBPASS} --silent; do echo "Waiting for database to come up..." sleep 2 done @@ -14,11 +14,11 @@ do done # Wait for updated schema -DBV_NOW=$(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT version FROM versions WHERE application = 'db_schema';" -BN) +DBV_NOW=$(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT version FROM versions WHERE application = 'db_schema';" -BN) DBV_NEW=$(grep -oE '\$db_version = .*;' init_db.inc.php | sed 's/$db_version = //g;s/;//g' | cut -d \" -f2) while [[ "${DBV_NOW}" != "${DBV_NEW}" ]]; do echo "Waiting for schema update..." - DBV_NOW=$(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT version FROM versions WHERE application = 'db_schema';" -BN) + DBV_NOW=$(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT version FROM versions WHERE application = 'db_schema';" -BN) DBV_NEW=$(grep -oE '\$db_version = .*;' init_db.inc.php | sed 's/$db_version = //g;s/;//g' | cut -d \" -f2) sleep 5 done @@ -27,9 +27,9 @@ echo "DB schema is ${DBV_NOW}" # Recreate view if [[ "${MASTER}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then echo "We are master, preparing sogo_view..." - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "DROP VIEW IF EXISTS sogo_view" + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "DROP VIEW IF EXISTS sogo_view" while [[ ${VIEW_OK} != 'OK' ]]; do - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF CREATE VIEW sogo_view (c_uid, domain, c_name, c_password, c_cn, mail, aliases, ad_aliases, ext_acl, kind, multiple_bookings) AS SELECT mailbox.username, @@ -59,7 +59,7 @@ WHERE GROUP BY mailbox.username; EOF - if [[ ! -z $(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sogo_view'") ]]; then + if [[ ! -z $(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sogo_view'") ]]; then VIEW_OK=OK else echo "Will retry to setup SOGo view in 3s..." @@ -68,7 +68,7 @@ EOF done else while [[ ${VIEW_OK} != 'OK' ]]; do - if [[ ! -z $(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sogo_view'") ]]; then + if [[ ! -z $(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'sogo_view'") ]]; then VIEW_OK=OK else echo "Waiting for SOGo view to be created by master..." @@ -81,12 +81,12 @@ fi if [[ "${MASTER}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then echo "We are master, preparing _sogo_static_view..." while [[ ${STATIC_VIEW_OK} != 'OK' ]]; do - if [[ ! -z $(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '_sogo_static_view'") ]]; then + if [[ ! -z $(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '_sogo_static_view'") ]]; then STATIC_VIEW_OK=OK echo "Updating _sogo_static_view content..." # If changed, also update init_db.inc.php - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "REPLACE INTO _sogo_static_view (c_uid, domain, c_name, c_password, c_cn, mail, aliases, ad_aliases, ext_acl, kind, multiple_bookings) SELECT c_uid, domain, c_name, c_password, c_cn, mail, aliases, ad_aliases, ext_acl, kind, multiple_bookings from sogo_view;" - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "DELETE FROM _sogo_static_view WHERE c_uid NOT IN (SELECT username FROM mailbox WHERE active = '1')" + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "REPLACE INTO _sogo_static_view (c_uid, domain, c_name, c_password, c_cn, mail, aliases, ad_aliases, ext_acl, kind, multiple_bookings) SELECT c_uid, domain, c_name, c_password, c_cn, mail, aliases, ad_aliases, ext_acl, kind, multiple_bookings from sogo_view;" + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "DELETE FROM _sogo_static_view WHERE c_uid NOT IN (SELECT username FROM mailbox WHERE active = '1')" else echo "Waiting for database initialization..." sleep 3 @@ -94,7 +94,7 @@ if [[ "${MASTER}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then done else while [[ ${STATIC_VIEW_OK} != 'OK' ]]; do - if [[ ! -z $(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '_sogo_static_view'") ]]; then + if [[ ! -z $(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '_sogo_static_view'") ]]; then STATIC_VIEW_OK=OK else echo "Waiting for database initialization by master..." @@ -107,9 +107,9 @@ fi # Recreate password update trigger if [[ "${MASTER}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then echo "We are master, preparing update trigger..." - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "DROP TRIGGER IF EXISTS sogo_update_password" + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "DROP TRIGGER IF EXISTS sogo_update_password" while [[ ${TRIGGER_OK} != 'OK' ]]; do - mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF + mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} << EOF DELIMITER - CREATE TRIGGER sogo_update_password AFTER UPDATE ON _sogo_static_view FOR EACH ROW @@ -119,7 +119,7 @@ END; - DELIMITER ; EOF - if [[ ! -z $(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME = 'sogo_update_password'") ]]; then + if [[ ! -z $(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -B -e "SELECT 'OK' FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_NAME = 'sogo_update_password'") ]]; then TRIGGER_OK=OK else echo "Will retry to setup SOGo password update trigger in 3s" @@ -139,7 +139,7 @@ cat < /var/lib/sogo/GNUstep/Defaults/sogod.plist OCSAclURL - mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/sogo_acl + mysql://${DBUSER}:${DBPASS}@${DBHOST}:${DBPORT}/${DBNAME}/sogo_acl SOGoIMAPServer imap://${IPV4_NETWORK}.250:143/?TLS=YES&tlsVerifyMode=none SOGoSieveServer @@ -151,17 +151,17 @@ cat < /var/lib/sogo/GNUstep/Defaults/sogod.plist SOGoEncryptionKey ${RAND_PASS} OCSCacheFolderURL - mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/sogo_cache_folder + mysql://${DBUSER}:${DBPASS}@${DBHOST}:${DBPORT}/${DBNAME}/sogo_cache_folder OCSEMailAlarmsFolderURL - mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/sogo_alarms_folder + mysql://${DBUSER}:${DBPASS}@${DBHOST}:${DBPORT}/${DBNAME}/sogo_alarms_folder OCSFolderInfoURL - mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/sogo_folder_info + mysql://${DBUSER}:${DBPASS}@${DBHOST}:${DBPORT}/${DBNAME}/sogo_folder_info OCSSessionsFolderURL - mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/sogo_sessions_folder + mysql://${DBUSER}:${DBPASS}@${DBHOST}:${DBPORT}/${DBNAME}/sogo_sessions_folder OCSStoreURL - mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/sogo_store + mysql://${DBUSER}:${DBPASS}@${DBHOST}:${DBPORT}/${DBNAME}/sogo_store SOGoProfileURL - mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/sogo_user_profile + mysql://${DBUSER}:${DBPASS}@${DBHOST}:${DBPORT}/${DBNAME}/sogo_user_profile SOGoTimeZone ${TZ} domains @@ -207,14 +207,14 @@ while read -r line gal prependPasswordScheme YES viewURL - mysql://${DBUSER}:${DBPASS}@%2Fvar%2Frun%2Fmysqld%2Fmysqld.sock/${DBNAME}/_sogo_static_view + mysql://${DBUSER}:${DBPASS}@${DBHOST}:${DBPORT}/${DBNAME}/_sogo_static_view " >> /var/lib/sogo/GNUstep/Defaults/sogod.plist # Generate alternative LDAP authentication dict, when SQL authentication fails # This will nevertheless read attributes from LDAP line=${line} envsubst < /etc/sogo/plist_ldap >> /var/lib/sogo/GNUstep/Defaults/sogod.plist echo " " >> /var/lib/sogo/GNUstep/Defaults/sogod.plist -done < <(mysql --socket=/var/run/mysqld/mysqld.sock -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT domain, CASE gal WHEN '1' THEN 'YES' ELSE 'NO' END AS gal FROM domain;" -B -N) +done < <(mysql --host=${DBHOST} --port=${DBPORT} -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SELECT domain, CASE gal WHEN '1' THEN 'YES' ELSE 'NO' END AS gal FROM domain;" -B -N) # Generate footer echo ' diff --git a/data/Dockerfiles/watchdog/watchdog.sh b/data/Dockerfiles/watchdog/watchdog.sh index 231d0ecd..e657cec1 100755 --- a/data/Dockerfiles/watchdog/watchdog.sh +++ b/data/Dockerfiles/watchdog/watchdog.sh @@ -31,7 +31,7 @@ if [[ ! -p /tmp/com_pipe ]]; then fi # Wait for containers -while ! mysqladmin status --socket=/var/run/mysqld/mysqld.sock -u${DBUSER} -p${DBPASS} --silent; do +while ! mysqladmin status --host=${DBHOST} --port=${DBPORT} -u${DBUSER} -p${DBPASS} --silent; do echo "Waiting for SQL..." sleep 2 done @@ -326,8 +326,8 @@ mysql_checks() { while [ ${err_count} -lt ${THRESHOLD} ]; do touch /tmp/mysql-mailcow; echo "$(tail -50 /tmp/mysql-mailcow)" > /tmp/mysql-mailcow err_c_cur=${err_count} - /usr/lib/nagios/plugins/check_mysql -s /var/run/mysqld/mysqld.sock -u ${DBUSER} -p ${DBPASS} -d ${DBNAME} 2>> /tmp/mysql-mailcow 1>&2; err_count=$(( ${err_count} + $? )) - /usr/lib/nagios/plugins/check_mysql_query -s /var/run/mysqld/mysqld.sock -u ${DBUSER} -p ${DBPASS} -d ${DBNAME} -q "SELECT COUNT(*) FROM information_schema.tables" 2>> /tmp/mysql-mailcow 1>&2; err_count=$(( ${err_count} + $? )) + /usr/lib/nagios/plugins/check_mysql -H ${DBHOST} -P ${DBPORT} -u ${DBUSER} -p ${DBPASS} -d ${DBNAME} 2>> /tmp/mysql-mailcow 1>&2; err_count=$(( ${err_count} + $? )) + /usr/lib/nagios/plugins/check_mysql_query -H ${DBHOST} -P ${DBPORT} -u ${DBUSER} -p ${DBPASS} -d ${DBNAME} -q "SELECT COUNT(*) FROM information_schema.tables" 2>> /tmp/mysql-mailcow 1>&2; err_count=$(( ${err_count} + $? )) [ ${err_c_cur} -eq ${err_count} ] && [ ! $((${err_count} - 1)) -lt 0 ] && err_count=$((${err_count} - 1)) diff_c=1 [ ${err_c_cur} -ne ${err_count} ] && diff_c=$(( ${err_c_cur} - ${err_count} )) progress "MySQL/MariaDB" ${THRESHOLD} $(( ${THRESHOLD} - ${err_count} )) ${diff_c} @@ -351,7 +351,7 @@ mysql_repl_checks() { while [ ${err_count} -lt ${THRESHOLD} ]; do touch /tmp/mysql_repl_checks; echo "$(tail -50 /tmp/mysql_repl_checks)" > /tmp/mysql_repl_checks err_c_cur=${err_count} - /usr/lib/nagios/plugins/check_mysql_slavestatus.sh -S /var/run/mysqld/mysqld.sock -u root -p ${DBROOT} 2>> /tmp/mysql_repl_checks 1>&2; err_count=$(( ${err_count} + $? )) + /usr/lib/nagios/plugins/check_mysql_slavestatus.sh -H ${DBHOST} -P ${DBPORT} -u root -p ${DBROOT} 2>> /tmp/mysql_repl_checks 1>&2; err_count=$(( ${err_count} + $? )) [ ${err_c_cur} -eq ${err_count} ] && [ ! $((${err_count} - 1)) -lt 0 ] && err_count=$((${err_count} - 1)) diff_c=1 [ ${err_c_cur} -ne ${err_count} ] && diff_c=$(( ${err_c_cur} - ${err_count} )) progress "MySQL/MariaDB replication" ${THRESHOLD} $(( ${THRESHOLD} - ${err_count} )) ${diff_c} diff --git a/data/conf/rspamd/dynmaps/aliasexp.php b/data/conf/rspamd/dynmaps/aliasexp.php index 947a0244..0d0a90d6 100644 --- a/data/conf/rspamd/dynmaps/aliasexp.php +++ b/data/conf/rspamd/dynmaps/aliasexp.php @@ -6,8 +6,7 @@ require_once "vars.inc.php"; // Do not show errors, we log to using error_log ini_set('error_reporting', 0); // Init database -//$dsn = $database_type . ':host=' . $database_host . ';dbname=' . $database_name; -$dsn = $database_type . ":unix_socket=" . $database_sock . ";dbname=" . $database_name; +$dsn = $database_type . ":host=" . $database_host . ";port=" . $database_port . ";dbname=" . $database_name $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, diff --git a/data/conf/rspamd/dynmaps/bcc.php b/data/conf/rspamd/dynmaps/bcc.php index 3145feeb..7da0f3fa 100644 --- a/data/conf/rspamd/dynmaps/bcc.php +++ b/data/conf/rspamd/dynmaps/bcc.php @@ -6,8 +6,7 @@ require_once "vars.inc.php"; // Do not show errors, we log to using error_log ini_set('error_reporting', 0); // Init database -//$dsn = $database_type . ':host=' . $database_host . ';dbname=' . $database_name; -$dsn = $database_type . ":unix_socket=" . $database_sock . ";dbname=" . $database_name; +$dsn = $database_type . ":host=" . $database_host . ";port=" . $database_port . ";dbname=" . $database_name $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, diff --git a/data/conf/rspamd/dynmaps/settings.php b/data/conf/rspamd/dynmaps/settings.php index 274e9da2..b5e4c939 100644 --- a/data/conf/rspamd/dynmaps/settings.php +++ b/data/conf/rspamd/dynmaps/settings.php @@ -9,8 +9,7 @@ require_once "vars.inc.php"; // Getting headers sent by the client. ini_set('error_reporting', 0); -//$dsn = $database_type . ':host=' . $database_host . ';dbname=' . $database_name; -$dsn = $database_type . ":unix_socket=" . $database_sock . ";dbname=" . $database_name; +$dsn = $database_type . ":host=" . $database_host . ";port=" . $database_port . ";dbname=" . $database_name $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, diff --git a/data/conf/rspamd/meta_exporter/pipe.php b/data/conf/rspamd/meta_exporter/pipe.php index 88e66e8e..7579312f 100644 --- a/data/conf/rspamd/meta_exporter/pipe.php +++ b/data/conf/rspamd/meta_exporter/pipe.php @@ -6,8 +6,7 @@ require_once "vars.inc.php"; // Do not show errors, we log to using error_log ini_set('error_reporting', 0); // Init database -//$dsn = $database_type . ':host=' . $database_host . ';dbname=' . $database_name; -$dsn = $database_type . ":unix_socket=" . $database_sock . ";dbname=" . $database_name; +$dsn = $database_type . ":host=" . $database_host . ";port=" . $database_port . ";dbname=" . $database_name; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, diff --git a/data/conf/rspamd/meta_exporter/pushover.php b/data/conf/rspamd/meta_exporter/pushover.php index 10265d15..cc41e1cf 100644 --- a/data/conf/rspamd/meta_exporter/pushover.php +++ b/data/conf/rspamd/meta_exporter/pushover.php @@ -6,8 +6,7 @@ require_once "vars.inc.php"; // Do not show errors, we log to using error_log ini_set('error_reporting', 0); // Init database -//$dsn = $database_type . ':host=' . $database_host . ';dbname=' . $database_name; -$dsn = $database_type . ":unix_socket=" . $database_sock . ";dbname=" . $database_name; +$dsn = $database_type . ":host=" . $database_host . ";port=" . $database_port . ";dbname=" . $database_name $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, diff --git a/data/web/autodiscover.php b/data/web/autodiscover.php index 992524b3..0ca0f989 100644 --- a/data/web/autodiscover.php +++ b/data/web/autodiscover.php @@ -41,8 +41,8 @@ if (getenv('SKIP_SOGO') == "y") { $autodiscover_config['autodiscoverType'] = 'imap'; } -//$dsn = $database_type . ":host=" . $database_host . ";dbname=" . $database_name; -$dsn = $database_type . ":unix_socket=" . $database_sock . ";dbname=" . $database_name; +$dsn = $database_type . ":host=" . $database_host . ";port=" . $database_port . ";dbname=" . $database_name; + $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, diff --git a/data/web/inc/init_db.inc.php b/data/web/inc/init_db.inc.php index e286ab55..a8863551 100644 --- a/data/web/inc/init_db.inc.php +++ b/data/web/inc/init_db.inc.php @@ -1443,7 +1443,7 @@ if (php_sapi_name() == "cli") { // $hrs = floor($mins / 60); // $mins -= $hrs * 60; // $offset = sprintf('%+d:%02d', $hrs*$sgn, $mins); - $dsn = $database_type . ":unix_socket=" . $database_sock . ";dbname=" . $database_name; + $dsn = $database_type . ":host=" . $database_host . ";port=" . $database_port . ";dbname=" . $database_name; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, diff --git a/data/web/inc/prerequisites.inc.php b/data/web/inc/prerequisites.inc.php index b3b1cc13..b4344a63 100644 --- a/data/web/inc/prerequisites.inc.php +++ b/data/web/inc/prerequisites.inc.php @@ -86,7 +86,7 @@ exit; // $mins -= $hrs * 60; // $offset = sprintf('%+d:%02d', $hrs*$sgn, $mins); -$dsn = $database_type . ":unix_socket=" . $database_sock . ";dbname=" . $database_name; +$dsn = $database_type . ":host=" . $database_host . ";port=" . $database_port . ";dbname=" . $database_name; $opt = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, diff --git a/data/web/inc/vars.inc.php b/data/web/inc/vars.inc.php index 5e6d72e7..47a38525 100644 --- a/data/web/inc/vars.inc.php +++ b/data/web/inc/vars.inc.php @@ -9,8 +9,8 @@ This file will be reset on upgrades. // SQL database connection variables $database_type = 'mysql'; -$database_sock = '/var/run/mysqld/mysqld.sock'; -$database_host = 'mysql'; +$database_host = getenv('DBHOST'); +$database_port = getenv('DBHOST'); $database_user = getenv('DBUSER'); $database_pass = getenv('DBPASS'); $database_name = getenv('DBNAME'); diff --git a/generate_config.sh b/generate_config.sh index d09dae9e..3ef43bbe 100755 --- a/generate_config.sh +++ b/generate_config.sh @@ -227,6 +227,8 @@ MAILCOW_PASS_SCHEME=BLF-CRYPT # SQL database configuration # ------------------------------ +DBHOST=mysql-mailcow +DBPORT=3306 DBNAME=mailcow DBUSER=mailcow @@ -538,4 +540,4 @@ else echo -e "\e[33mCannot determine current git repository version...\e[0m" fi -detect_bad_asn \ No newline at end of file +detect_bad_asn