Defined Type: postfix::transport

Defined in:
manifests/transport.pp

Overview

Definition: postfix::transport

Manages content of the /etc/postfix/transport map.

Parameters

name
  • name of address postfix will lookup. See transport(5).

destination
  • where the emails will be delivered to. See transport(5).

ensure
  • present/absent, defaults to present.

nexthop
  • A string to define where and how to deliver the mail. See transport(5).

Requires

Examples

node 'toto.example.com' {

  include postfix

  postfix::hash { '/etc/postfix/transport':
    ensure => present,
  }
  postfix::config { 'transport_maps':
    value => 'hash:/etc/postfix/transport',
  }
  postfix::transport { 'mailman.example.com':
    ensure      => present,
    destination => 'mailman',
  }
}

Parameters:

  • destination (Optional[String]) (defaults to: undef)
  • nexthop (Optional[String]) (defaults to: undef)
  • file (Stdlib::Absolutepath) (defaults to: '/etc/postfix/transport')
  • ensure (Enum['present', 'absent']) (defaults to: 'present')


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
# File 'manifests/transport.pp', line 37

define postfix::transport (
  Optional[String]          $destination = undef,
  Optional[String]          $nexthop=undef,
  Stdlib::Absolutepath      $file='/etc/postfix/transport',
  Enum['present', 'absent'] $ensure='present'
) {
  include ::postfix::augeas

  case $ensure {
    'present': {
      if ($destination) {
        $change_destination = "set pattern[. = '${name}']/transport '${destination}'"
      } else {
        $change_destination = "clear pattern[. = '${name}']/transport"
      }

      if ($nexthop) {
        $change_nexthop = "set pattern[. = '${name}']/nexthop '${nexthop}'"
      } else {
        $change_nexthop = "clear pattern[. = '${name}']/nexthop"
      }

      $changes = [
        "set pattern[. = '${name}'] '${name}'",
        $change_destination,
        $change_nexthop,
      ]
    }

    'absent': {
      $changes = "rm pattern[. = '${name}']"
    }

    default: {
      fail "\$ensure must be either 'present' or 'absent', got '${ensure}'"
    }
  }

  augeas {"Postfix transport - ${name}":
    lens    => 'Postfix_Transport.lns',
    incl    => $file,
    changes => $changes,
    require => Augeas::Lens['postfix_transport'],
  }

  if defined(Package['postfix']) {
    Package['postfix'] -> Postfix::Transport[$title]
  }

  if defined(Postfix::Hash['/etc/postfix/transport']) {
    Postfix::Transport[$title] ~> Postfix::Hash['/etc/postfix/transport']
  }
}