1-- $Id: maia-mysql.sql 1568 2011-07-01 01:12:12Z rjl $
2--
3-- PLEASE NOTE: WHEN EDITING THIS FILE, USE iso-8859-1
4--
5-- MAIA MAILGUARD LICENSE v.1.0
6--
7-- Copyright 2004 by Robert LeBlanc <rjl@renaissoft.com>
8--                   David Morton   <mortonda@dgrmm.net>
9-- All rights reserved.
10--
11-- PREAMBLE
12--
13-- This License is designed for users of Maia Mailguard
14-- ("the Software") who wish to support the Maia Mailguard project by
15-- leaving "Maia Mailguard" branding information in the HTML output
16-- of the pages generated by the Software, and providing links back
17-- to the Maia Mailguard home page.  Users who wish to remove this
18-- branding information should contact the copyright owner to obtain
19-- a Rebranding License.
20--
21-- DEFINITION OF TERMS
22--
23-- The "Software" refers to Maia Mailguard, including all of the
24-- associated PHP, Perl, and SQL scripts, documentation files, graphic
25-- icons and logo images.
26--
27-- GRANT OF LICENSE
28--
29-- Redistribution and use in source and binary forms, with or without
30-- modification, are permitted provided that the following conditions
31-- are met:
32--
33-- 1. Redistributions of source code must retain the above copyright
34--    notice, this list of conditions and the following disclaimer.
35--
36-- 2. Redistributions in binary form must reproduce the above copyright
37--    notice, this list of conditions and the following disclaimer in the
38--    documentation and/or other materials provided with the distribution.
39--
40-- 3. The end-user documentation included with the redistribution, if
41--    any, must include the following acknowledgment:
42--
43--    "This product includes software developed by Robert LeBlanc
44--    <rjl@renaissoft.com>."
45--
46--    Alternately, this acknowledgment may appear in the software itself,
47--    if and wherever such third-party acknowledgments normally appear.
48--
49-- 4. At least one of the following branding conventions must be used:
50--
51--    a. The Maia Mailguard logo appears in the page-top banner of
52--       all HTML output pages in an unmodified form, and links
53--       directly to the Maia Mailguard home page; or
54--
55--    b. The "Powered by Maia Mailguard" graphic appears in the HTML
56--       output of all gateway pages that lead to this software,
57--       linking directly to the Maia Mailguard home page; or
58--
59--    c. A separate Rebranding License is obtained from the copyright
60--       owner, exempting the Licensee from 4(a) and 4(b), subject to
61--       the additional conditions laid out in that license document.
62--
63-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS
64-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
65-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
66-- FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
67-- COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
68-- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
69-- BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
70-- OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
71-- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
72-- TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
73-- USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
74
75
76-- [users] contains maiad's per-address settings, and
77-- links e-mail addresses to Maia users.
78
79CREATE TABLE users (
80  id			int unsigned NOT NULL auto_increment,
81  priority		int          DEFAULT '7' NOT NULL,
82  policy_id		int unsigned DEFAULT '1' NOT NULL, -- policy.id
83  email			varbinary(255) NOT NULL,
84  maia_user_id		int unsigned NOT NULL, -- maia_users.id
85  maia_domain_id	int unsigned NOT NULL, -- maia_domains.id
86  PRIMARY KEY (id),
87  UNIQUE email (email),
88  INDEX users_idx_maia_user_id (maia_user_id)
89
90) ENGINE=InnoDB;
91
92
93-- [mailaddr] contains a list of sender e-mail addresses
94-- referenced by users' whitelists and blacklists.
95
96CREATE TABLE mailaddr (
97  id                   int unsigned NOT NULL auto_increment,
98  priority             int          DEFAULT '7' NOT NULL,
99  email                varbinary(255) NOT NULL,
100  PRIMARY KEY (id),
101  UNIQUE email (email)
102) ENGINE=InnoDB;
103
104
105-- [wblist] contains the whitelist and blacklist records, on
106-- a per-user (not per-address) basis.
107
108CREATE TABLE wblist (
109  rid                  int unsigned NOT NULL, -- maia_users.id
110  sid                  int unsigned NOT NULL, -- mailaddr.id
111  wb                   char(1) NOT NULL,
112  PRIMARY KEY (rid,sid)
113) ENGINE=InnoDB;
114
115
116-- [policy] contains maiad's policy settings, which
117-- Maia applies on a per-address basis (i.e. each e-mail address
118-- is assigned its own unique policy record).  Each domain also
119-- has a set of policy defaults, and the system default policy
120-- is stored as the '@.' user's policy record.
121
122CREATE TABLE policy (
123  id                   int unsigned NOT NULL auto_increment,
124  policy_name          varchar(255),
125  virus_lover          char(1) DEFAULT 'Y',
126  spam_lover           char(1) DEFAULT 'Y',
127  banned_files_lover   char(1) DEFAULT 'Y',
128  bad_header_lover     char(1) DEFAULT 'Y',
129  bypass_virus_checks  char(1) DEFAULT 'Y',
130  bypass_spam_checks   char(1) DEFAULT 'Y',
131  bypass_banned_checks char(1) DEFAULT 'Y',
132  bypass_header_checks char(1) DEFAULT 'Y',
133  discard_viruses      char(1) DEFAULT 'N',
134  discard_spam         char(1) DEFAULT 'N',
135  discard_banned_files char(1) DEFAULT 'N',
136  discard_bad_headers  char(1) DEFAULT 'N',
137  spam_modifies_subj   char(1) DEFAULT 'N',
138  spam_quarantine_to   varchar(64) DEFAULT NULL,
139  spam_tag_level       float DEFAULT '999',
140  spam_tag2_level      float DEFAULT '999',
141  spam_kill_level      float DEFAULT '999',
142  PRIMARY KEY (id)
143) ENGINE=InnoDB;
144
145
146-- [maia_config] contains Maia's configuration settings, as set
147-- and modified by the super-administrator.
148
149CREATE TABLE maia_config (
150   id					int unsigned NOT NULL,
151   enable_user_autocreation		char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
152   enable_false_negative_management	char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
153   enable_stats_tracking		char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
154   enable_virus_scanning		char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
155   enable_spam_filtering		char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
156   enable_banned_files_checking		char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
157   enable_bad_header_checking		char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
158   enable_charts			char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
159   enable_spamtraps			char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
160   enable_stats_reporting		char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
161   enable_address_linking		char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
162   enable_privacy_invasion              char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
163   enable_username_changes              char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
164   internal_auth			char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
165   system_default_user_is_local         char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
166   user_virus_scanning                  char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
167   user_spam_filtering                  char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
168   user_banned_files_checking           char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
169   user_bad_header_checking             char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
170   admin_email				varchar(255),
171   expiry_period			int unsigned DEFAULT '30', -- days
172   ham_cache_expiry_period		int unsigned DEFAULT '5', -- days
173   reminder_threshold_count		int unsigned DEFAULT '100', -- items
174   reminder_threshold_size		int unsigned DEFAULT '500000', -- bytes
175   reminder_template_file		varchar(255) DEFAULT 'reminder.tpl',
176   reminder_login_url			varchar(255),
177   newuser_template_file		varchar(255) DEFAULT 'newuser.tpl',
178   smtp_server				varchar(255) DEFAULT 'localhost',
179   smtp_port				int unsigned DEFAULT '10025',
180   currency_label			varchar(15) DEFAULT '$',
181   bandwidth_cost			float DEFAULT '0.0' NOT NULL,
182   chart_ham_colour			varchar(32) DEFAULT '#DDDDB7',
183   chart_spam_colour			varchar(32) DEFAULT '#FFAAAA',
184   chart_virus_colour			varchar(32) DEFAULT '#CCFFCC',
185   chart_fp_colour			varchar(32) DEFAULT '#C4CA73',
186   chart_fn_colour			varchar(32) DEFAULT '#FF7575',
187   chart_suspected_ham_colour		varchar(32) DEFAULT '#FFFFB7',
188   chart_suspected_spam_colour		varchar(32) DEFAULT '#FFCCCC',
189   chart_wl_colour			varchar(32) DEFAULT '#eeeeee',
190   chart_bl_colour			varchar(32) DEFAULT '#888888',
191   chart_background_colour		varchar(32) DEFAULT '#B0ECFF',
192   chart_font_colour			varchar(32) DEFAULT '#3D3D50',
193   chart_autogeneration_interval	int unsigned DEFAULT '60', -- minutes
194   banner_title				varchar(255) DEFAULT 'Maia Mailguard',
195   use_icons				char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
196   use_logo				char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
197   logo_url				varchar(255) DEFAULT 'http://www.maiamailguard.com/',
198   logo_file				varchar(255) DEFAULT 'images/maia-logotoolbar.gif',
199   logo_alt_text			varchar(255) DEFAULT 'Maia Mailguard Home Page',
200   virus_info_url			varchar(255) DEFAULT 'http://www.google.com/search?q=%%VIRUSNAME%%+virus+information',
201   virus_lookup				varchar(20) DEFAULT 'google',
202   primary_report_server		varchar(255) DEFAULT 'maia.renaissoft.com',
203   primary_report_port			int unsigned DEFAULT '443',
204   secondary_report_server		varchar(255),
205   secondary_report_port		int unsigned DEFAULT '443',
206   reporter_sitename			varchar(255),
207   reporter_username			varchar(50),
208   reporter_password			varchar(50),
209   size_limit				int unsigned DEFAULT '1000000',
210   oversize_policy			char(1) DEFAULT 'B' NOT NULL, -- 'P', 'B'
211   sa_score_set				int unsigned DEFAULT '0' NOT NULL,
212   key_file				varchar(255) DEFAULT 'blowfish.key',
213   PRIMARY KEY (id)
214) ENGINE=InnoDB;
215
216
217-- [maia_languages] contains a list of the installed languages
218-- and their ISO-639 two-letter abbreviations.
219
220CREATE TABLE maia_languages (
221   id			int unsigned NOT NULL auto_increment,
222   language_name	varchar(100) NOT NULL, -- e.g. 'English'
223   abbreviation		char(2) NOT NULL, -- e.g. 'en'
224   installed		char(1) DEFAULT 'N' NOT NULL,
225   PRIMARY KEY (id),
226   UNIQUE abbreviation (abbreviation)
227) ENGINE=InnoDB;
228
229
230
231-- [maia_users] contains mail filter settings that apply to
232-- e-mail recipients who have registered with Maia.  The
233-- user_level is stored as one of (U)ser, (A)dministrator,
234-- or (S)uper-Administrator.
235
236CREATE TABLE maia_users (
237   id				int unsigned NOT NULL auto_increment,
238   user_name			varchar(255) NOT NULL,
239   user_level			char(1) DEFAULT 'U' NOT NULL, -- 'U', 'A', 'S'
240   reminders            	char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
241   charts               	char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
242   primary_email_id		int unsigned DEFAULT '0' NOT NULL, -- users.id
243   language			varchar(10) DEFAULT 'en' NOT NULL,
244   charset			varchar(20) DEFAULT 'ISO-8859-1' NOT NULL,
245   spamtrap			char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
246   password			varchar(128), -- scrypt()
247   auto_whitelist		char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
248   items_per_page		int unsigned DEFAULT '50' NOT NULL,
249   spam_quarantine_sort		char(2) DEFAULT 'XA' NOT NULL, -- [XDFS][AD]
250   virus_quarantine_sort	char(2) DEFAULT 'DA' NOT NULL, -- [DFS][AD]
251   header_quarantine_sort	char(2) DEFAULT 'DA' NOT NULL, -- [DFS][AD]
252   attachment_quarantine_sort	char(2) DEFAULT 'DA' NOT NULL, -- [DFS][AD]
253   ham_cache_sort		char(2) DEFAULT 'XD' NOT NULL, -- [XDFS][AD]
254   discard_ham			char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
255   theme_id             int unsigned DEFAULT '1' NOT NULL,
256   quarantine_digest_interval  int unsigned DEFAULT '0' NOT NULL,
257   last_digest_sent   datetime,
258   truncate_subject  int unsigned DEFAULT '20' NOT NULL,
259   truncate_email    int unsigned DEFAULT '20' NOT NULL,
260   PRIMARY KEY (id),
261   UNIQUE user_name (user_name),
262   UNIQUE primary_email_idx (primary_email_id),
263   KEY theme_id (theme_id)
264) ENGINE=InnoDB;
265
266
267-- [maia_domains] contains mail filter settings that apply to
268-- entire e-mail domains as defaults for users who are not
269-- registered with Maia.
270
271CREATE TABLE maia_domains (
272   id				int unsigned NOT NULL auto_increment,
273   domain			varchar(255) NOT NULL,
274   reminders			char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
275   charts			char(1) DEFAULT 'N' NOT NULL, -- 'Y', 'N'
276   enable_user_autocreation	char(1) DEFAULT 'Y' NOT NULL, -- 'Y', 'N'
277   language			varchar(10) DEFAULT 'en' NOT NULL,
278   charset			varchar(20) DEFAULT 'ISO-8859-1' NOT NULL,
279   routing_domain               varchar(255) DEFAULT '' NOT NULL,
280   transport                    varchar(255) DEFAULT ':' NOT NULL,
281   PRIMARY KEY (id),
282   UNIQUE domain (domain)
283) ENGINE=InnoDB;
284CREATE INDEX maia_domains_idx_routing_domain ON maia_domains(routing_domain);
285
286
287-- [maia_domain_admins] is a one-to-many mapping of domains to
288-- users with administrator privileges (domains can have
289-- multiple administrators).
290
291CREATE TABLE maia_domain_admins (
292   domain_id		int unsigned NOT NULL, -- maia_domains.id
293   admin_id		int unsigned NOT NULL, -- maia_users.id
294   PRIMARY KEY (domain_id, admin_id)
295) ENGINE=InnoDB;
296
297
298-- [maia_stats] is a table of per-user statistics that keeps
299-- track of the total number of mail items of each type,
300-- along with total sizes and superlatives (e.g. largest,
301-- smallest, oldest, newest, etc.).
302
303CREATE TABLE maia_stats (
304   user_id		int unsigned NOT NULL, -- maia_users.id
305
306   -- suspected ham
307   oldest_suspected_ham_date	datetime,
308   newest_suspected_ham_date	datetime,
309   smallest_suspected_ham_size	int unsigned DEFAULT '0' NOT NULL,
310   largest_suspected_ham_size	int unsigned DEFAULT '0' NOT NULL,
311   total_suspected_ham_size	bigint unsigned DEFAULT '0' NOT NULL,
312   lowest_suspected_ham_score	float DEFAULT '0.0' NOT NULL,
313   highest_suspected_ham_score	float DEFAULT '0.0' NOT NULL,
314   total_suspected_ham_score	float DEFAULT '0.0' NOT NULL,
315   total_suspected_ham_items	int unsigned DEFAULT '0' NOT NULL,
316
317   -- ham
318   oldest_ham_date	datetime,
319   newest_ham_date	datetime,
320   smallest_ham_size	int unsigned DEFAULT '0' NOT NULL,
321   largest_ham_size	int unsigned DEFAULT '0' NOT NULL,
322   total_ham_size	bigint unsigned DEFAULT '0' NOT NULL,
323   lowest_ham_score	float DEFAULT '0.0' NOT NULL,
324   highest_ham_score	float DEFAULT '0.0' NOT NULL,
325   total_ham_score	float DEFAULT '0.0' NOT NULL,
326   total_ham_items	int unsigned DEFAULT '0' NOT NULL,
327
328   -- mail from whitelisted senders
329   oldest_wl_date	datetime,
330   newest_wl_date	datetime,
331   smallest_wl_size	int unsigned DEFAULT '0' NOT NULL,
332   largest_wl_size	int unsigned DEFAULT '0' NOT NULL,
333   total_wl_size	bigint unsigned DEFAULT '0' NOT NULL,
334   total_wl_items	int unsigned DEFAULT '0' NOT NULL,
335
336   -- mail from blacklisted senders
337   oldest_bl_date	datetime,
338   newest_bl_date	datetime,
339   smallest_bl_size	int unsigned DEFAULT '0' NOT NULL,
340   largest_bl_size	int unsigned DEFAULT '0' NOT NULL,
341   total_bl_size	bigint unsigned DEFAULT '0' NOT NULL,
342   total_bl_items	int unsigned DEFAULT '0' NOT NULL,
343
344   -- suspected spam
345   oldest_suspected_spam_date	datetime,
346   newest_suspected_spam_date	datetime,
347   smallest_suspected_spam_size	int unsigned DEFAULT '0' NOT NULL,
348   largest_suspected_spam_size	int unsigned DEFAULT '0' NOT NULL,
349   total_suspected_spam_size	bigint unsigned DEFAULT '0' NOT NULL,
350   lowest_suspected_spam_score	float DEFAULT '0.0' NOT NULL,
351   highest_suspected_spam_score	float DEFAULT '0.0' NOT NULL,
352   total_suspected_spam_score	float DEFAULT '0.0' NOT NULL,
353   total_suspected_spam_items	int unsigned DEFAULT '0' NOT NULL,
354
355   -- false positives (i.e. rescued ham)
356   oldest_fp_date	datetime,
357   newest_fp_date	datetime,
358   smallest_fp_size	int unsigned DEFAULT '0' NOT NULL,
359   largest_fp_size	int unsigned DEFAULT '0' NOT NULL,
360   total_fp_size	bigint unsigned DEFAULT '0' NOT NULL,
361   lowest_fp_score	float DEFAULT '0.0' NOT NULL,
362   highest_fp_score	float DEFAULT '0.0' NOT NULL,
363   total_fp_score	float DEFAULT '0.0' NOT NULL,
364   total_fp_items	int unsigned DEFAULT '0' NOT NULL,
365
366   -- false negatives (i.e. reported spam)
367   oldest_fn_date	datetime,
368   newest_fn_date	datetime,
369   smallest_fn_size	int unsigned DEFAULT '0' NOT NULL,
370   largest_fn_size	int unsigned DEFAULT '0' NOT NULL,
371   total_fn_size	bigint unsigned DEFAULT '0' NOT NULL,
372   lowest_fn_score	float DEFAULT '0.0' NOT NULL,
373   highest_fn_score	float DEFAULT '0.0' NOT NULL,
374   total_fn_score	float DEFAULT '0.0' NOT NULL,
375   total_fn_items	int unsigned DEFAULT '0' NOT NULL,
376
377   -- confirmed spam
378   oldest_spam_date	datetime,
379   newest_spam_date	datetime,
380   smallest_spam_size	int unsigned DEFAULT '0' NOT NULL,
381   largest_spam_size	int unsigned DEFAULT '0' NOT NULL,
382   total_spam_size	bigint unsigned DEFAULT '0' NOT NULL,
383   lowest_spam_score	float DEFAULT '0.0' NOT NULL,
384   highest_spam_score	float DEFAULT '0.0' NOT NULL,
385   total_spam_score	float DEFAULT '0.0' NOT NULL,
386   total_spam_items	int unsigned DEFAULT '0' NOT NULL,
387
388   -- viruses
389   oldest_virus_date	datetime,
390   newest_virus_date	datetime,
391   smallest_virus_size	int unsigned DEFAULT '0' NOT NULL,
392   largest_virus_size	int unsigned DEFAULT '0' NOT NULL,
393   total_virus_size	bigint unsigned DEFAULT '0' NOT NULL,
394   total_virus_items	int unsigned DEFAULT '0' NOT NULL,
395
396   -- mail with invalid headers
397   oldest_bad_header_date	datetime,
398   newest_bad_header_date	datetime,
399   smallest_bad_header_size	int unsigned DEFAULT '0' NOT NULL,
400   largest_bad_header_size	int unsigned DEFAULT '0' NOT NULL,
401   total_bad_header_size	bigint unsigned DEFAULT '0' NOT NULL,
402   total_bad_header_items	int unsigned DEFAULT '0' NOT NULL,
403
404   -- mail containing banned file attachments
405   oldest_banned_file_date	datetime,
406   newest_banned_file_date	datetime,
407   smallest_banned_file_size	int unsigned DEFAULT '0' NOT NULL,
408   largest_banned_file_size	int unsigned DEFAULT '0' NOT NULL,
409   total_banned_file_size	bigint unsigned DEFAULT '0' NOT NULL,
410   total_banned_file_items	int unsigned DEFAULT '0' NOT NULL,
411
412   -- oversized items
413   oldest_oversized_date	datetime,
414   newest_oversized_date	datetime,
415   smallest_oversized_size	int unsigned DEFAULT '0' NOT NULL,
416   largest_oversized_size	int unsigned DEFAULT '0' NOT NULL,
417   total_oversized_size		bigint unsigned DEFAULT '0' NOT NULL,
418   total_oversized_items	int unsigned DEFAULT '0' NOT NULL,
419
420   PRIMARY KEY (user_id)
421) ENGINE=InnoDB;
422
423
424-- [maia_mail] stores mail items of five types:
425-- Suspected (S)pam, (V)iruses, Banned (F)ile Attachments,
426-- (B)ad Headers, and Suspected (H)am.
427
428CREATE TABLE maia_mail (
429   id               int unsigned NOT NULL auto_increment,
430   received_date    datetime NOT NULL,
431   size             int unsigned NOT NULL,
432   sender_email     varbinary(255) NOT NULL,
433   envelope_to      blob NOT NULL,
434   subject          varchar(255) NOT NULL COLLATE utf8_unicode_ci,
435   contents         longblob NOT NULL,
436   score            float, -- only supplied for (S)pam
437   autolearn_status varchar(15) NOT NULL DEFAULT 'unavailable', -- 'ham', 'spam', 'no', 'disabled', 'failed', 'unavailable'
438   PRIMARY KEY (id)
439) ENGINE=InnoDB;
440CREATE INDEX maia_mail_idx_received_date ON maia_mail(received_date);
441CREATE INDEX maia_mail_idx_sender_email ON maia_mail(sender_email);
442CREATE INDEX maia_mail_idx_subject ON maia_mail(subject);
443CREATE INDEX maia_mail_idx_score ON maia_mail(score);
444
445
446-- [maia_mail_recipients] is a one-to-many mapping of
447-- mail items to recipients.  These records
448-- are deleted when a recipient rescues an item, or the
449-- item is deleted.
450
451CREATE TABLE maia_mail_recipients (
452   mail_id      int unsigned NOT NULL, -- maia_mail.id
453   recipient_id int unsigned NOT NULL, -- maia_users.id
454   type         char(1) NOT NULL, -- 'S', 'V', 'F', 'B', 'H', 'L', 'W'
455   token        char(64) NOT NULL,
456   PRIMARY KEY (mail_id, recipient_id),
457 UNIQUE token_system_idx ( token ),
458 INDEX maia_mail_recipients_idx_type ( type ),
459 INDEX maia_mail_recipients_idx_recipient_id ( recipient_id )
460) ENGINE=InnoDB;
461
462
463-- [maia_viruses] contains a list of the "official" names of
464-- viruses that have been detected by the virus scanners.
465-- These are the names that will be displayed in stats
466-- tables and charts.
467
468CREATE TABLE maia_viruses (
469   id			int unsigned NOT NULL auto_increment,
470   virus_name		varchar(255) NOT NULL,
471   count		int unsigned DEFAULT '0' NOT NULL,
472   PRIMARY KEY (id),
473   UNIQUE virus_name (virus_name)
474) ENGINE=InnoDB;
475
476
477-- [maia_virus_aliases] is a one-to-many mapping of viruses
478-- to aliases for those viruses, as detected by other
479-- virus scanners.
480
481CREATE TABLE maia_virus_aliases (
482   virus_id		int unsigned NOT NULL, -- maia_viruses.id
483   virus_alias		varchar(255) NOT NULL,
484   PRIMARY KEY (virus_id, virus_alias)
485) ENGINE=InnoDB;
486
487
488-- [maia_viruses_detected] is a one-to-many mapping of
489-- mail items to viruses found.  These
490-- entries are deleted when a mail item is rescued
491-- or deleted.
492
493CREATE TABLE maia_viruses_detected (
494   mail_id		int unsigned NOT NULL, -- maia_mail.id
495   virus_id		int unsigned NOT NULL, -- maia_viruses.id
496   PRIMARY KEY (mail_id, virus_id)
497) ENGINE=InnoDB;
498
499
500-- [maia_sa_rules] contains a list of all the SpamAssassin
501-- rules installed on the system, along with their
502-- text descriptions and score values.
503
504CREATE TABLE maia_sa_rules (
505   id			int unsigned NOT NULL auto_increment,
506   rule_name		varchar(255) NOT NULL,
507   rule_description	varchar(255) DEFAULT '' NOT NULL,
508   rule_score_0		float DEFAULT '1.0' NOT NULL,
509   rule_score_1		float DEFAULT '1.0' NOT NULL,
510   rule_score_2		float DEFAULT '1.0' NOT NULL,
511   rule_score_3		float DEFAULT '1.0' NOT NULL,
512   rule_count		int unsigned DEFAULT '0' NOT NULL,
513   PRIMARY KEY (id),
514   UNIQUE rule_name (rule_name)
515) ENGINE=InnoDB;
516
517
518-- [maia_sa_rules_triggered] is a one-to-many mapping of
519-- mail items to SpamAssassin rules triggered
520-- by that mail item.  These entries are deleted when a
521-- mail item is rescued or deleted.
522
523CREATE TABLE maia_sa_rules_triggered (
524   mail_id		int unsigned NOT NULL, -- maia_mail.id
525   rule_id		int unsigned NOT NULL, -- maia_sa_rules.id
526   rule_score		float default '0.0' NOT NULL,
527   PRIMARY KEY (mail_id, rule_id)
528) ENGINE=InnoDB;
529
530
531-- [maia_banned_attachments_found] is a one-to-many mapping of
532-- mail items to file attachments that were found in that
533-- mail item.  These entries are deleted when a mail item
534-- is rescued or deleted.
535CREATE TABLE maia_banned_attachments_found (
536   mail_id		int unsigned NOT NULL, -- maia_mail.id
537   file_name		varchar(255) NOT NULL,
538   file_type		varchar(20) DEFAULT 'Unknown' NOT NULL,
539   PRIMARY KEY (mail_id, file_name)
540) ENGINE=InnoDB;
541
542
543-- [maia_stats_history] is a table used to store snapshots of the
544-- more relevant items from the [maia_stats] table at (H)ourly,
545-- (D)aily, (M)onthly, and (Y)early intervals.  Entries are
546-- automatically expired, so this table has a more or less
547-- fixed size of ((24 + 31 + 12 + 1/year) * users) rows.
548--
549CREATE TABLE maia_stats_history (
550   id				int unsigned NOT NULL auto_increment,
551   user_id			int unsigned NOT NULL, -- maia_users.id
552   type				char(1) DEFAULT 'H' NOT NULL, -- 'H', 'D', 'M', 'Y'
553   taken_at			datetime NOT NULL,
554   total_ham_items		int unsigned DEFAULT '0' NOT NULL,
555   total_ham_size		bigint unsigned DEFAULT '0' NOT NULL,
556   total_spam_items		int unsigned DEFAULT '0' NOT NULL,
557   total_spam_size		bigint unsigned DEFAULT '0' NOT NULL,
558   total_virus_items		int unsigned DEFAULT '0' NOT NULL,
559   total_virus_size		bigint unsigned DEFAULT '0' NOT NULL,
560   total_fp_items		int unsigned DEFAULT '0' NOT NULL,
561   total_fp_size		bigint unsigned DEFAULT '0' NOT NULL,
562   total_fn_items		int unsigned DEFAULT '0' NOT NULL,
563   total_fn_size		bigint unsigned DEFAULT '0' NOT NULL,
564   total_banned_file_items	int unsigned DEFAULT '0' NOT NULL,
565   total_banned_file_size	bigint unsigned DEFAULT '0' NOT NULL,
566   total_bad_header_items	int unsigned DEFAULT '0' NOT NULL,
567   total_bad_header_size	bigint unsigned DEFAULT '0' NOT NULL,
568   total_wl_items		int unsigned DEFAULT '0' NOT NULL,
569   total_wl_size		bigint unsigned DEFAULT '0' NOT NULL,
570   total_bl_items		int unsigned DEFAULT '0' NOT NULL,
571   total_bl_size		bigint unsigned DEFAULT '0' NOT NULL,
572   total_oversized_items	int unsigned DEFAULT '0' NOT NULL,
573   total_oversized_size		bigint unsigned DEFAULT '0' NOT NULL,
574   PRIMARY KEY (id)
575) ENGINE=InnoDB;
576
577
578-- [maia_themes] stores information about each of the installed
579-- user-selectable themes.
580--
581CREATE TABLE maia_themes (
582  id        int(10) unsigned NOT NULL auto_increment,
583  name      varchar(30) NOT NULL,
584  path      varchar(30) NOT NULL,
585  PRIMARY KEY (id)
586) ENGINE=InnoDB;
587
588
589-- maia_tokens stores temporary MD5 authentication tokens for various systems.
590CREATE TABLE maia_tokens (
591id            INT UNSIGNED NOT NULL AUTO_INCREMENT ,
592token_system  VARCHAR( 32 ) NOT NULL ,
593token         CHAR( 64 ) NOT NULL ,
594data          BLOB NOT NULL ,
595expires       DATETIME NOT NULL ,
596PRIMARY KEY ( id ),
597UNIQUE token ( token, token_system ),
598INDEX token_system ( token_system ),
599INDEX expires (expires)
600) ENGINE=InnoDB;
601
602-- schema_info contains the schema version status of the current database. Software upgrades will use this value
603-- to upgrade the database appropriately.  Note: this table is constructed to adhere to the pattern set by
604-- RubyOnRails' Migrations, for future compatability
605CREATE TABLE schema_info (
606version int(11)
607) ENGINE=InnoDB;
608INSERT INTO schema_info VALUES(15);
609
610-- [awl] is SpamAssassin 3.x's Auto-WhiteList database
611--
612CREATE TABLE awl (
613  username      varchar(100) NOT NULL default '',
614  email         varbinary(255) NOT NULL default '',
615  ip            varchar(40) NOT NULL default '',
616  count         int(11) default '0',
617  totscore      float NOT NULL default '0',
618  signedby      varchar(255) NOT NULL default '',
619  lastupdate    timestamp NOT NULL default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
620  PRIMARY KEY (username, email, signedby, ip)
621) ENGINE=InnoDB;
622
623
624-- [bayes_expire] is SpamAssassin 3.x's Bayes database expiry reference
625--
626CREATE TABLE bayes_expire (
627  id            int(11) NOT NULL default '0',
628  runtime       int(11) NOT NULL default '0',
629  KEY bayes_expire_idx1 (id)
630) ENGINE=InnoDB;
631
632
633-- [bayes_global_vars] is SpamAssassin 3.x's Bayes database global variables
634--
635CREATE TABLE bayes_global_vars (
636  variable      varchar(30) NOT NULL default '',
637  value         varchar(200) NOT NULL default '',
638  PRIMARY KEY (variable)
639) ENGINE=InnoDB;
640
641
642-- [bayes_seen] is SpamAssassin 3.x's Bayes database token reference
643--
644CREATE TABLE bayes_seen (
645  id            int(11) NOT NULL default '0',
646  msgid         varchar(200) binary NOT NULL default '',
647  flag          char(1) NOT NULL default '',
648  PRIMARY KEY (id, msgid)
649) ENGINE=InnoDB;
650
651
652-- [bayes_token] is SpamAssassin 3.x's Bayes database token list
653--
654CREATE TABLE bayes_token (
655  id            int(11) NOT NULL default '0',
656  token         binary(5) NOT NULL default '',
657  spam_count    int(11) NOT NULL default '0',
658  ham_count     int(11) NOT NULL default '0',
659  atime         int(11) NOT NULL default '0',
660  PRIMARY KEY (id, token),
661  INDEX bayes_token_idx1 (id, atime)
662) ENGINE=InnoDB;
663
664
665-- [bayes_vars] is SpamAssassin 3.x's Bayes database variables scoreboard
666--
667CREATE TABLE bayes_vars (
668  id                    int(11) NOT NULL AUTO_INCREMENT,
669  username              varchar(200) NOT NULL default '',
670  spam_count            int(11) NOT NULL default '0',
671  ham_count             int(11) NOT NULL default '0',
672  token_count           int(11) NOT NULL default '0',
673  last_expire           int(11) NOT NULL default '0',
674  last_atime_delta      int(11) NOT NULL default '0',
675  last_expire_reduce    int(11) NOT NULL default '0',
676  oldest_token_age      int(11) NOT NULL default '2147483647',
677  newest_token_age      int(11) NOT NULL default '0',
678  PRIMARY KEY (id),
679  UNIQUE bayes_vars_idx1 (username)
680) ENGINE=InnoDB;
681
682
683-- Database initialization script
684
685-- Create a permissive system default policy and create the '@.' domain
686
687INSERT INTO policy VALUES (1, 'Default', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, 999, 999, 999);
688INSERT INTO users VALUES (1, 0, 1, '@.', 1, 1);
689INSERT INTO maia_users (user_name, primary_email_id, reminders, discard_ham) VALUES ('@.', 1, 'N', 'Y');
690INSERT INTO maia_domains (domain, routing_domain) VALUES ('@.', '*');
691
692-- Instantiate a default system configuration
693
694INSERT INTO maia_config (id) VALUES (0);
695
696-- Load the ISO-639 language names and abbreviations
697
698INSERT INTO maia_languages (abbreviation, language_name) VALUES ('aa', 'Afar');
699INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ab', 'Abkhazian');
700INSERT INTO maia_languages (abbreviation, language_name) VALUES ('af', 'Afrikaans');
701INSERT INTO maia_languages (abbreviation, language_name) VALUES ('am', 'Amharic');
702INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ar', '&#xFE94;&#xFEF4;&#xFE90;&#xFEAE;&#xFECC;&#xFEE0;&#xFE8D;&#x0020;');
703INSERT INTO maia_languages (abbreviation, language_name) VALUES ('as', 'Assamese');
704INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ay', 'Aymara');
705INSERT INTO maia_languages (abbreviation, language_name) VALUES ('az', 'Az&#x0446;ri');
706INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ba', 'Bashkir');
707INSERT INTO maia_languages (abbreviation, language_name) VALUES ('be', '&#x0411;&#x0435;&#x043B;&#x0430;&#x0440;&#x0443;&#x0441;&#x043A;&#x0430;&#x044F;');
708INSERT INTO maia_languages (abbreviation, language_name) VALUES ('bg', '&#x0411;&#x044A;&#x043B;&#x0433;&#x0430;&#x0440;&#x0441;&#x043A;&#x0438;');
709INSERT INTO maia_languages (abbreviation, language_name) VALUES ('bh', 'Bihari');
710INSERT INTO maia_languages (abbreviation, language_name) VALUES ('bi', 'Bislama');
711INSERT INTO maia_languages (abbreviation, language_name) VALUES ('bn', 'Bengali');
712INSERT INTO maia_languages (abbreviation, language_name) VALUES ('bo', 'Tibetan');
713INSERT INTO maia_languages (abbreviation, language_name) VALUES ('br', 'Brezhoneg');
714INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ca', 'Català');
715INSERT INTO maia_languages (abbreviation, language_name) VALUES ('co', 'Corsican');
716INSERT INTO maia_languages (abbreviation, language_name) VALUES ('cs', '&#x010C;eština');
717INSERT INTO maia_languages (abbreviation, language_name) VALUES ('cy', 'Cymraeg');
718INSERT INTO maia_languages (abbreviation, language_name) VALUES ('da', 'Dansk');
719INSERT INTO maia_languages (abbreviation, language_name) VALUES ('de', 'Deutsch');
720INSERT INTO maia_languages (abbreviation, language_name) VALUES ('dz', 'Bhutani');
721INSERT INTO maia_languages (abbreviation, language_name) VALUES ('el', '&#x0395;&#x03BB;&#x03BB;&#x03B7;&#x03BD;&#x03B9;&#x03BA;&#x03AC;');
722INSERT INTO maia_languages (abbreviation, language_name) VALUES ('en', 'English');
723INSERT INTO maia_languages (abbreviation, language_name) VALUES ('eo', 'Esperanto');
724INSERT INTO maia_languages (abbreviation, language_name) VALUES ('es', 'Español');
725INSERT INTO maia_languages (abbreviation, language_name) VALUES ('et', 'Eesti');
726INSERT INTO maia_languages (abbreviation, language_name) VALUES ('eu', 'Euskaraz');
727INSERT INTO maia_languages (abbreviation, language_name) VALUES ('fa', 'Persian');
728INSERT INTO maia_languages (abbreviation, language_name) VALUES ('fi', 'Suomeksi');
729INSERT INTO maia_languages (abbreviation, language_name) VALUES ('fj', 'Fiji');
730INSERT INTO maia_languages (abbreviation, language_name) VALUES ('fo', 'Føroyskt');
731INSERT INTO maia_languages (abbreviation, language_name) VALUES ('fr', 'Fran&ccedil;ais');
732INSERT INTO maia_languages (abbreviation, language_name) VALUES ('fy', 'Frysk');
733INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ga', 'Gaeilge');
734INSERT INTO maia_languages (abbreviation, language_name) VALUES ('gd', 'Gàidhlig');
735INSERT INTO maia_languages (abbreviation, language_name) VALUES ('gl', 'Galician');
736INSERT INTO maia_languages (abbreviation, language_name) VALUES ('gn', 'Guarani');
737INSERT INTO maia_languages (abbreviation, language_name) VALUES ('gu', 'Gujarati');
738INSERT INTO maia_languages (abbreviation, language_name) VALUES ('gv', 'Ghaelg');
739INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ha', 'Hausa');
740INSERT INTO maia_languages (abbreviation, language_name) VALUES ('he', '&#x05E2;&#x05D1;&#x05E8;&#x05D9;&#x05EA;');
741INSERT INTO maia_languages (abbreviation, language_name) VALUES ('hi', 'Hindi');
742INSERT INTO maia_languages (abbreviation, language_name) VALUES ('hr', 'Hrvatski');
743INSERT INTO maia_languages (abbreviation, language_name) VALUES ('hu', 'Magyar');
744INSERT INTO maia_languages (abbreviation, language_name) VALUES ('hy', 'Armenian');
745INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ia', 'Interlingua');
746INSERT INTO maia_languages (abbreviation, language_name) VALUES ('id', 'Bahasa Indonesia');
747INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ie', 'Interlingue');
748INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ik', 'Inupiak');
749INSERT INTO maia_languages (abbreviation, language_name) VALUES ('is', 'Íslenska');
750INSERT INTO maia_languages (abbreviation, language_name) VALUES ('it', 'Italiano');
751INSERT INTO maia_languages (abbreviation, language_name) VALUES ('iu', 'Inuktitut');
752INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ja', 'Nihongo');
753INSERT INTO maia_languages (abbreviation, language_name) VALUES ('jw', 'Javanese');
754INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ka', 'Georgian');
755INSERT INTO maia_languages (abbreviation, language_name) VALUES ('kk', 'Kazakh');
756INSERT INTO maia_languages (abbreviation, language_name) VALUES ('kl', 'Kalaallísut');
757INSERT INTO maia_languages (abbreviation, language_name) VALUES ('km', 'Cambodian');
758INSERT INTO maia_languages (abbreviation, language_name) VALUES ('kn', 'Kannada');
759INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ko', 'Korean');
760INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ks', 'Kashmiri');
761INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ku', 'Kurmancî (Kurdî)');
762INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ky', 'Kirghiz');
763INSERT INTO maia_languages (abbreviation, language_name) VALUES ('la', 'Latina');
764INSERT INTO maia_languages (abbreviation, language_name) VALUES ('lb', 'Lëtzebuergesch');
765INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ln', 'Lingala');
766INSERT INTO maia_languages (abbreviation, language_name) VALUES ('lo', 'Laothian');
767INSERT INTO maia_languages (abbreviation, language_name) VALUES ('lt', 'Lietuvi&#x0173;');
768INSERT INTO maia_languages (abbreviation, language_name) VALUES ('lv', 'Latviešu');
769INSERT INTO maia_languages (abbreviation, language_name) VALUES ('mg', 'Malagasy');
770INSERT INTO maia_languages (abbreviation, language_name) VALUES ('mi', 'Maori');
771INSERT INTO maia_languages (abbreviation, language_name) VALUES ('mk', '&#x041C;&#x0430;&#x043A;&#x0435;&#x0434;&#x043E;&#x043D;&#x0441;&#x043A;&#x0438;');
772INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ml', 'Malayalam');
773INSERT INTO maia_languages (abbreviation, language_name) VALUES ('mn', 'Mongolian');
774INSERT INTO maia_languages (abbreviation, language_name) VALUES ('mo', 'Moldavian');
775INSERT INTO maia_languages (abbreviation, language_name) VALUES ('mr', 'Marathi');
776INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ms', 'Malay');
777INSERT INTO maia_languages (abbreviation, language_name) VALUES ('mt', 'Malti');
778INSERT INTO maia_languages (abbreviation, language_name) VALUES ('my', 'Burmese');
779INSERT INTO maia_languages (abbreviation, language_name) VALUES ('na', 'Nauru');
780INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ne', 'Nepali');
781INSERT INTO maia_languages (abbreviation, language_name) VALUES ('nl', 'Nederlands');
782INSERT INTO maia_languages (abbreviation, language_name) VALUES ('no', 'Norsk');
783INSERT INTO maia_languages (abbreviation, language_name) VALUES ('oc', 'Occitan');
784INSERT INTO maia_languages (abbreviation, language_name) VALUES ('om', 'Oromo');
785INSERT INTO maia_languages (abbreviation, language_name) VALUES ('or', 'Oriya');
786INSERT INTO maia_languages (abbreviation, language_name) VALUES ('pa', 'Punjabi');
787INSERT INTO maia_languages (abbreviation, language_name) VALUES ('pl', 'Polski');
788INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ps', 'Pashto');
789INSERT INTO maia_languages (abbreviation, language_name) VALUES ('pt', 'Português');
790INSERT INTO maia_languages (abbreviation, language_name) VALUES ('qu', 'Quechua');
791INSERT INTO maia_languages (abbreviation, language_name) VALUES ('rm', 'Rumantsch');
792INSERT INTO maia_languages (abbreviation, language_name) VALUES ('rn', 'Kirundi');
793INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ro', 'Rom&#x00E2;&#x006E;&#x0103;');
794INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ru', '&#x0420;&#x0443;&#x0441;&#x0441;&#x043A;&#x0438;&#x0439;');
795INSERT INTO maia_languages (abbreviation, language_name) VALUES ('rw', 'Kinyarwanda');
796INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sa', 'Sanskrit');
797INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sd', 'Sindhi');
798INSERT INTO maia_languages (abbreviation, language_name) VALUES ('se', 'Davvisámegiella');
799INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sg', 'Sangho');
800INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sh', 'Serbo-Croatian');
801INSERT INTO maia_languages (abbreviation, language_name) VALUES ('si', 'Sinhalese');
802INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sk', 'Sloven&#x010D;ina');
803INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sl', 'Slovenski');
804INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sm', 'Samoan');
805INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sn', 'Shona');
806INSERT INTO maia_languages (abbreviation, language_name) VALUES ('so', 'af Soomaali');
807INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sq', 'Shqip');
808INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sr', '&#x0421;&#x0440;&#x043F;&#x0441;&#x043A;&#x0438;');
809INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ss', 'Siswati');
810INSERT INTO maia_languages (abbreviation, language_name) VALUES ('st', 'Sesotho');
811INSERT INTO maia_languages (abbreviation, language_name) VALUES ('su', 'Sundanese');
812INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sv', 'Svenska');
813INSERT INTO maia_languages (abbreviation, language_name) VALUES ('sw', 'Kiswahili');
814INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ta', 'Tamil');
815INSERT INTO maia_languages (abbreviation, language_name) VALUES ('te', 'Telugu');
816INSERT INTO maia_languages (abbreviation, language_name) VALUES ('tg', 'Tajik');
817INSERT INTO maia_languages (abbreviation, language_name) VALUES ('th', 'Thai');
818INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ti', 'Tigrinya');
819INSERT INTO maia_languages (abbreviation, language_name) VALUES ('tk', 'Turkmen');
820INSERT INTO maia_languages (abbreviation, language_name) VALUES ('tl', 'Tagalog');
821INSERT INTO maia_languages (abbreviation, language_name) VALUES ('tn', 'Setswana');
822INSERT INTO maia_languages (abbreviation, language_name) VALUES ('to', 'Tonga');
823INSERT INTO maia_languages (abbreviation, language_name) VALUES ('tr', 'Türk&ccedil;e');
824INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ts', 'Tsonga');
825INSERT INTO maia_languages (abbreviation, language_name) VALUES ('tt', 'Tatar');
826INSERT INTO maia_languages (abbreviation, language_name) VALUES ('tw', 'Twi');
827INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ug', 'Uighur');
828INSERT INTO maia_languages (abbreviation, language_name) VALUES ('uk', '&#x0423;&#x043A;&#x0440;&#x0430;&#x00EF;&#x043D;&#x0441;&#x044C;&#x043A;&#x0430;');
829INSERT INTO maia_languages (abbreviation, language_name) VALUES ('ur', 'Urdu');
830INSERT INTO maia_languages (abbreviation, language_name) VALUES ('uz', 'Uzbek');
831INSERT INTO maia_languages (abbreviation, language_name) VALUES ('vi', '&#x0054;&#x0069;&#x1EBF;&#x006E;&#x0067;&#x0020;&#x0056;&#x0069;&#x1EC7;&#x0074;');
832INSERT INTO maia_languages (abbreviation, language_name) VALUES ('vo', 'Volapuk');
833INSERT INTO maia_languages (abbreviation, language_name) VALUES ('wo', 'Wolof');
834INSERT INTO maia_languages (abbreviation, language_name) VALUES ('xh', 'Xhosa');
835INSERT INTO maia_languages (abbreviation, language_name) VALUES ('yi', 'Jiddi&#x0161;');
836INSERT INTO maia_languages (abbreviation, language_name) VALUES ('yo', 'Yoruba');
837INSERT INTO maia_languages (abbreviation, language_name) VALUES ('za', 'Zhuang');
838INSERT INTO maia_languages (abbreviation, language_name) VALUES ('zh', 'Zh&#x014D;ng-wén');
839INSERT INTO maia_languages (abbreviation, language_name) VALUES ('zu', 'Zulu');
840
841-- Mark the default language (English) as "installed"
842
843UPDATE maia_languages SET installed = 'Y' WHERE abbreviation = 'en';
844
845-- Insert default themes
846
847INSERT INTO maia_themes VALUES (1, 'Ocean Surf', 'ocean_surf');
848INSERT INTO maia_themes VALUES (2, 'Desert Sand', 'desert_sand');
849-- delaying this theme till 1.1
850-- INSERT INTO maia_themes VALUES (3, 'DGM', 'dgm');
851
852-- Set SpamAssassin Bayes database defaults
853
854INSERT INTO bayes_global_vars VALUES ('VERSION', '3');
855
856-- End of database initialization script
857
858