diff --git a/data/web/inc/init.sql b/data/web/inc/init.sql deleted file mode 100644 index 84e19f74..00000000 --- a/data/web/inc/init.sql +++ /dev/null @@ -1,281 +0,0 @@ -CREATE TABLE IF NOT EXISTS `admin` ( - `username` VARCHAR(255) NOT NULL, - `password` VARCHAR(255) NOT NULL, - `superadmin` TINYINT(1) NOT NULL DEFAULT '0', - `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `modified` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `active` TINYINT(1) NOT NULL DEFAULT '1', - PRIMARY KEY (`username`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `alias` ( - `address` VARCHAR(255) NOT NULL, - `goto` TEXT NOT NULL, - `domain` VARCHAR(255) NOT NULL, - `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `modified` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `active` TINYINT(1) NOT NULL DEFAULT '1', - PRIMARY KEY (`address`), - KEY `domain` (`domain`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `sender_acl` ( - `logged_in_as` VARCHAR(255) NOT NULL, - `send_as` VARCHAR(255) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `spamalias` ( - `address` VARCHAR(255) NOT NULL, - `goto` TEXT NOT NULL, - `validity` INT(11) NOT NULL, - PRIMARY KEY (`address`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `alias_domain` ( - `alias_domain` VARCHAR(255) NOT NULL, - `target_domain` VARCHAR(255) NOT NULL, - `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `modified` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `active` TINYINT(1) NOT NULL DEFAULT '1', - PRIMARY KEY (`alias_domain`), - KEY `active` (`active`), - KEY `target_domain` (`target_domain`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `domain` ( - `domain` VARCHAR(255) NOT NULL, - `description` VARCHAR(255), - `aliases` INT(10) NOT NULL DEFAULT '0', - `mailboxes` INT(10) NOT NULL DEFAULT '0', - `maxquota` BIGINT(20) NOT NULL DEFAULT '0', - `quota` BIGINT(20) NOT NULL DEFAULT '0', - `transport` VARCHAR(255) NOT NULL, - `backupmx` TINYINT(1) NOT NULL DEFAULT '0', - `relay_all_recipients` TINYINT(1) NOT NULL DEFAULT '0', - `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `modified` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `active` TINYINT(1) NOT NULL DEFAULT '1', - PRIMARY KEY (`domain`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `domain_admins` ( - `username` VARCHAR(255) NOT NULL, - `domain` VARCHAR(255) NOT NULL, - `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `active` TINYINT(1) NOT NULL DEFAULT '1', - KEY `username` (`username`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `mailbox` ( - `username` VARCHAR(255) NOT NULL, - `password` VARCHAR(255) NOT NULL, - `name` VARCHAR(255), - `maildir` VARCHAR(255) NOT NULL, - `quota` BIGINT(20) NOT NULL DEFAULT '0', - `local_part` VARCHAR(255) NOT NULL, - `domain` VARCHAR(255) NOT NULL, - `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `modified` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00', - `tls_enforce_in` TINYINT(1) NOT NULL DEFAULT '0', - `tls_enforce_out` TINYINT(1) NOT NULL DEFAULT '0', - `kind` VARCHAR(100) NOT NULL DEFAULT '', - `multiple_bookings` TINYINT(1) NOT NULL DEFAULT '0', - `wants_tagged_subject` TINYINT(1) NOT NULL DEFAULT '0', - `active` TINYINT(1) NOT NULL DEFAULT '1', - PRIMARY KEY (`username`), - KEY `domain` (`domain`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `quota2` ( - `username` VARCHAR(100) NOT NULL, - `bytes` BIGINT(20) NOT NULL DEFAULT '0', - `messages` INT(11) NOT NULL DEFAULT '0', - PRIMARY KEY (`username`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `filterconf` ( - `object` VARCHAR(100) NOT NULL DEFAULT '', - `option` VARCHAR(50) NOT NULL DEFAULT '', - `value` VARCHAR(100) NOT NULL DEFAULT '', - `prefid` INT(11) NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`prefid`), - KEY `object` (`object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `imapsync` ( - `id` INT NOT NULL AUTO_INCREMENT, - `user2` VARCHAR(255) NOT NULL, - `host1` VARCHAR(255) NOT NULL, - `authmech1` ENUM('PLAIN','LOGIN','CRAM-MD5') DEFAULT 'PLAIN', - `regextrans2` VARCHAR(255) DEFAULT '', - `authmd51` TINYINT(1) NOT NULL DEFAULT 0, - `domain2` VARCHAR(255) NOT NULL DEFAULT '', - `subfolder2` VARCHAR(255) NOT NULL DEFAULT '', - `user1` VARCHAR(255) NOT NULL, - `password1` VARCHAR(255) NOT NULL, - `exclude` VARCHAR(500) NOT NULL DEFAULT '', - `maxage` SMALLINT NOT NULL DEFAULT '0', - `mins_interval` VARCHAR(50) NOT NULL, - `port1` SMALLINT NOT NULL, - `enc1` ENUM('TLS','SSL','PLAIN') DEFAULT 'TLS', - `delete2duplicates` TINYINT(1) NOT NULL DEFAULT '1', - `returned_text` TEXT, - `last_run` TIMESTAMP NULL DEFAULT NULL, - `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - `active` TINYINT(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS `tfa` ( - `id` INT NOT NULL AUTO_INCREMENT, - `username` VARCHAR(255) NOT NULL, - `authmech` ENUM('yubi_otp', 'u2f', 'hotp', 'totp'), - `secret` VARCHAR(255) DEFAULT NULL, - `keyHandle` VARCHAR(255) DEFAULT NULL, - `publicKey` VARCHAR(255) DEFAULT NULL, - `counter` INT NOT NULL DEFAULT '0', - `certificate` TEXT, - `active` TINYINT(1) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -DROP VIEW IF EXISTS grouped_mail_aliases; -DROP VIEW IF EXISTS grouped_sender_acl; -DROP VIEW IF EXISTS grouped_domain_alias_address; - -CREATE VIEW grouped_mail_aliases (username, aliases) AS -SELECT goto, IFNULL(GROUP_CONCAT(address SEPARATOR ' '), '') AS address FROM alias -WHERE address!=goto -AND active = '1' -AND address NOT LIKE '@%' -GROUP BY goto; - -CREATE VIEW grouped_sender_acl (username, send_as) AS -SELECT logged_in_as, IFNULL(GROUP_CONCAT(send_as SEPARATOR ' '), '') AS send_as FROM sender_acl -WHERE send_as NOT LIKE '@%' -GROUP BY logged_in_as; - -CREATE VIEW grouped_domain_alias_address (username, ad_alias) AS -SELECT username, IFNULL(GROUP_CONCAT(local_part, '@', alias_domain SEPARATOR ' '), '') AS ad_alias FROM mailbox -LEFT OUTER JOIN alias_domain on target_domain=domain GROUP BY username; - -CREATE TABLE IF NOT EXISTS sogo_acl ( - c_folder_id INTEGER NOT NULL, - c_object character varying(255) NOT NULL, - c_uid character varying(255) NOT NULL, - c_role character varying(80) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS sogo_alarms_folder ( - c_path VARCHAR(255) NOT NULL, - c_name VARCHAR(255) NOT NULL, - c_uid VARCHAR(255) NOT NULL, - c_recurrence_id INT(11) DEFAULT NULL, - c_alarm_number INT(11) NOT NULL, - c_alarm_date INT(11) NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS sogo_cache_folder ( - c_uid VARCHAR(255) NOT NULL, - c_path VARCHAR(255) NOT NULL, - c_parent_path VARCHAR(255) DEFAULT NULL, - c_type TINYINT(3) unsigned NOT NULL, - c_creationdate INT(11) NOT NULL, - c_lastmodified INT(11) NOT NULL, - c_version INT(11) NOT NULL DEFAULT '0', - c_deleted TINYINT(4) NOT NULL DEFAULT '0', - c_content longTEXT, - PRIMARY KEY (c_uid,c_path) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS sogo_folder_info ( - c_folder_id BIGINT(20) unsigned NOT NULL AUTO_INCREMENT, - c_path VARCHAR(255) NOT NULL, - c_path1 VARCHAR(255) NOT NULL, - c_path2 VARCHAR(255) DEFAULT NULL, - c_path3 VARCHAR(255) DEFAULT NULL, - c_path4 VARCHAR(255) DEFAULT NULL, - c_foldername VARCHAR(255) NOT NULL, - c_location INTeger NULL, - c_quick_location VARCHAR(2048) DEFAULT NULL, - c_acl_location VARCHAR(2048) DEFAULT NULL, - c_folder_type VARCHAR(255) NOT NULL, - PRIMARY KEY (c_path), - UNIQUE KEY c_folder_id (c_folder_id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS sogo_quick_appointment ( - c_folder_id INTeger NOT NULL, - c_name character varying(255) NOT NULL, - c_uid character varying(255) NOT NULL, - c_startdate INTeger, - c_enddate INTeger, - c_cycleenddate INTeger, - c_title character varying(1000) NOT NULL, - c_participants TEXT, - c_isallday INTeger, - c_iscycle INTeger, - c_cycleinfo TEXT, - c_classification INTeger NOT NULL, - c_isopaque INTeger NOT NULL, - c_status INTeger NOT NULL, - c_priority INTeger, - c_location character varying(255), - c_orgmail character varying(255), - c_partmails TEXT, - c_partstates TEXT, - c_category character varying(255), - c_sequence INTeger, - c_component character varying(10) NOT NULL, - c_nextalarm INTeger, - c_description TEXT, - CONSTRAINT sogo_quick_appointment_pkey PRIMARY KEY (c_folder_id, c_name) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS sogo_quick_contact ( - c_folder_id INTeger NOT NULL, - c_name character varying(255) NOT NULL, - c_givenname character varying(255), - c_cn character varying(255), - c_sn character varying(255), - c_screenname character varying(255), - c_l character varying(255), - c_mail character varying(255), - c_o character varying(255), - c_ou character varying(255), - c_telephonenumber character varying(255), - c_categories character varying(255), - c_component character varying(10) NOT NULL, - CONSTRAINT sogo_quick_contact_pkey PRIMARY KEY (c_folder_id, c_name) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS sogo_sessions_folder ( - c_id VARCHAR(255) NOT NULL, - c_value VARCHAR(255) NOT NULL, - c_creationdate INT(11) NOT NULL, - c_lastseen INT(11) NOT NULL, - PRIMARY KEY (c_id) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS sogo_store ( - c_folder_id INTeger NOT NULL, - c_name character varying(255) NOT NULL, - c_content mediumTEXT NOT NULL, - c_creationdate INTeger NOT NULL, - c_lastmodified INTeger NOT NULL, - c_version INTeger NOT NULL, - c_deleted INTeger, - CONSTRAINT sogo_store_pkey PRIMARY KEY (c_folder_id, c_name) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -CREATE TABLE IF NOT EXISTS sogo_user_profile ( - c_uid VARCHAR(255) NOT NULL, - c_defaults TEXT, - c_settings TEXT, - PRIMARY KEY (c_uid) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC; - -INSERT INTO `admin` (username, password, superadmin, created, modified, active) SELECT 'admin', '{SSHA256}K8eVJ6YsZbQCfuJvSUbaQRLr0HPLz5rC9IAp0PAFl0tmNDBkMDc0NDAyOTAxN2Rk', 1, NOW(), NOW(), 1 WHERE NOT EXISTS (SELECT * FROM `admin`); -DELETE FROM `domain_admins`; -INSERT INTO `domain_admins` (username, domain, created, active) SELECT `username`, 'ALL', NOW(), 1 FROM `admin` WHERE superadmin='1' AND `username` NOT IN (SELECT `username` FROM `domain_admins`); diff --git a/docker-compose.yml b/docker-compose.yml index b3d18790..eac8bb29 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -55,6 +55,17 @@ services: aliases: - redis +# clamd-mailcow: +# image: mailcow/clamd +# restart: always +# dns: +# - 172.22.1.254 +# dns_search: mailcow-network +# networks: +# mailcow-network: +# aliases: +# - clamd + rspamd-mailcow: image: mailcow/rspamd build: ./data/Dockerfiles/rspamd