+cabal-version: 3.0
name: mailbox-count
-version: 0.1.0
-cabal-version: >= 1.8
+version: 0.0.6
author: Michael Orlitzky
maintainer: Michael Orlitzky <michael@orlitzky.com>
-license: GPL-3
+license: AGPL-3.0-only
license-file: doc/LICENSE
-homepage: http://michael.orlitzky.com/code/mailbox-count.php
bug-reports: mailto:michael@orlitzky.com
category: Mail, Utils
build-type: Simple
extra-source-files:
+ doc/mailbox-countrc.example
doc/man1/mailbox-count.1
+ test/fixtures/postfixadmin.sqlite3
synopsis:
Count mailboxes in a SQL database.
description:
- Count mailboxes in a SQL database.
+ /Usage/:
+
+ @
+ mailbox-count [OPTIONS]
+ @
+
+ Mailbox-count produces a simple count of mailboxes that exist
+ per-domain in some SQL database. The default queries are compatible
+ with the schema used by PostfixAdmin <http://postfixadmin.sourceforge.net/>,
+ but it is possible to supply your own queries via the @--summary-query@
+ and @--detail-query@ options.
+
+ The summary report lists each domain, along with the number of
+ mailboxes owned by that domain. The order is determined by the summary
+ query, which lists the domains alphabetically by default.
+
+ The default detail report shows the same, but also contains a list of
+ each individual mailbox (again in alphabetical order) belonging to the
+ domains.
+
+ /Input/:
+
+ None.
+
+ /Output/:
+
+ Either a summary, or detailed report (with @--detail@) of the
+ number of mailboxes per-domain contained in the database.
+
+ /Options/:
+
+ * \--database
+
+ The name of the database (or file, if SQLite) to which we should
+ connect.
+
+ Default: The name of the current user (Postgres only).
+
+ * \--detail
+
+ Produce a detailed report listing all mailboxes by domain.
+
+ * \--detail-query
+
+ SQL query used to produce the detail report. This should return the
+ set of all (domain, username) pairs. See the default value for an
+ example.
+
+ Default: \"SELECT domain,username FROM mailbox ORDER BY domain;\"
+
+ * \--host
+
+ Hostname where the database is located (Postgres-only).
+
+ Default: None, a UNIX domain socket connection is attempted
+ (Postgres only)
+
+ * \--password
+
+ Password used to connect to the database (Postgres-only).
+
+ Default: None (assumes passwordless authentication)
+
+ * \--port
+
+ Port number used to connect to the database (Postgres-only).
+
+ Default: None, a UNIX domain socket connection is attempted
+ (Postgres only)
+
+ * \--summary-query
+
+ SQL query used to produce the summary report. This should return
+ (domain, user count) pairs. See the default value for an
+ example.
+
+ Default: \"SELECT domain,COUNT(username) FROM mailbox GROUP BY domain
+ ORDER BY domain;\"
+
+ * \--username
+
+ Username used to connect to the database (Postgres-only).
+
+ Default: The current user
+
+ /Examples/:
+
+ The default summary report:
+
+ @
+ $ mailbox-count --database=postfixadmin.sqlite3
+ Summary (number of mailboxes per domain)
+ \----------------------------------------
+ example.com: 3
+ example.invalid: 1
+ example.net: 2
+ example.org: 1
+ @
+
+ The more detailed report:
+
+ @
+ $ mailbox-count --detail --database=postfixadmin.sqlite3
+ Detail (list of all mailboxes by domain)
+ \----------------------------------------
+ example.com (3):
+   user1
+   user3
+   user5
+
+ example.invalid (1):
+   user7
+
+ example.net (2):
+   user2
+   user4
+
+ example.org (1):
+   user6
+ @
+
+
executable mailbox-count
build-depends:
- base == 4.*,
- cmdargs == 0.10.*,
- configurator == 0.2.*,
- containers == 0.5.*,
- directory == 1.2.*,
- filepath == 1.3.*,
- HDBC == 2.4.*,
- HDBC-postgresql == 2.3.*
+ base >= 4.15 && < 5,
+ cmdargs >= 0.10,
+ configurator >= 0.2,
+ containers >= 0.5,
+ directory >= 1.2,
+ filepath >= 1.3,
+ HDBC >= 2.4,
+ HDBC-postgresql >= 2.3,
+ HDBC-sqlite3 >= 2.3,
+ MissingH >= 1.2,
+ tasty >= 0.8,
+ tasty-hunit >= 0.8
+
+ default-language:
+ Haskell2010
+
main-is:
Main.hs
hs-source-dirs:
src/
- --other-modules:
-
- ghc-options:
- -Wall
- -fwarn-hi-shadowing
- -fwarn-missing-signatures
- -fwarn-name-shadowing
- -fwarn-orphans
- -fwarn-type-defaults
- -fwarn-tabs
- -fwarn-incomplete-record-updates
- -fwarn-monomorphism-restriction
- -fwarn-unused-do-bind
- -rtsopts
- -threaded
- -optc-O3
- -optc-march=native
+ other-modules:
+ Configuration
+ CommandLine
+ OptionalConfiguration
+ Paths_mailbox_count
+ Report
+
+ autogen-modules:
+ Paths_mailbox_count
+
+test-suite testsuite
+ type: exitcode-stdio-1.0
+ hs-source-dirs: src test
+ default-language: Haskell2010
+ main-is: TestSuite.hs
+
+ other-modules:
+ Configuration
+ OptionalConfiguration
+ Paths_mailbox_count
+ Report
+
+ autogen-modules:
+ Paths_mailbox_count
+
+ build-depends:
+ base >= 4.15 && < 5,
+ cmdargs >= 0.10,
+ configurator >= 0.2,
+ containers >= 0.5,
+ directory >= 1.2,
+ filepath >= 1.3,
+ HDBC >= 2.4,
+ HDBC-sqlite3 >= 2.3,
+ MissingH >= 1.2,
+ tasty >= 0.8,
+ tasty-hunit >= 0.8
test-suite doctests
type: exitcode-stdio-1.0
hs-source-dirs: test
+ default-language: Haskell2010
main-is: Doctests.hs
build-depends:
- base == 4.*,
+ base >= 4.15 && < 5,
-- Additional test dependencies.
- doctest == 0.9.*,
- filemanip == 0.3.6.*
-
- -- It's not entirely clear to me why I have to reproduce all of this.
- ghc-options:
- -Wall
- -fwarn-hi-shadowing
- -fwarn-missing-signatures
- -fwarn-name-shadowing
- -fwarn-orphans
- -fwarn-type-defaults
- -fwarn-tabs
- -fwarn-incomplete-record-updates
- -fwarn-monomorphism-restriction
- -fwarn-unused-do-bind
- -rtsopts
- -threaded
- -optc-O3
- -optc-march=native
+ doctest >= 0.9,
+ filemanip >= 0.3.6
+
source-repository head
type: git
- location: http://michael.orlitzky.com/git/mailbox-count.git
+ location: http://gitweb.michael.orlitzky.com/mailbox-count.git
branch: master