{"id":38312526,"url":"https://github.com/samm-git/exilog","last_synced_at":"2026-01-17T02:33:14.682Z","repository":{"id":230872431,"uuid":"780318842","full_name":"samm-git/exilog","owner":"samm-git","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-01T08:51:53.000Z","size":143,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-04-01T09:47:36.348Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/samm-git.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-04-01T08:05:41.000Z","updated_at":"2024-04-01T09:47:39.746Z","dependencies_parsed_at":"2024-04-01T09:57:42.378Z","dependency_job_id":null,"html_url":"https://github.com/samm-git/exilog","commit_stats":null,"previous_names":["samm-git/exilog"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/samm-git/exilog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samm-git%2Fexilog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samm-git%2Fexilog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samm-git%2Fexilog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samm-git%2Fexilog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samm-git","download_url":"https://codeload.github.com/samm-git/exilog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samm-git%2Fexilog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28492322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T00:50:05.742Z","status":"online","status_checked_at":"2026-01-17T02:00:07.808Z","response_time":85,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-17T02:33:14.409Z","updated_at":"2026-01-17T02:33:14.654Z","avatar_url":"https://github.com/samm-git.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Exilog - Central logging and reporting tool for Exim\n\n| Tag | Value |\n| - | - |\n| Author | Tom Kistner \u003ctom@duncanthrax.net\u003e |\n| Version | 0.5.1 |\n| License | GPLv2 |\n\n[TOC]\n\n## Introduction\n\nExilog is a tool to centralize and visualize Exim logs\nacross multiple Exim servers. It is used in addition to\nExim's standard or syslog logging. It does not require\nchanging Exim or its logging style (In fact you don't\neven need to restart your Exim(s) to install Exilog).\n\nExilog is SQL-based and requires\n\n* A SQL Server (mysql and postgres are supported)\n* An HTTP Server with CGI support (Apache comes to mind)\n* Perl with\n  * DBD/DBI SQL Database modules for the selected database.\n  * Net::Netmask module\n  You can get these modules via CPAN, but there is a good\n  chance that your OS distribution has precompiled packages\n  available.\n* A modern browser (recent Mozilla, Firefox, IE5/6, Safari)\n\n## Target Audience\n\nPostmasters who want to be able to troubleshoot email\ndelivery across their Exim installations, no matter if\nused as relays or backend IMAP and POP toasters.\n\nPostmasters who want to offload support grungework to\nstaff who is less proficient with grep, sed and awk.\n\n## Features\n\nSearch for addresses, hosts (names and IP addresses),\nmessages IDs and ident strings.\n\nFilter by event types: Arrivals, Deliveries, Deferrals,\nErrors, Rejects and messages that are still on-queue.\n\nMessage actions: Force delivery, cancel and delete.\n\nFilter by time range, servers and server groups.\n\nSee basic host statistics, message sizes, message transfer\ntimes.\n\nPoint-and-click on message IDs, IP addresses, hostnames to\nget different filtering results.\n\nTrack messages across servers by header message ID.\n\n## Installation\n\nAn Exilog installation consist of four parts:\n\n1. The database holding the log information.\n1. The web interface.\n1. The agents on the Exim servers.\n1. Database cleanup (via Cron)\n\nThese parts can reside on different machines, or all be\non the same machine. For best results, the database and\nweb interface should be on the same physical box, however.\n\n### 1. Installing the database\n\nSelect if you want to use MySQL or Postgres. MySQL is\nsomehow preferred since its default case insensitivy\nis better suited for the job.\n\nCreate a database using the respective SQL scripts from\n/doc. For postgres, you might have to slightly edit the\nscript to change the 'exilog' user name (or create the\n'exilog' user first).\n\nIf necessary, create a database user that has\nfull rights on the new database.\n\nMake sure the database is reachable by TCP/IP from each\nof your Exim servers.\n\n### 2. Installing the Web Interface\n\nUntar the exilog distribution somewhere where your HTTP\nserver can reach it (/var/www/localhost/htdocs/exilog ...\nyou get the idea).\n\nRename the exilog.conf-example file to exilog.conf and\nedit it. It is fully commented. Then return to this document.\n\nexilog\\_cgi.pl is the web interface. Set it up as\nDirectoryIndex if you like.\n\nOptionally, set up access controls. You should also deny\nread access to exilog.conf from HTTP clients.\n\nOpen your browser and open exilog\\_cgi.pl. If you see\nthe \"Messages\" tab you are fine.\n\nIf you want to restrict access to the web interface, set\nup basic authentication (possibly via .htaccess/.htpasswd).\n\nNow we need to feed some data into the database.\n\n### 3. Installing the Exim server agent(s)\n\nYou'll need to deploy one Exilog agent on each exim server\nyou run.\n\nFor each server, untar the Exilog distribution somewhere,\noverwrite the vanilla exilog.conf with the one you edited\nin step 2, then open it and tweak the \"agent\" section to\nmatch the server you are installing it on. Also tweak the\nSQL section to include host and port definitions of your SQL\nserver so the agent knows where to connect to.\n\nThen run exilog\\_agent.pl as root. You might want to include\na start/stop procedure for the agent in your Exim rc file.\n\nYou can also run the agent as a non-root user if that UID\n\n* Can read Exim's logs.\n* Write the configured agent log file.\n* Is a trusted user in Exim.\n\nOf course root can do all that without further configuration\ntweaks. Using Exim's own effective UID is also possible.\n\nSending SIGTERM to the agent parent process will make it\ncleanly quit, including all of its children.\n\nWhen the agent is started, it will pump the current log file\ninto the database (this can take a while), then tail it. It\nwill automatically detect log rotation and re-open the file\nif necessary.\n\n### 4. Setting up the database cleanup script\n\nSet up exilog\\_cleanup.pl to run daily via cron. This will\ntypically reside on the database or web host. Remember to\nset the \"cleanup-\u003ecutoff\" parameter in exilog.conf to the\nnumber of days worth of data you want to keep in the database.\n\n## Usage\n\nThat should be pretty straightforward. One detail is important:\n\nWhen searching for addresses and hostnames, you must use SQL\nwildcards when only specifying a substring:\n\n| Wildcard | Description |\n| - | - |\n| % | Matches any string of zero or more characters |\n| \\_ | Matches any one character |\n\nExample: You want to find all mails with addresses that contain\n'joe', so you'd search for '%joe%'.\n\n## Debian Packages\n\n*deb* packages for exilog can be found on `https://apt.netshadow.net`.\n\n| Package-Name | Description |\n| - | - |\n| exilog-agent | exilog agent itself |\n| exilog-cgi | contains the CGI stuff for the WebUI |\n| exilog-common | shared stuff used by CGIs and agents |\n\n## Credits\n\n* Tom Kistner \u003ctom@duncanthrax.net\u003e June 2005\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamm-git%2Fexilog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamm-git%2Fexilog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamm-git%2Fexilog/lists"}