Defined Type: postfix::map

Defined in:
manifests/map.pp

Summary

Create a Postfix map file

Overview

Creates Postfix “map” files. It will create “$name”, and then build “$name.db” using the “postmap” command. The map file can then be referred to using postfix::config.

Examples:

Postfix map file and use in config

postfix::map { '/etc/postfix/virtual':
  ensure => present,
}
postfix::config { 'virtual_alias_maps':
  value => 'hash:/etc/postfix/virtual',
}

Parameters:

  • ensure (Enum['present', 'absent']) (defaults to: 'present')

    Intended state of the resource

  • source (Optional[Variant[Array[String], String]]) (defaults to: undef)

    Sets the value of the source parameter for the file. Can’t be used together with parameter content.

  • content (Optional[Variant[Sensitive[String], String]]) (defaults to: undef)

    The content of the file. Can’t be used together with param source.

  • type (String[1]) (defaults to: 'hash')

    Type of the Postfix map (valid values are cidr, pcre, hash…)

  • path (Optional[Stdlib::Absolutepath]) (defaults to: undef)

    Where to create the file. If not defined “$postfixpostfix::confdir/$name” will be used as path.

  • mode (Stdlib::Filemode) (defaults to: '0640')

    File mode of the created file.

See Also:



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'manifests/map.pp', line 37

define postfix::map (
  Enum['present', 'absent']                    $ensure  = 'present',
  Optional[Variant[Array[String], String]]     $source  = undef,
  Optional[Variant[Sensitive[String], String]] $content = undef,
  String[1]                                    $type    = 'hash',
  Optional[Stdlib::Absolutepath]               $path    = undef,
  Stdlib::Filemode                             $mode    = '0640',
) {
  include postfix
  include postfix::params

  $_path = pick($path, "${postfix::confdir}/${name}")

  if (!defined(Class['postfix'])) {
    fail 'You must define class postfix before using postfix::config!'
  }

  if $source and $content {
    fail 'You must provide either \'source\' or \'content\', not both'
  }

  $_generated_suffix = $type ? {
    'cdb'   => 'cdb',
    'dbm'   => 'dir',
    'lmdb'  => 'lmdb',
    'sdbm'  => 'dir',
    default => 'db',
  }

  # CIDR and PCRE maps need a postfix reload, but not a postmap
  if $type =~ /^(cidr|pcre|regexp)$/ {
    $manage_notify = Service['postfix']
  } else {
    if $ensure == 'present' {
      $manage_notify = Exec["generate ${name}.${_generated_suffix}"]
    } else {
      $manage_notify = undef
    }
  }

  file { "postfix map ${name}":
    ensure  => $ensure,
    path    => $_path,
    source  => $source,
    content => $content,
    owner   => 'root',
    group   => 'postfix',
    mode    => $mode,
    require => Package['postfix'],
    notify  => $manage_notify,
  }

  if $type !~ /^(cidr|pcre|regexp)$/ {
    file { "postfix map ${name}.${_generated_suffix}":
      ensure  => $ensure,
      path    => "${_path}.${_generated_suffix}",
      owner   => 'root',
      group   => 'postfix',
      mode    => $mode,
      require => File["postfix map ${name}"],
      notify  => $manage_notify,
    }
  }

  $generate_cmd = $ensure ? {
    'absent'  => "rm ${_path}.${_generated_suffix}",
    'present' => "postmap ${type}:${_path}",
  }

  exec { "generate ${name}.${_generated_suffix}":
    command     => $generate_cmd,
    path        => $facts['path'],
    #creates    => "${name}.db", # this prevents postmap from being run !
    refreshonly => true,
  }
}