diff --git a/postmaster.cabal b/postmaster.cabal
--- a/postmaster.cabal
+++ b/postmaster.cabal
@@ -1,51 +1,60 @@
-Name:                   postmaster
-Version:                0.3.2
-Copyright:              Peter Simons
-License:                GPL
-License-File:           COPYING
-Author:                 Peter Simons <simons@cryp.to>
-Maintainer:             Peter Simons <simons@cryp.to>
-Homepage:               http://github.com/peti/postmaster
-Bug-Reports:            http://github.com/peti/postmaster/issues
-Category:               Network
-Synopsis:               Postmaster ESMTP Server
-Description:            Postmaster implements an ESMTP server. Given a configuration,
-                        it starts up and listens for incoming SMTP connections, handles
-                        them, and pipes the accepted e-mail messages into an arbitrary
-                        local mailer of your choice. A good local mailer is Procmail.
-                        Beyond that, you can configure and modify every little step
-                        of the SMTP transaction. All the real work is done through
-                        call-back functions.
-Cabal-Version:          >= 1.6
-Build-Type:             Simple
-Tested-With:            GHC >= 7.6 && < 8.1
-
-Extra-Source-Files:     Postmaster/Base.hs
-                        Postmaster/FSM/HeloName.hs
-                        Postmaster/FSM/PeerAddr.hs
-                        Postmaster/FSM/EhloPeer.hs
-                        Postmaster/FSM/Announce.hs
-                        Postmaster/FSM/DNSResolver.hs
-                        Postmaster/FSM/EventHandler.hs
-                        Postmaster/FSM/MailID.hs
-                        Postmaster/FSM/PeerHelo.hs
-                        Postmaster/FSM/MailFrom.hs
-                        Postmaster/FSM/SessionState.hs
-                        Postmaster/FSM/Spooler.hs
-                        Postmaster/FSM/DataHandler.hs
-                        Postmaster/Env.hs
-                        Postmaster/Main.hs
-                        Postmaster/FSM.hs
-                        Postmaster/IO.hs
-                        Postmaster.hs
+name:          postmaster
+version:       0.3.3
+synopsis:      Postmaster ESMTP Server
+description:   Postmaster implements an ESMTP server. Given a configuration, it starts up
+               and listens for incoming SMTP connections, handles them, and pipes the
+               accepted e-mail messages into an arbitrary local mailer of your choice. A
+               good local mailer is Procmail. Beyond that, you can configure and modify
+               every little step of the SMTP transaction. All the real work is done
+               through call-back functions.
+license:       GPL
+license-file:  COPYING
+copyright:     Peter Simons
+author:        Peter Simons <simons@cryp.to>
+maintainer:    Peter Simons <simons@cryp.to>
+tested-with:   GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2,
+               GHC == 8.4.4, GHC == 8.6.3
+category:      Network
+homepage:      http://github.com/peti/postmaster
+bug-reports:   http://github.com/peti/postmaster/issues
+build-type:    Simple
+cabal-version: >= 1.6
 
-Source-Repository head
-  Type:                 git
-  Location:             git://github.com/peti/postmaster.git
+source-repository head
+  type:     git
+  location: git://github.com/peti/postmaster.git
 
-Executable postmaster
-  Main-Is:              tutorial.lhs
-  GHC-Options:          -Wall -threaded
-  Build-Depends:        base >=3 && <5, directory, mtl, network, unix, parsec,
-                        containers, bytestring, old-time, hsyslog >= 5, hsdns >= 1, hsemail >= 2,
-                        hopenssl >= 2.2
+executable postmaster
+  main-is:       tutorial.lhs
+  other-modules: Postmaster
+                 Postmaster.Base
+                 Postmaster.Env
+                 Postmaster.FSM
+                 Postmaster.FSM.Announce
+                 Postmaster.FSM.DNSResolver
+                 Postmaster.FSM.DataHandler
+                 Postmaster.FSM.EhloPeer
+                 Postmaster.FSM.EventHandler
+                 Postmaster.FSM.HeloName
+                 Postmaster.FSM.MailFrom
+                 Postmaster.FSM.MailID
+                 Postmaster.FSM.PeerAddr
+                 Postmaster.FSM.PeerHelo
+                 Postmaster.FSM.SessionState
+                 Postmaster.FSM.Spooler
+                 Postmaster.IO
+                 Postmaster.Main
+  build-depends: base       >= 3 && < 5
+               , bytestring
+               , containers
+               , directory
+               , hopenssl   >= 2.2
+               , hsdns      >= 1
+               , hsemail    >= 2
+               , hsyslog    >= 5
+               , mtl
+               , network    < 3
+               , old-time
+               , parsec
+               , unix
+  ghc-options:   -Wall -threaded
