name: mailbox-count
-version: 0.1.0
+version: 0.0.2
cabal-version: >= 1.8
author: Michael Orlitzky
maintainer: Michael Orlitzky <michael@orlitzky.com>
license: GPL-3
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.*
-
+ base >= 4.6 && < 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
main-is:
Main.hs
hs-source-dirs:
src/
- --other-modules:
+ other-modules:
+ Configuration
+ CommandLine
+ OptionalConfiguration
+ Report
ghc-options:
-Wall
-optc-march=native
+test-suite testsuite
+ type: exitcode-stdio-1.0
+ hs-source-dirs: src test
+ main-is: TestSuite.hs
+ build-depends:
+ base >= 4.6 && < 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
+
+ -- 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
+ -O2
+
+
test-suite doctests
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Doctests.hs
build-depends:
- base == 4.*,
+ base >= 4.6 && < 5,
-- Additional test dependencies.
- doctest == 0.9.*,
- filemanip == 0.3.6.*
+ doctest >= 0.9,
+ filemanip >= 0.3.6
-- It's not entirely clear to me why I have to reproduce all of this.
ghc-options: