diff --git a/REFERENCE.md b/REFERENCE.md
index bbc59bf3..52767c43 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -100,6 +100,7 @@ The following parameters are available in the `postfix` class:
* [`ldap_base`](#-postfix--ldap_base)
* [`ldap_host`](#-postfix--ldap_host)
* [`ldap_options`](#-postfix--ldap_options)
+* [`ldap_packages`](#-postfix--ldap_packages)
* [`lookup_table_type`](#-postfix--lookup_table_type)
* [`mail_user`](#-postfix--mail_user)
* [`mailman`](#-postfix--mailman)
@@ -257,6 +258,14 @@ Example: `start_tls = yes`.
Default value: `undef`
+##### `ldap_packages`
+
+Data type: `Array[String[1]]`
+
+An array of package names to install for LDAP support if $ldap is true.
+
+Default value: `[]`
+
##### `lookup_table_type`
Data type: `String`
diff --git a/data/osfamily/Debian.yaml b/data/osfamily/Debian.yaml
index b4bd741b..006d43d7 100644
--- a/data/osfamily/Debian.yaml
+++ b/data/osfamily/Debian.yaml
@@ -1,4 +1,5 @@
---
postfix::params::mailx_package: 'bsd-mailx'
postfix::params::master_os_template: 'postfix/master.cf.debian.erb'
+postfix::ldap_packages: ['postfix-ldap']
...
diff --git a/data/osfamily/RedHat/9.yaml b/data/osfamily/RedHat/9.yaml
index d3c6617b..33c39359 100644
--- a/data/osfamily/RedHat/9.yaml
+++ b/data/osfamily/RedHat/9.yaml
@@ -1,3 +1,4 @@
---
postfix::params::mailx_package: 's-nail'
+postfix::ldap_packages: ['postfix-ldap']
diff --git a/manifests/init.pp b/manifests/init.pp
index eb012871..e46057ed 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -86,6 +86,9 @@
# A free form string that can define any LDAP options to be passed through (ldap_table(5)).
# Example: `start_tls = yes`.
#
+# @param ldap_packages
+# An array of package names to install for LDAP support if $ldap is true.
+#
# @param lookup_table_type
# Table format type as described in http://www.postfix.org/DATABASE_README.html#types.
# Type has to be supported by system, see "postconf -m" for supported types.
@@ -262,6 +265,7 @@
Optional[String] $ldap_base = undef,
Optional[String] $ldap_host = undef,
Optional[String] $ldap_options = undef,
+ Array[String[1]] $ldap_packages = [],
String $lookup_table_type = 'hash',
String $mail_user = 'vmail', # postfix_mail_user
Boolean $mailman = false,
diff --git a/manifests/ldap.pp b/manifests/ldap.pp
index df3077fb..76a80086 100644
--- a/manifests/ldap.pp
+++ b/manifests/ldap.pp
@@ -8,11 +8,9 @@
assert_type(String, $postfix::ldap_host)
assert_type(String, $postfix::ldap_options)
- if $facts['os']['family'] == 'Debian' or ($facts['os']['family'] == 'RedHat' and $facts['os']['release']['major'] >= '8') {
- package { 'postfix-ldap':
- ensure => installed,
- before => File["${postfix::confdir}/ldap-aliases.cf"],
- }
+ package { $postfix::ldap_packages:
+ ensure => installed,
+ before => File["${postfix::confdir}/ldap-aliases.cf"],
}
if ! $postfix::ldap_base {