Version information
This version is compatible with:
- Puppet Enterprise 2018.1.x, 2017.3.x, 2017.2.x, 2017.1.x, 2016.4.x
- Puppet >= 4.9.0 < 6.0.0
- FreeBSD, ,
This module has been deprecated by its author since Aug 9th 2023.
The author has suggested markt-postfix as its replacement.
Start using this module
Documentation
postfix module for Puppet
Table of Contents
- Description
- Setup - The basics of getting started with postfix
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations
Description
Puppet module to manage your postfix installation. Manage main.cf settings and master.cf entries by postconf backed native types. Both types include support for multiple postfix instances. The postfix instances can be managed with a native type too.
Setup
Setup Requirements
This module requires pluginsync to be enabled to sync the type/provider to the agent.
Usage
The easiest way to use this module is to specify all desired configuration in Hiera. Here is a close-to-real-life example:
postfix::main_config:
alias_database: hash:/etc/aliases
alias_maps: hash:/etc/aliases
append_dot_mydomain: no
biff: no
inet_protocols: all
inet_interfaces: all
mydestination: '$myhostname, localdomain, localhost'
myorigin: '$mydomain'
mynetworks:
- '10.40.0.0/24'
- '127.0.0.0/8'
- '[::ffff:127.0.0.0]/104'
- '[::1]/128'
readme_directory: no
recipient_delimiter: +
smtpd_banner: '$myhostname ESMTP $mail_name'
smtpd_relay_restrictions:
- permit_mynetworks
- permit_sasl_authenticated
- defer_unauth_destination
smtpd_use_tls: yes
smtpd_tls_cert_file: &postfix_cert /etc/postfix/ssl/postfix.crt
smtpd_tls_key_file: &postfix_key /etc/postfix/ssl/postfix.key
smtpd_sasl_auth_enable: no # only enable for mandatory tls ports
smtpd_sasl_type: dovecot
smtpd_sasl_path: private/auth
# sasl only encrypted
smtpd_tls_auth_only: yes
smtpd_tls_security_level: may
virtual_transport: 'lmtp:unix:private/dovecot-lmtp'
milter_protocol: 6
common_milters: >-
{ inet:localhost:11332,
connect_timeout=10s,
default_action=accept }
smtpd_milters: '$common_milters'
non_smtpd_milters: '$common_milters'
milter_mail_macros: i {mail_addr} {client_addr} {client_name} {auth_authen}
postfix::master_services:
# merged with the defaults defined in data/modules/postfix.yaml
smtps/inet: { ensure: present }
submission/inet: { ensure: present }
This will create postconf
and postconf_master
resources for each setting.
The resource types can also be used directly as described below.
Generating default master.cf entries
In order to generate the default postconf_master
hiera entries needed to run postfix,
you can use the provided master2hierayaml.rb script:
scripts/master2hierayaml.rb /usr/share/doc/postfix/defaults/master.cf > data/modules/postfix.yaml
It will try to parse active as well as commented entries and lines, and output warnings to stderr if it fails to do so. However, check the output carefully, otherwise you might end up with a non-working mail system.
Purging unmanaged entries
By default, this module will warn about unmanaged config entries in any managed main.cf
and master.cf
, but not remove them. To enable purging of those resources, set purge_main
and purge_master to true:
postfix::purge_main: true
postfix::purge_master: true
Reference
Types
postconf
The postconf
type enables you to set or rest postconf parameters.
postconf { 'myhostname':
value => 'foo.bar',
}
The config_dir
param allows you to manage different postfix instances and the
parameter
param allows you to define the postconf parameter independently from
the resource name.
postconf { 'myhostname':
value => 'foo.bar',
}
postconf { 'foo:myhostname':
parameter => 'myhostname',
config_dir => '/etc/postfix-foo',
value => 'foo.bar',
}
postconf_master
The postconf_master
type enables you to manage the master.cf entries.
postconf_master { 'mytransport/unix':
command => 'smtp',
}
The config_dir
param allows you to manage different postfix instances and the
service
and type
param allows you to define the postconf_master service/type independently from
the resource name.
postconf_master { 'mytransport/unix':
command => 'smtp',
}
postconf_master { 'foo:mytransport/unix':
service => 'mytransport',
type => 'unix',
config_dir => '/etc/postfix-foo',
command => 'smtp',
}
postmulti
The postmulti
type allows you to create, de/activate and destroy postfix
postmulti instances with pupppet.
By default ensure
is set to active
but can be set to inactive
or absent
respectively to deactivate or remove an postmulti instance.
As the postmulti the resource name must begin with postfix-
.
postmulti { 'postfix-out': }
Limitations
Known Issues
- The postfix version of el7 does not support postconf_master. An alternative version is available from the IUS Community Project.
Types in this module release
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Unreleased
Release 1.0.2 - 2018-10-28
This release fixes postfix reloading on config changes.
Fixed
- Notify service on config changes, causing it to reload postfix to pick up the changes (#7)
Release 1.0.1 - 2018-09-27
This release fixes support for systems where postfix is not installed, and bumps stdlib version compatibility.
Added
- Support for puppetlabs/stdlib 5
- Support for Ubuntu 18.04
Fixed
- Make postfix fact not cause trouble on systems where postfix is not installed (#6)
Release 1.0.0 - 2018-03-03
First stable release
Added
- Add new parameter
$plugins
to specify a list of postfix plugins that should be installed (#2) - Add new parameter
$plugin
to configure plugin package names (#2) - Add new parameter
$package_manage
to control wether packages should be installed or not (#2) - Add new parameters
$main_config
and$master_services
to easily specify configuration via Hiera (#4) - Add CLI script to convert an existing master.cf to hiera YAML (#4)
- Add new parameters
$purge_main
and$purge_master
to remove unmanaged entries (default: warn about unmanaged entries) (#5)
Changed
- Boolean properties in
postconf_master
now accept more values - Add stdlib dependency for unique() function on Puppet 4.x (#2)
Fixed
- Handle unused main.cf parameters that are unknown by postfix and not referenced in any other parameter (#3).
- Fix service logic: move exec
restart after package install
to classpostfix::package
(#2) - Fix rspec unit tests
- Fix lots of rubocop-reported logic and style issues
Release 0.2.1 - 2018-02-05
Cosmetic release that removes outdated badges from README
Fixed
- Remove oudated badges that belong to the upstream project this project was forked from.
Release 0.2.0 - 2018-02-05
First release as oxc-postfix, now requires Puppet 4.9
Added
- Support support for FreeBSD operating system (#1)
Changed
- Minium required puppet version is now 4.9 for Hiera 5 support (#1)
- Move configuration to module hiera data (#1)
- Some lint/style changes (#1)
jiuka-postfix 0.1.0 2016-12-26
- Added postconf_master type and provider.
jiuka-postfix 0.0.1 2016-12-24
- Initial release
Dependencies
- puppetlabs/stdlib (>= 3.0.0 < 6.0.0)