diff options
author | Andreas Unterkircher <unki@netshadow.at> | 2008-12-12 18:34:52 +0100 |
---|---|---|
committer | Andreas Unterkircher <unki@netshadow.at> | 2008-12-12 18:34:52 +0100 |
commit | 226ad0a3c764c0606048acf7371b02765eee60d2 (patch) | |
tree | 1a9db74a103714ea5bac7ccf644eb44594a0b9e3 /doc | |
download | exilog-226ad0a3c764c0606048acf7371b02765eee60d2.zip exilog-226ad0a3c764c0606048acf7371b02765eee60d2.tar.gz exilog-226ad0a3c764c0606048acf7371b02765eee60d2.tar.bz2 |
Imported Upstream version 0.5upstream/0.5
Diffstat (limited to 'doc')
-rw-r--r-- | doc/Changelog | 31 | ||||
-rw-r--r-- | doc/exilog.txt | 171 | ||||
-rw-r--r-- | doc/mysql-db-script.sql | 199 | ||||
-rw-r--r-- | doc/pgsql-db-script.sql | 624 |
4 files changed, 1025 insertions, 0 deletions
diff --git a/doc/Changelog b/doc/Changelog new file mode 100644 index 0000000..f3d3c11 --- /dev/null +++ b/doc/Changelog @@ -0,0 +1,31 @@ +0.5 - Feature: Add support for basic user access + levels. + - Feature: Add support to deliver,cancel and + delete queued messages. + - Make "pretty process names" for the agent + configurable (Thanks to Sven Hartge). + +0.4 - Fix network matching code + - Add pidfile support for the agent. + (Thanks to Sven Hartge) + - Add support for "log_timezone = true" + (Thanks to Jeremy Harris) + +0.3 - Fix detection of post-DATA rejects + (Thanks to Chris Lear) + - Fix quoting of "completed" timestamp + in exilog_sql.pm. + - Fix delivery parsing when +sender_on_delivery + is set. + - Docs: mention exilog_cleanup.pl. + - Docs: mention possibility to run the + agent non-root. + +0.2 - Use FindBin to find out binary location + - Fix bug in SQL quoting. + - Remove link from "Server" to the unfinished + Queue display :) + - Docs: Mention Net::Netmask prerequisite. + - Docs: Add small usage section. + +0.01 Initial Release diff --git a/doc/exilog.txt b/doc/exilog.txt new file mode 100644 index 0000000..da0bcd2 --- /dev/null +++ b/doc/exilog.txt @@ -0,0 +1,171 @@ +Exilog - Central logging and reporting tool for Exim +---------------------------------------------------- +Author: Tom Kistner <tom@duncanthrax.net> + + +Introduction +------------ +Exilog is a tool to centralize and visualize Exim logs +across multiple Exim servers. It is used in addition to +Exim's standard or syslog logging. It does not require +changing Exim or its logging style (In fact you don't +even need to restart your Exim(s) to install Exilog). + +Exilog is SQL-based and requires + +- A SQL Server (mysql and postgres are supported) +- An HTTP Server with CGI support (Apache comes to mind) +- Perl with + o DBD/DBI SQL Database modules for the selected database. + o Net::Netmask module + You can get these modules via CPAN, but there is a good + chance that your OS distribution has precompiled packages + available. +- A modern browser (recent Mozilla, Firefox, IE5/6, Safari) + + +Target Audience +--------------- +Postmasters who want to be able to troubleshoot email +delivery across their Exim installations, no matter if +used as relays or backend IMAP and POP toasters. + +Postmasters who want to offload support grungework to +staff who is less proficient with grep, sed and awk. + + +Features +-------- +Search for addresses, hosts (names and IP addresses), +messages IDs and ident strings. + +Filter by event types: Arrivals, Deliveries, Deferrals, +Errors, Rejects and messages that are still on-queue. + +Message actions: Force delivery, cancel and delete. + +Filter by time range, servers and server groups. + +See basic host statistics, message sizes, message transfer +times. + +Point-and-click on message IDs, IP addresses, hostnames to +get different filtering results. + +Track messages across servers by header message ID. + + +Installation +------------ +An Exilog installation consist of four parts: + +1) The database holding the log information. +2) The web interface. +3) The agents on the Exim servers. +4) Database cleanup (via Cron) + +These parts can reside on different machines, or all be +on the same machine. For best results, the database and +web interface should be on the same physical box, however. + +1) Installing the database. + + Select if you want to use MySQL or Postgres. MySQL is + somehow preferred since its default case insensitivy + is better suited for the job. + + Create a database using the respective SQL scripts from + /doc. For postgres, you might have to slightly edit the + script to change the 'exilog' user name (or create the + 'exilog' user first). + + If necessary, create a database user that has + full rights on the new database. + + Make sure the database is reachable by TCP/IP from each + of your Exim servers. + + +2) Installing the Web Interface. + + Untar the exilog distribution somewhere where your HTTP + server can reach it (/var/www/localhost/htdocs/exilog ... + you get the idea). + + Rename the exilog.conf-example file to exilog.conf and + edit it. It is fully commented. Then return to this document. + + exilog_cgi.pl is the web interface. Set it up as + DirectoryIndex if you like. + + Optionally, set up access controls. You should also deny + read access to exilog.conf from HTTP clients. + + Open your browser and open exilog_cgi.pl. If you see + the "Messages" tab you are fine. + + If you want to restrict access to the web interface, set + up basic authentication (possibly via .htaccess/.htpasswd). + + Now we need to feed some data into the database. + + +3) Installing the Exim server agent(s). + + You'll need to deploy one Exilog agent on each exim server + you run. + + For each server, untar the Exilog distribution somewhere, + overwrite the vanilla exilog.conf with the one you edited + in step 2, then open it and tweak the "agent" section to + match the server you are installing it on. Also tweak the + SQL section to include host and port definitions of your SQL + server so the agent knows where to connect to. + + Then run exilog_agent.pl as root. You might want to include + a start/stop procedure for the agent in your Exim rc file. + + You can also run the agent as a non-root user if that UID + * Can read Exim's logs. + * Write the configured agent log file. + * Is a trusted user in Exim. + Of course root can do all that without further configuration + tweaks. Using Exim's own effective UID is also possible. + + Sending SIGTERM to the agent parent process will make it + cleanly quit, including all of its children. + + When the agent is started, it will pump the current log file + into the database (this can take a while), then tail it. It + will automatically detect log rotation and re-open the file + if necessary. + + +4) Setting up the database cleanup script + + Set up exilog_cleanup.pl to run daily via cron. This will + typically reside on the database or web host. Remember to + set the "cleanup->cutoff" parameter in exilog.conf to the + number of days worth of data you want to keep in the database. + + + +Usage +----- +That should be pretty straightforward. One detail is important: + +When searching for addresses and hostnames, you must use SQL +wildcards when only specifying a substring: + +% Matches any string of zero or more characters. +_ Matches any one character. + +Example: You want to find all mails with addresses that contain +'joe', so you'd search for '%joe%'. + + +-- +Tom Kistner +<tom@duncanthrax.net> +June 2005 + diff --git a/doc/mysql-db-script.sql b/doc/mysql-db-script.sql new file mode 100644 index 0000000..7ed82a6 --- /dev/null +++ b/doc/mysql-db-script.sql @@ -0,0 +1,199 @@ +# phpMyAdmin MySQL-Dump +# version 2.3.2 +# http://www.phpmyadmin.net/ (download page) +# +# Host: localhost +# Erstellungszeit: 02. Juni 2005 um 15:40 +# Server Version: 3.23.47 +# PHP-Version: 4.1.2 +# Datenbank: `exilog` +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `deferrals` +# + +CREATE TABLE `deferrals` ( + `server` varchar(32) NOT NULL default '', + `message_id` varchar(16) binary NOT NULL default '', + `timestamp` bigint(20) NOT NULL default '0', + `rcpt` varchar(200) NOT NULL default '', + `rcpt_intermediate` varchar(200) default NULL, + `rcpt_final` varchar(200) NOT NULL default '', + `host_addr` varchar(15) default NULL, + `host_dns` varchar(255) default NULL, + `tls_cipher` varchar(128) default NULL, + `router` varchar(128) default NULL, + `transport` varchar(128) default NULL, + `shadow_transport` varchar(128) default NULL, + `errmsg` blob, + PRIMARY KEY (`server`,`message_id`,`timestamp`,`rcpt`,`rcpt_final`), + KEY `rcpt` (`rcpt`), + KEY `rcpt_final` (`rcpt_final`), + KEY `server` (`server`), + KEY `message_id` (`message_id`), + KEY `timestamp` (`timestamp`), + KEY `host_addr` (`host_addr`) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `deliveries` +# + +CREATE TABLE `deliveries` ( + `server` varchar(32) NOT NULL default '', + `message_id` varchar(16) binary NOT NULL default '', + `timestamp` bigint(20) NOT NULL default '0', + `rcpt` varchar(200) NOT NULL default '', + `rcpt_intermediate` varchar(200) default NULL, + `rcpt_final` varchar(200) NOT NULL default '', + `host_addr` varchar(15) default NULL, + `host_dns` varchar(255) default NULL, + `tls_cipher` varchar(128) default NULL, + `router` varchar(128) default NULL, + `transport` varchar(128) default NULL, + `shadow_transport` varchar(128) default NULL, + PRIMARY KEY (`server`,`message_id`,`timestamp`,`rcpt`,`rcpt_final`), + KEY `rcpt` (`rcpt`), + KEY `rcpt_final` (`rcpt_final`), + KEY `host_dns` (`host_dns`), + KEY `timestamp` (`timestamp`), + KEY `server` (`server`), + KEY `message_id` (`message_id`), + KEY `host_addr` (`host_addr`) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `errors` +# + +CREATE TABLE `errors` ( + `server` varchar(32) NOT NULL default '', + `message_id` varchar(16) binary NOT NULL default '', + `timestamp` bigint(20) NOT NULL default '0', + `rcpt` varchar(200) NOT NULL default '', + `rcpt_intermediate` varchar(200) default NULL, + `rcpt_final` varchar(200) NOT NULL default '', + `host_addr` varchar(15) default NULL, + `host_dns` varchar(255) default NULL, + `tls_cipher` varchar(128) default NULL, + `router` varchar(128) default NULL, + `transport` varchar(128) default NULL, + `shadow_transport` varchar(128) default NULL, + `errmsg` blob, + PRIMARY KEY (`server`,`message_id`,`timestamp`,`rcpt`,`rcpt_final`), + KEY `timestamp` (`timestamp`), + KEY `server` (`server`), + KEY `rcpt` (`rcpt`), + KEY `host_addr` (`host_addr`), + KEY `message_id` (`message_id`), + KEY `rcpt_final` (`rcpt_final`) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `messages` +# + +CREATE TABLE `messages` ( + `server` varchar(32) NOT NULL default '', + `message_id` varchar(16) binary NOT NULL default '', + `timestamp` bigint(20) default NULL, + `msgid` varchar(255) default NULL, + `completed` bigint(20) default NULL, + `mailfrom` varchar(255) default NULL, + `host_addr` varchar(15) default NULL, + `host_rdns` varchar(255) default NULL, + `host_ident` varchar(255) default NULL, + `host_helo` varchar(255) default NULL, + `proto` varchar(32) default NULL, + `size` bigint(20) default NULL, + `tls_cipher` varchar(128) default NULL, + `user` varchar(128) default NULL, + `bounce_parent` varchar(16) default NULL, + PRIMARY KEY (`server`,`message_id`), + KEY `msgid` (`msgid`), + KEY `user` (`user`), + KEY `timestamp` (`timestamp`), + KEY `host_addr` (`host_addr`), + KEY `message_id` (`message_id`), + KEY `bounce_parent` (`bounce_parent`), + KEY `mailfrom` (`mailfrom`), + KEY `server` (`server`), + KEY `host_dns` (`host_rdns`) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `queue` +# + +CREATE TABLE `queue` ( + `server` varchar(32) NOT NULL default '', + `message_id` varchar(16) binary NOT NULL default '', + `mailfrom` varchar(255) NOT NULL default '', + `timestamp` bigint(20) NOT NULL default '0', + `num_dsn` int(11) NOT NULL default '0', + `frozen` bigint(20) default NULL, + `recipients_delivered` blob, + `recipients_pending` blob, + `spool_path` varchar(64) NOT NULL default '', + `subject` varchar(255) default NULL, + `msgid` varchar(255) default NULL, + `headers` blob NOT NULL, + `action` varchar(64) default NULL, + PRIMARY KEY (`server`,`message_id`), + KEY `spool_path` (`spool_path`), + KEY `mailfrom` (`mailfrom`), + KEY `message_id` (`message_id`), + KEY `server` (`server`), + KEY `timestamp` (`timestamp`), + KEY `frozen` (`frozen`), + KEY `msgid` (`msgid`), + KEY `action` (`action`) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `rejects` +# + +CREATE TABLE `rejects` ( + `server` varchar(32) NOT NULL default '', + `message_id` varchar(16) binary default NULL, + `timestamp` bigint(20) NOT NULL default '0', + `host_addr` varchar(15) NOT NULL default '', + `host_rdns` varchar(255) NOT NULL default '', + `host_ident` varchar(255) default NULL, + `host_helo` varchar(255) default NULL, + `mailfrom` varchar(255) default NULL, + `rcpt` varchar(255) default NULL, + `errmsg` varchar(255) NOT NULL default '', + UNIQUE KEY `rejects_unique` (`server`,`timestamp`,`host_addr`,`errmsg`), + KEY `message_id` (`message_id`), + KEY `server` (`server`), + KEY `timestamp` (`timestamp`), + KEY `host_addr` (`host_addr`), + KEY `mailfrom` (`mailfrom`), + KEY `rcpt` (`rcpt`), + KEY `host_dns` (`host_rdns`) +) TYPE=MyISAM; +# -------------------------------------------------------- + +# +# Tabellenstruktur für Tabelle `unknown` +# + +CREATE TABLE `unknown` ( + `server` varchar(32) NOT NULL default '', + `message_id` varchar(16) binary NOT NULL default '', + `timestamp` bigint(20) NOT NULL default '0', + `line` varchar(255) NOT NULL default '', + PRIMARY KEY (`server`,`message_id`,`timestamp`,`line`), + KEY `server` (`server`), + KEY `message_id` (`message_id`), + KEY `timestamp` (`timestamp`) +) TYPE=MyISAM; + diff --git a/doc/pgsql-db-script.sql b/doc/pgsql-db-script.sql new file mode 100644 index 0000000..425f2b4 --- /dev/null +++ b/doc/pgsql-db-script.sql @@ -0,0 +1,624 @@ +-- +-- PostgreSQL database dump +-- + +SET client_encoding = 'LATIN1'; +SET check_function_bodies = false; + +-- +-- TOC entry 3 (OID 17145) +-- Name: exilog; Type: SCHEMA; Schema: -; Owner: +-- + +CREATE SCHEMA exilog AUTHORIZATION exilog; + + +SET SESSION AUTHORIZATION 'exilog'; + +SET search_path = exilog, pg_catalog; + +-- +-- TOC entry 4 (OID 17181) +-- Name: deferrals; Type: TABLE; Schema: exilog; Owner: exilog +-- + +CREATE TABLE deferrals ( + server character varying(32) NOT NULL, + message_id character(16) NOT NULL, + "timestamp" bigint NOT NULL, + rcpt character varying(200) NOT NULL, + rcpt_intermediate character varying(200), + rcpt_final character varying(200) NOT NULL, + host_addr inet, + host_dns character varying(255), + tls_cipher character varying(128), + router character varying(128), + transport character varying(128), + shadow_transport character varying(128), + errmsg character varying(2048) +); + + +-- +-- TOC entry 5 (OID 17194) +-- Name: errors; Type: TABLE; Schema: exilog; Owner: exilog +-- + +CREATE TABLE errors ( + server character varying(32) NOT NULL, + message_id character(16) NOT NULL, + "timestamp" bigint NOT NULL, + rcpt character varying(200) NOT NULL, + rcpt_intermediate character varying(200), + rcpt_final character varying(200) NOT NULL, + host_addr inet, + host_dns character varying(255), + tls_cipher character varying(128), + router character varying(128), + transport character varying(128), + shadow_transport character varying(128), + errmsg character varying(2048) +); + + +-- +-- TOC entry 6 (OID 17207) +-- Name: deliveries; Type: TABLE; Schema: exilog; Owner: exilog +-- + +CREATE TABLE deliveries ( + server character varying(32) NOT NULL, + message_id character(16) NOT NULL, + "timestamp" bigint NOT NULL, + rcpt character varying(200) NOT NULL, + rcpt_intermediate character varying(200), + rcpt_final character varying(200) NOT NULL, + host_addr inet, + host_dns character varying(255), + tls_cipher character varying(128), + router character varying(128), + transport character varying(128), + shadow_transport character varying(128) +); + + +-- +-- TOC entry 7 (OID 17220) +-- Name: queue; Type: TABLE; Schema: exilog; Owner: exilog +-- + +CREATE TABLE queue ( + server character varying(32) NOT NULL, + message_id character(16) NOT NULL, + mailfrom character varying(255), + "timestamp" bigint, + num_dsn integer, + frozen bigint, + recipients_delivered bytea, + recipients_pending bytea, + spool_path character varying(64), + subject character varying(255), + msgid character varying(255), + headers bytea, + "action" character varying(64) +); + + +-- +-- TOC entry 8 (OID 17249) +-- Name: unknown; Type: TABLE; Schema: exilog; Owner: exilog +-- + +CREATE TABLE "unknown" ( + server character varying(32) NOT NULL, + message_id character(16) NOT NULL, + "timestamp" bigint NOT NULL, + line character varying(255) NOT NULL +); + + +-- +-- TOC entry 9 (OID 695844) +-- Name: messages; Type: TABLE; Schema: exilog; Owner: exilog +-- + +CREATE TABLE messages ( + server character varying(32) NOT NULL, + message_id character(16) NOT NULL, + "timestamp" bigint, + msgid character varying(255), + completed bigint, + mailfrom character varying(255), + host_addr inet, + host_rdns character varying(255), + host_ident character varying(255), + host_helo character varying(255), + proto character varying(32), + size bigint, + tls_cipher character varying(128), + "user" character varying(128), + bounce_parent character(16) +); + + +-- +-- TOC entry 10 (OID 695860) +-- Name: rejects; Type: TABLE; Schema: exilog; Owner: exilog +-- + +CREATE TABLE rejects ( + server character varying(32) NOT NULL, + message_id character(16), + "timestamp" bigint NOT NULL, + host_addr inet, + host_rdns character varying(255), + host_ident character varying(255), + host_helo character varying(255), + mailfrom character varying(255), + rcpt character varying(255), + errmsg character varying(255) NOT NULL +); + + +-- +-- TOC entry 16 (OID 17188) +-- Name: deferrals_server; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deferrals_server ON deferrals USING btree (server); + + +-- +-- TOC entry 12 (OID 17189) +-- Name: deferrals_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deferrals_message_id ON deferrals USING btree (message_id); + + +-- +-- TOC entry 18 (OID 17190) +-- Name: deferrals_timestamp; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deferrals_timestamp ON deferrals USING btree ("timestamp"); + + +-- +-- TOC entry 14 (OID 17191) +-- Name: deferrals_rcpt; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deferrals_rcpt ON deferrals USING btree (rcpt); + + +-- +-- TOC entry 15 (OID 17192) +-- Name: deferrals_rcpt_final; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deferrals_rcpt_final ON deferrals USING btree (rcpt_final); + + +-- +-- TOC entry 11 (OID 17193) +-- Name: deferrals_host_addr; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deferrals_host_addr ON deferrals USING btree (host_addr); + + +-- +-- TOC entry 24 (OID 17199) +-- Name: errors_server; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX errors_server ON errors USING btree (server); + + +-- +-- TOC entry 20 (OID 17200) +-- Name: errors_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX errors_message_id ON errors USING btree (message_id); + + +-- +-- TOC entry 26 (OID 17201) +-- Name: errors_timestamp; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX errors_timestamp ON errors USING btree ("timestamp"); + + +-- +-- TOC entry 22 (OID 17202) +-- Name: errors_rcpt; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX errors_rcpt ON errors USING btree (rcpt); + + +-- +-- TOC entry 23 (OID 17203) +-- Name: errors_rcpt_final; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX errors_rcpt_final ON errors USING btree (rcpt_final); + + +-- +-- TOC entry 19 (OID 17204) +-- Name: errors_host_addr; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX errors_host_addr ON errors USING btree (host_addr); + + +-- +-- TOC entry 32 (OID 17212) +-- Name: deliveries_server; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deliveries_server ON deliveries USING btree (server); + + +-- +-- TOC entry 28 (OID 17213) +-- Name: deliveries_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deliveries_message_id ON deliveries USING btree (message_id); + + +-- +-- TOC entry 34 (OID 17214) +-- Name: deliveries_timestamp; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deliveries_timestamp ON deliveries USING btree ("timestamp"); + + +-- +-- TOC entry 30 (OID 17215) +-- Name: deliveries_rcpt; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deliveries_rcpt ON deliveries USING btree (rcpt); + + +-- +-- TOC entry 31 (OID 17216) +-- Name: deliveries_rcpt_final; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deliveries_rcpt_final ON deliveries USING btree (rcpt_final); + + +-- +-- TOC entry 27 (OID 17217) +-- Name: deliveries_host_addr; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deliveries_host_addr ON deliveries USING btree (host_addr); + + +-- +-- TOC entry 41 (OID 17241) +-- Name: queue_server; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX queue_server ON queue USING btree (server); + + +-- +-- TOC entry 38 (OID 17242) +-- Name: queue_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX queue_message_id ON queue USING btree (message_id); + + +-- +-- TOC entry 37 (OID 17243) +-- Name: queue_mailfrom; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX queue_mailfrom ON queue USING btree (mailfrom); + + +-- +-- TOC entry 44 (OID 17244) +-- Name: queue_timestamp; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX queue_timestamp ON queue USING btree ("timestamp"); + + +-- +-- TOC entry 36 (OID 17245) +-- Name: queue_frozen; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX queue_frozen ON queue USING btree (frozen); + + +-- +-- TOC entry 43 (OID 17246) +-- Name: queue_spool_path; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX queue_spool_path ON queue USING btree (spool_path); + + +-- +-- TOC entry 39 (OID 17247) +-- Name: queue_msgid; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX queue_msgid ON queue USING btree (msgid); + + +-- +-- TOC entry 35 (OID 17248) +-- Name: queue_action; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX queue_action ON queue USING btree ("action"); + + +-- +-- TOC entry 47 (OID 17253) +-- Name: unknown_server; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX unknown_server ON "unknown" USING btree (server); + + +-- +-- TOC entry 45 (OID 17254) +-- Name: unknown_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX unknown_message_id ON "unknown" USING btree (message_id); + + +-- +-- TOC entry 49 (OID 17255) +-- Name: unknown_timestamp; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX unknown_timestamp ON "unknown" USING btree ("timestamp"); + + +-- +-- TOC entry 17 (OID 237716) +-- Name: deferrals_server_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deferrals_server_message_id ON deferrals USING btree (server, message_id); + + +-- +-- TOC entry 33 (OID 237717) +-- Name: deliveries_server_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX deliveries_server_message_id ON deliveries USING btree (server, message_id); + + +-- +-- TOC entry 25 (OID 237719) +-- Name: errors_server_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX errors_server_message_id ON errors USING btree (server, message_id); + + +-- +-- TOC entry 42 (OID 237725) +-- Name: queue_server_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX queue_server_message_id ON queue USING btree (server, message_id); + + +-- +-- TOC entry 48 (OID 237821) +-- Name: unknown_server_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX unknown_server_message_id ON "unknown" USING btree (server, message_id); + + +-- +-- TOC entry 57 (OID 695849) +-- Name: server; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX server ON messages USING btree (server); + + +-- +-- TOC entry 53 (OID 695850) +-- Name: message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX message_id ON messages USING btree (message_id); + + +-- +-- TOC entry 55 (OID 695851) +-- Name: msgid; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX msgid ON messages USING btree (msgid); + + +-- +-- TOC entry 58 (OID 695852) +-- Name: timestamp; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX "timestamp" ON messages USING btree ("timestamp"); + + +-- +-- TOC entry 51 (OID 695853) +-- Name: host_addr; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX host_addr ON messages USING btree (host_addr); + + +-- +-- TOC entry 50 (OID 695854) +-- Name: bounce_parent; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX bounce_parent ON messages USING btree (bounce_parent); + + +-- +-- TOC entry 59 (OID 695855) +-- Name: user; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX "user" ON messages USING btree ("user"); + + +-- +-- TOC entry 52 (OID 695856) +-- Name: mailfrom; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX mailfrom ON messages USING btree (mailfrom); + + +-- +-- TOC entry 54 (OID 695857) +-- Name: messages_server_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX messages_server_message_id ON messages USING btree (server, message_id); + + +-- +-- TOC entry 64 (OID 695865) +-- Name: rejects_server; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX rejects_server ON rejects USING btree (server); + + +-- +-- TOC entry 66 (OID 695866) +-- Name: rejects_timestamp; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX rejects_timestamp ON rejects USING btree ("timestamp"); + + +-- +-- TOC entry 60 (OID 695867) +-- Name: rejects_host_addr; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX rejects_host_addr ON rejects USING btree (host_addr); + + +-- +-- TOC entry 61 (OID 695868) +-- Name: rejects_mailfrom; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX rejects_mailfrom ON rejects USING btree (mailfrom); + + +-- +-- TOC entry 63 (OID 695869) +-- Name: rejects_rcpt; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX rejects_rcpt ON rejects USING btree (rcpt); + + +-- +-- TOC entry 62 (OID 695870) +-- Name: rejects_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX rejects_message_id ON rejects USING btree (message_id); + + +-- +-- TOC entry 65 (OID 695871) +-- Name: rejects_server_message_id; Type: INDEX; Schema: exilog; Owner: exilog +-- + +CREATE INDEX rejects_server_message_id ON rejects USING btree (server, message_id); + + +-- +-- TOC entry 13 (OID 17186) +-- Name: deferrals_primary; Type: CONSTRAINT; Schema: exilog; Owner: exilog +-- + +ALTER TABLE ONLY deferrals + ADD CONSTRAINT deferrals_primary PRIMARY KEY (server, message_id, "timestamp", rcpt, rcpt_final); + + +-- +-- TOC entry 21 (OID 17205) +-- Name: errors_primary; Type: CONSTRAINT; Schema: exilog; Owner: exilog +-- + +ALTER TABLE ONLY errors + ADD CONSTRAINT errors_primary PRIMARY KEY (server, message_id, "timestamp", rcpt, rcpt_final); + + +-- +-- TOC entry 29 (OID 17218) +-- Name: deliveries_primary; Type: CONSTRAINT; Schema: exilog; Owner: exilog +-- + +ALTER TABLE ONLY deliveries + ADD CONSTRAINT deliveries_primary PRIMARY KEY (server, message_id, "timestamp", rcpt, rcpt_final); + + +-- +-- TOC entry 40 (OID 17239) +-- Name: queue_primary; Type: CONSTRAINT; Schema: exilog; Owner: exilog +-- + +ALTER TABLE ONLY queue + ADD CONSTRAINT queue_primary PRIMARY KEY (server, message_id); + + +-- +-- TOC entry 46 (OID 17251) +-- Name: unknown_primary; Type: CONSTRAINT; Schema: exilog; Owner: exilog +-- + +ALTER TABLE ONLY "unknown" + ADD CONSTRAINT unknown_primary PRIMARY KEY (server, message_id, "timestamp", line); + + +-- +-- TOC entry 56 (OID 695858) +-- Name: primary; Type: CONSTRAINT; Schema: exilog; Owner: exilog +-- + +ALTER TABLE ONLY messages + ADD CONSTRAINT "primary" PRIMARY KEY (server, message_id); + + +-- +-- TOC entry 67 (OID 695872) +-- Name: rejects_unique; Type: CONSTRAINT; Schema: exilog; Owner: exilog +-- + +ALTER TABLE ONLY rejects + ADD CONSTRAINT rejects_unique UNIQUE (server, "timestamp", host_addr, errmsg); + |