init.sql 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  1. CREATE TABLE IF NOT EXISTS `admin` (
  2. `username` VARCHAR(255) NOT NULL,
  3. `password` VARCHAR(255) NOT NULL,
  4. `superadmin` TINYINT(1) NOT NULL DEFAULT '0',
  5. `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  6. `modified` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  7. `active` TINYINT(1) NOT NULL DEFAULT '1',
  8. PRIMARY KEY (`username`)
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  10. CREATE TABLE IF NOT EXISTS `alias` (
  11. `address` VARCHAR(255) NOT NULL,
  12. `goto` TEXT NOT NULL,
  13. `domain` VARCHAR(255) NOT NULL,
  14. `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  15. `modified` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  16. `active` TINYINT(1) NOT NULL DEFAULT '1',
  17. PRIMARY KEY (`address`),
  18. KEY `domain` (`domain`)
  19. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  20. CREATE TABLE IF NOT EXISTS `sender_acl` (
  21. `logged_in_as` VARCHAR(255) NOT NULL,
  22. `send_as` VARCHAR(255) NOT NULL
  23. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  24. CREATE TABLE IF NOT EXISTS `spamalias` (
  25. `address` VARCHAR(255) NOT NULL,
  26. `goto` TEXT NOT NULL,
  27. `validity` INT(11) NOT NULL,
  28. PRIMARY KEY (`address`)
  29. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  30. CREATE TABLE IF NOT EXISTS `alias_domain` (
  31. `alias_domain` VARCHAR(255) NOT NULL,
  32. `target_domain` VARCHAR(255) NOT NULL,
  33. `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  34. `modified` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  35. `active` TINYINT(1) NOT NULL DEFAULT '1',
  36. PRIMARY KEY (`alias_domain`),
  37. KEY `active` (`active`),
  38. KEY `target_domain` (`target_domain`)
  39. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  40. CREATE TABLE IF NOT EXISTS `domain` (
  41. `domain` VARCHAR(255) NOT NULL,
  42. `description` VARCHAR(255),
  43. `aliases` INT(10) NOT NULL DEFAULT '0',
  44. `mailboxes` INT(10) NOT NULL DEFAULT '0',
  45. `maxquota` BIGINT(20) NOT NULL DEFAULT '0',
  46. `quota` BIGINT(20) NOT NULL DEFAULT '0',
  47. `transport` VARCHAR(255) NOT NULL,
  48. `backupmx` TINYINT(1) NOT NULL DEFAULT '0',
  49. `relay_all_recipients` TINYINT(1) NOT NULL DEFAULT '0',
  50. `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  51. `modified` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  52. `active` TINYINT(1) NOT NULL DEFAULT '1',
  53. PRIMARY KEY (`domain`)
  54. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  55. CREATE TABLE IF NOT EXISTS `domain_admins` (
  56. `username` VARCHAR(255) NOT NULL,
  57. `domain` VARCHAR(255) NOT NULL,
  58. `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  59. `active` TINYINT(1) NOT NULL DEFAULT '1',
  60. KEY `username` (`username`)
  61. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  62. CREATE TABLE IF NOT EXISTS `mailbox` (
  63. `username` VARCHAR(255) NOT NULL,
  64. `password` VARCHAR(255) NOT NULL,
  65. `name` VARCHAR(255),
  66. `maildir` VARCHAR(255) NOT NULL,
  67. `quota` BIGINT(20) NOT NULL DEFAULT '0',
  68. `local_part` VARCHAR(255) NOT NULL,
  69. `domain` VARCHAR(255) NOT NULL,
  70. `created` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  71. `modified` DATETIME NOT NULL DEFAULT '2016-01-01 00:00:00',
  72. `tls_enforce_in` TINYINT(1) NOT NULL DEFAULT '0',
  73. `tls_enforce_out` TINYINT(1) NOT NULL DEFAULT '0',
  74. `kind` VARCHAR(100) NOT NULL DEFAULT '',
  75. `multiple_bookings` TINYINT(1) NOT NULL DEFAULT '0',
  76. `wants_tagged_subject` TINYINT(1) NOT NULL DEFAULT '0',
  77. `active` TINYINT(1) NOT NULL DEFAULT '1',
  78. PRIMARY KEY (`username`),
  79. KEY `domain` (`domain`)
  80. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  81. CREATE TABLE IF NOT EXISTS `quota2` (
  82. `username` VARCHAR(100) NOT NULL,
  83. `bytes` BIGINT(20) NOT NULL DEFAULT '0',
  84. `messages` INT(11) NOT NULL DEFAULT '0',
  85. PRIMARY KEY (`username`)
  86. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  87. CREATE TABLE IF NOT EXISTS `filterconf` (
  88. `object` VARCHAR(100) NOT NULL DEFAULT '',
  89. `option` VARCHAR(50) NOT NULL DEFAULT '',
  90. `value` VARCHAR(100) NOT NULL DEFAULT '',
  91. `prefid` INT(11) NOT NULL AUTO_INCREMENT,
  92. PRIMARY KEY (`prefid`),
  93. KEY `object` (`object`)
  94. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  95. CREATE TABLE IF NOT EXISTS `imapsync` (
  96. `id` INT NOT NULL AUTO_INCREMENT,
  97. `user2` VARCHAR(255) NOT NULL,
  98. `host1` VARCHAR(255) NOT NULL,
  99. `authmech1` ENUM('PLAIN','LOGIN','CRAM-MD5') DEFAULT 'PLAIN',
  100. `regextrans2` VARCHAR(255) DEFAULT '',
  101. `authmd51` TINYINT(1) NOT NULL DEFAULT 0,
  102. `domain2` VARCHAR(255) NOT NULL DEFAULT '',
  103. `subfolder2` VARCHAR(255) NOT NULL DEFAULT '',
  104. `user1` VARCHAR(255) NOT NULL,
  105. `password1` VARCHAR(255) NOT NULL,
  106. `exclude` VARCHAR(500) NOT NULL DEFAULT '',
  107. `maxage` SMALLINT NOT NULL DEFAULT '0',
  108. `mins_interval` VARCHAR(50) NOT NULL,
  109. `port1` SMALLINT NOT NULL,
  110. `enc1` ENUM('TLS','SSL','PLAIN') DEFAULT 'TLS',
  111. `delete2duplicates` TINYINT(1) NOT NULL DEFAULT '1',
  112. `returned_text` TEXT,
  113. `last_run` TIMESTAMP NULL DEFAULT NULL,
  114. `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  115. `modified` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  116. `active` TINYINT(1) NOT NULL DEFAULT '0',
  117. PRIMARY KEY (`id`)
  118. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  119. CREATE TABLE IF NOT EXISTS `tfa` (
  120. `id` INT NOT NULL AUTO_INCREMENT,
  121. `username` VARCHAR(255) NOT NULL,
  122. `authmech` ENUM('yubi_otp', 'u2f', 'hotp', 'totp'),
  123. `secret` VARCHAR(255) DEFAULT NULL,
  124. `keyHandle` VARCHAR(255) DEFAULT NULL,
  125. `publicKey` VARCHAR(255) DEFAULT NULL,
  126. `counter` INT NOT NULL DEFAULT '0',
  127. `certificate` TEXT,
  128. `active` TINYINT(1) NOT NULL DEFAULT '0',
  129. PRIMARY KEY (`id`)
  130. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  131. DROP VIEW IF EXISTS grouped_mail_aliases;
  132. DROP VIEW IF EXISTS grouped_sender_acl;
  133. DROP VIEW IF EXISTS grouped_domain_alias_address;
  134. CREATE VIEW grouped_mail_aliases (username, aliases) AS
  135. SELECT goto, IFNULL(GROUP_CONCAT(address SEPARATOR ' '), '') AS address FROM alias
  136. WHERE address!=goto
  137. AND active = '1'
  138. AND address NOT LIKE '@%'
  139. GROUP BY goto;
  140. CREATE VIEW grouped_sender_acl (username, send_as) AS
  141. SELECT logged_in_as, IFNULL(GROUP_CONCAT(send_as SEPARATOR ' '), '') AS send_as FROM sender_acl
  142. WHERE send_as NOT LIKE '@%'
  143. GROUP BY logged_in_as;
  144. CREATE VIEW grouped_domain_alias_address (username, ad_alias) AS
  145. SELECT username, IFNULL(GROUP_CONCAT(local_part, '@', alias_domain SEPARATOR ' '), '') AS ad_alias FROM mailbox
  146. LEFT OUTER JOIN alias_domain on target_domain=domain GROUP BY username;
  147. CREATE TABLE IF NOT EXISTS sogo_acl (
  148. c_folder_id INTEGER NOT NULL,
  149. c_object character varying(255) NOT NULL,
  150. c_uid character varying(255) NOT NULL,
  151. c_role character varying(80) NOT NULL
  152. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  153. CREATE TABLE IF NOT EXISTS sogo_alarms_folder (
  154. c_path VARCHAR(255) NOT NULL,
  155. c_name VARCHAR(255) NOT NULL,
  156. c_uid VARCHAR(255) NOT NULL,
  157. c_recurrence_id INT(11) DEFAULT NULL,
  158. c_alarm_number INT(11) NOT NULL,
  159. c_alarm_date INT(11) NOT NULL
  160. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  161. CREATE TABLE IF NOT EXISTS sogo_cache_folder (
  162. c_uid VARCHAR(255) NOT NULL,
  163. c_path VARCHAR(255) NOT NULL,
  164. c_parent_path VARCHAR(255) DEFAULT NULL,
  165. c_type TINYINT(3) unsigned NOT NULL,
  166. c_creationdate INT(11) NOT NULL,
  167. c_lastmodified INT(11) NOT NULL,
  168. c_version INT(11) NOT NULL DEFAULT '0',
  169. c_deleted TINYINT(4) NOT NULL DEFAULT '0',
  170. c_content longTEXT,
  171. PRIMARY KEY (c_uid,c_path)
  172. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  173. CREATE TABLE IF NOT EXISTS sogo_folder_info (
  174. c_folder_id BIGINT(20) unsigned NOT NULL AUTO_INCREMENT,
  175. c_path VARCHAR(255) NOT NULL,
  176. c_path1 VARCHAR(255) NOT NULL,
  177. c_path2 VARCHAR(255) DEFAULT NULL,
  178. c_path3 VARCHAR(255) DEFAULT NULL,
  179. c_path4 VARCHAR(255) DEFAULT NULL,
  180. c_foldername VARCHAR(255) NOT NULL,
  181. c_location INTeger NULL,
  182. c_quick_location VARCHAR(2048) DEFAULT NULL,
  183. c_acl_location VARCHAR(2048) DEFAULT NULL,
  184. c_folder_type VARCHAR(255) NOT NULL,
  185. PRIMARY KEY (c_path),
  186. UNIQUE KEY c_folder_id (c_folder_id)
  187. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  188. CREATE TABLE IF NOT EXISTS sogo_quick_appointment (
  189. c_folder_id INTeger NOT NULL,
  190. c_name character varying(255) NOT NULL,
  191. c_uid character varying(255) NOT NULL,
  192. c_startdate INTeger,
  193. c_enddate INTeger,
  194. c_cycleenddate INTeger,
  195. c_title character varying(1000) NOT NULL,
  196. c_participants TEXT,
  197. c_isallday INTeger,
  198. c_iscycle INTeger,
  199. c_cycleinfo TEXT,
  200. c_classification INTeger NOT NULL,
  201. c_isopaque INTeger NOT NULL,
  202. c_status INTeger NOT NULL,
  203. c_priority INTeger,
  204. c_location character varying(255),
  205. c_orgmail character varying(255),
  206. c_partmails TEXT,
  207. c_partstates TEXT,
  208. c_category character varying(255),
  209. c_sequence INTeger,
  210. c_component character varying(10) NOT NULL,
  211. c_nextalarm INTeger,
  212. c_description TEXT,
  213. CONSTRAINT sogo_quick_appointment_pkey PRIMARY KEY (c_folder_id, c_name)
  214. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  215. CREATE TABLE IF NOT EXISTS sogo_quick_contact (
  216. c_folder_id INTeger NOT NULL,
  217. c_name character varying(255) NOT NULL,
  218. c_givenname character varying(255),
  219. c_cn character varying(255),
  220. c_sn character varying(255),
  221. c_screenname character varying(255),
  222. c_l character varying(255),
  223. c_mail character varying(255),
  224. c_o character varying(255),
  225. c_ou character varying(255),
  226. c_telephonenumber character varying(255),
  227. c_categories character varying(255),
  228. c_component character varying(10) NOT NULL,
  229. CONSTRAINT sogo_quick_contact_pkey PRIMARY KEY (c_folder_id, c_name)
  230. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  231. CREATE TABLE IF NOT EXISTS sogo_sessions_folder (
  232. c_id VARCHAR(255) NOT NULL,
  233. c_value VARCHAR(255) NOT NULL,
  234. c_creationdate INT(11) NOT NULL,
  235. c_lastseen INT(11) NOT NULL,
  236. PRIMARY KEY (c_id)
  237. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  238. CREATE TABLE IF NOT EXISTS sogo_store (
  239. c_folder_id INTeger NOT NULL,
  240. c_name character varying(255) NOT NULL,
  241. c_content mediumTEXT NOT NULL,
  242. c_creationdate INTeger NOT NULL,
  243. c_lastmodified INTeger NOT NULL,
  244. c_version INTeger NOT NULL,
  245. c_deleted INTeger,
  246. CONSTRAINT sogo_store_pkey PRIMARY KEY (c_folder_id, c_name)
  247. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  248. CREATE TABLE IF NOT EXISTS sogo_user_profile (
  249. c_uid VARCHAR(255) NOT NULL,
  250. c_defaults TEXT,
  251. c_settings TEXT,
  252. PRIMARY KEY (c_uid)
  253. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
  254. INSERT INTO `admin` (username, password, superadmin, created, modified, active) SELECT 'admin', '{SSHA256}K8eVJ6YsZbQCfuJvSUbaQRLr0HPLz5rC9IAp0PAFl0tmNDBkMDc0NDAyOTAxN2Rk', 1, NOW(), NOW(), 1 WHERE NOT EXISTS (SELECT * FROM `admin`);
  255. DELETE FROM `domain_admins`;
  256. 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`);