diff --git a/HaskellNet-SSL.cabal b/HaskellNet-SSL.cabal
--- a/HaskellNet-SSL.cabal
+++ b/HaskellNet-SSL.cabal
@@ -1,6 +1,6 @@
 name:                HaskellNet-SSL
 synopsis:            Helpers to connect to SSL/TLS mail servers with HaskellNet
-version:             0.1.1.1
+version:             0.2
 description:         This package ties together the HaskellNet and connection
                      packages to make it easy to open IMAP and SMTP connections
                      over SSL.
diff --git a/src/Network/HaskellNet/IMAP/SSL.hs b/src/Network/HaskellNet/IMAP/SSL.hs
--- a/src/Network/HaskellNet/IMAP/SSL.hs
+++ b/src/Network/HaskellNet/IMAP/SSL.hs
@@ -1,15 +1,16 @@
 module Network.HaskellNet.IMAP.SSL
-    ( connectIMAPSSL
-    , connectIMAPSSLPort
+    ( -- * Establishing connection
+      connectIMAPSSL
+    , connectIMAPSSLWithSettings
     ) where
 
-import Network.Socket.Internal (PortNumber)
 import Network.HaskellNet.IMAP.Connection
 import Network.HaskellNet.IMAP
 import Network.HaskellNet.SSL
 
 connectIMAPSSL :: String -> IO IMAPConnection
-connectIMAPSSL hostname = connectIMAPSSLPort hostname 993
+connectIMAPSSL hostname = connectIMAPSSLWithSettings hostname cfg
+  where cfg = defaultSettingsWithPort 993
 
-connectIMAPSSLPort :: String -> PortNumber -> IO IMAPConnection
-connectIMAPSSLPort hostname port = connectSSL hostname port >>= connectStream
+connectIMAPSSLWithSettings :: String -> Settings -> IO IMAPConnection
+connectIMAPSSLWithSettings hostname cfg = connectSSL hostname cfg >>= connectStream
diff --git a/src/Network/HaskellNet/POP3/SSL.hs b/src/Network/HaskellNet/POP3/SSL.hs
--- a/src/Network/HaskellNet/POP3/SSL.hs
+++ b/src/Network/HaskellNet/POP3/SSL.hs
@@ -1,15 +1,16 @@
 module Network.HaskellNet.POP3.SSL
-    ( connectPop3SSL
-    , connectPop3SSLPort
+    ( -- * Establishing connection
+      connectPop3SSL
+    , connectPop3SSLWithSettings
     ) where
 
-import Network.Socket.Internal (PortNumber)
 import Network.HaskellNet.POP3.Connection
 import Network.HaskellNet.POP3
 import Network.HaskellNet.SSL
 
 connectPop3SSL :: String -> IO POP3Connection
-connectPop3SSL hostname = connectPop3SSLPort hostname 995
+connectPop3SSL hostname = connectPop3SSLWithSettings hostname cfg
+  where cfg = defaultSettingsWithPort 995
 
-connectPop3SSLPort :: String -> PortNumber -> IO POP3Connection
-connectPop3SSLPort hostname port = connectSSL hostname port >>= connectStream
+connectPop3SSLWithSettings :: String -> Settings -> IO POP3Connection
+connectPop3SSLWithSettings hostname cfg = connectSSL hostname cfg >>= connectStream
diff --git a/src/Network/HaskellNet/SMTP/SSL.hs b/src/Network/HaskellNet/SMTP/SSL.hs
--- a/src/Network/HaskellNet/SMTP/SSL.hs
+++ b/src/Network/HaskellNet/SMTP/SSL.hs
@@ -1,15 +1,16 @@
 module Network.HaskellNet.SMTP.SSL
-    ( connectSMTPSSL
-    , connectSMTPSSLPort
+    ( -- * Establishing connection
+      connectSMTPSSL
+    , connectSMTPSSLWithSettings
     , connectSMTPSTARTTLS
-    , connectSMTPSTARTTLSPort
+    , connectSMTPSTARTTLSWithSettings
+      -- * Other Useful Operations
     , doSMTPSSL
-    , doSMTPSSLPort
+    , doSMTPSSLWithSettings
     , doSMTPSTARTTLS
-    , doSMTPSTARTTLSPort
+    , doSMTPSTARTTLSWithSettings
     ) where
 
-import Network.Socket.Internal (PortNumber)
 import Network.HaskellNet.SMTP
 import Network.HaskellNet.SSL
 
@@ -23,20 +24,22 @@
 import Data.IORef
 
 connectSMTPSSL :: String -> IO SMTPConnection
-connectSMTPSSL hostname = connectSMTPSSLPort hostname 465
+connectSMTPSSL hostname = connectSMTPSSLWithSettings hostname cfg
+  where cfg = defaultSettingsWithPort 465
 
-connectSMTPSSLPort :: String -> PortNumber -> IO SMTPConnection
-connectSMTPSSLPort hostname port = connectSSL hostname port >>= connectStream
+connectSMTPSSLWithSettings :: String -> Settings -> IO SMTPConnection
+connectSMTPSSLWithSettings hostname cfg = connectSSL hostname cfg >>= connectStream
 
 connectSMTPSTARTTLS :: String -> IO SMTPConnection
-connectSMTPSTARTTLS hostname = connectSMTPSTARTTLSPort hostname 587
+connectSMTPSTARTTLS hostname = connectSMTPSTARTTLSWithSettings hostname cfg
+  where cfg = defaultSettingsWithPort 587
 
-connectSMTPSTARTTLSPort :: String -> PortNumber -> IO SMTPConnection
-connectSMTPSTARTTLSPort hostname port = connectSTARTTLS hostname port >>= connectStream
+connectSMTPSTARTTLSWithSettings :: String -> Settings -> IO SMTPConnection
+connectSMTPSTARTTLSWithSettings hostname cfg = connectSTARTTLS hostname cfg >>= connectStream
 
-connectSTARTTLS :: String -> PortNumber -> IO BSStream
-connectSTARTTLS hostname port = do
-    (bs, startTLS) <- connectPlain hostname port
+connectSTARTTLS :: String -> Settings -> IO BSStream
+connectSTARTTLS hostname cfg = do
+    (bs, startTLS) <- connectPlain hostname cfg
 
     greeting <- bsGetLine bs
     failIfNot bs 220 $ parseResponse greeting
@@ -76,11 +79,11 @@
 doSMTPSSL :: String -> (SMTPConnection -> IO a) -> IO a
 doSMTPSSL host = bracketSMTP $ connectSMTPSSL host
 
-doSMTPSSLPort :: String -> PortNumber -> (SMTPConnection -> IO a) -> IO a
-doSMTPSSLPort host port = bracketSMTP $ connectSMTPSSLPort host port
+doSMTPSSLWithSettings :: String -> Settings -> (SMTPConnection -> IO a) -> IO a
+doSMTPSSLWithSettings host port = bracketSMTP $ connectSMTPSSLWithSettings host port
 
 doSMTPSTARTTLS :: String -> (SMTPConnection -> IO a) -> IO a
 doSMTPSTARTTLS host = bracketSMTP $ connectSMTPSTARTTLS host
 
-doSMTPSTARTTLSPort :: String -> PortNumber -> (SMTPConnection -> IO a) -> IO a
-doSMTPSTARTTLSPort host port = bracketSMTP $ connectSMTPSTARTTLSPort host port
+doSMTPSTARTTLSWithSettings :: String -> Settings -> (SMTPConnection -> IO a) -> IO a
+doSMTPSTARTTLSWithSettings host port = bracketSMTP $ connectSMTPSTARTTLSWithSettings host port
diff --git a/src/Network/HaskellNet/SSL.hs b/src/Network/HaskellNet/SSL.hs
--- a/src/Network/HaskellNet/SSL.hs
+++ b/src/Network/HaskellNet/SSL.hs
@@ -1,6 +1,9 @@
-module Network.HaskellNet.SSL ( connectSSL
-                              , connectPlain
-                              ) where
+module Network.HaskellNet.SSL
+  ( Settings (..)
+  , defaultSettingsWithPort
+  , connectSSL
+  , connectPlain
+  ) where
 
 import Network.Connection
 import Network.HaskellNet.BSStream
@@ -11,34 +14,44 @@
 
 type STARTTLS = IO ()
 
-maxLineLength :: Int
-maxLineLength = 10000
+data Settings = Settings
+              { sslPort          :: PortNumber
+              , sslMaxLineLength :: Int
+              }
 
+defaultSettingsWithPort :: PortNumber -> Settings
+defaultSettingsWithPort p = Settings
+  { sslPort = p
+  , sslMaxLineLength = 10000
+  }
+
 connectionGetBytes :: Connection -> Int -> IO B.ByteString
 connectionGetBytes = loop B.empty where
   loop buf _ 0 = return buf
   loop buf c l = connectionGet c l >>= nextIteration
     where nextIteration b = loop (buf `B.append` b) c $ l - B.length b
 
-connectionToStream :: Connection -> BSStream
-connectionToStream c = BSStream
-                       { bsGet = connectionGetBytes c
-                       , bsPut = connectionPut c
-                       , bsFlush = return ()
-                       , bsClose = connectionClose c
-                       , bsIsOpen = return True
-                       , bsGetLine = connectionGetLine maxLineLength c
-                       }
+connectionToStream :: Connection -> Settings -> BSStream
+connectionToStream c cfg = BSStream
+  { bsGet = connectionGetBytes c
+  , bsPut = connectionPut c
+  , bsFlush = return ()
+  , bsClose = connectionClose c
+  , bsIsOpen = return True
+  , bsGetLine = connectionGetLine maxl c
+  } where maxl = sslMaxLineLength cfg
 
-connectSSL :: String -> PortNumber -> IO BSStream
-connectSSL hostname port = do
+connectSSL :: String -> Settings -> IO BSStream
+connectSSL hostname cfg = do
     c <- initConnectionContext >>= flip connectTo params
-    return $ connectionToStream c
+    return $ connectionToStream c cfg
   where params = ConnectionParams hostname port (Just def) Nothing
+        port = sslPort cfg
 
-connectPlain :: String -> PortNumber -> IO (BSStream, STARTTLS)
-connectPlain hostname port = do
+connectPlain :: String -> Settings -> IO (BSStream, STARTTLS)
+connectPlain hostname cfg = do
     ctx <- initConnectionContext
     c <- connectTo ctx params
-    return (connectionToStream c, connectionSetSecure ctx c def)
+    return (connectionToStream c cfg, connectionSetSecure ctx c def)
   where params = ConnectionParams hostname port Nothing Nothing
+        port = sslPort cfg
