propellor-3.0.4: property-based host configuration management in haskell

Safe HaskellNone
LanguageHaskell98

Propellor.Property.Postfix

Synopsis

Documentation

satellite :: Property DebianLike Source

Configures postfix as a satellite system, which relays all mail through a relay host, which defaults to smtp.domain, but can be changed by mainCf "relayhost".

The smarthost may refuse to relay mail on to other domains, without further configuration/keys. But this should be enough to get cron job mail flowing to a place where it will be seen.

mappedFile :: Combines (Property x) (Property UnixLike) => FilePath -> (FilePath -> Property x) -> CombinedType (Property x) (Property UnixLike) Source

Sets up a file by running a property (which the filename is passed to). If the setup property makes a change, postmap will be run on the file, and postfix will be reloaded.

newaliases :: Property UnixLike Source

Run newaliases command, which should be done after changing etcaliases.

mainCfFile :: FilePath Source

The main config file for postfix.

mainCf :: (String, String) -> Property UnixLike Source

Sets a main.cf name=value pair. Does not reload postfix immediately.

getMainCf :: String -> IO (Maybe String) Source

Gets a main.cf setting.

mainCfIsSet :: String -> IO Bool Source

Checks if a main.cf field is set. A field that is set to the empty string is considered not set.

dedupMainCf :: Property UnixLike Source

Parses main.cf, and removes any initial configuration lines that are overridden to other values later in the file.

For example, to add some settings, removing any old settings:

 mainCf `File.containsLines`
	[ "# I like bars."
	, "foo = bar"
	] `onChange` dedupMainCf

Note that multiline configurations that continue onto the next line are not currently supported.

masterCfFile :: FilePath Source

The master config file for postfix.

data Service Source

A service that can be present in the master config file.

parseServiceLine :: Line -> Maybe Service Source

Note that this does not handle multi-line service entries, in which subsequent lines are indented. serviceLine does not generate such entries.

saslAuthdInstalled :: Property DebianLike Source

Installs saslauthd and configures it for postfix, authenticating against PAM.

Does not configure postfix to use it; eg smtpd_sasl_auth_enable = yes needs to be set to enable use. See https://wiki.debian.org/PostfixAndSASL.

Password brute force attacks are possible when SASL auth is enabled. It would be wise to enable fail2ban, for example:

Fail2Ban.jailEnabled "postfix-sasl"

saslPasswdSet :: Domain -> User -> Property (HasInfo + UnixLike) Source

Uses saslpasswd2 to set the password for a user in the sasldb2 file.

The password is taken from the privdata.