Skip to content
Snippets Groups Projects
Select Git revision
  • 2b57c2eae49c3adc52c5f41ac6d90e428fe31174
  • master default protected
  • update-min-openvox-version-07f8cb2
  • cleanup_fixtures
  • add-openvox
  • freebsd-14
  • remove-legacy-top-scope-syntax
  • rel430
  • tests
  • revert-363-augeas-module-cleanup
  • release-4.1.0
  • puppet8
  • relax-dependencies
  • rel400
  • mode
  • puppet7
  • release-3.1.0
  • freebsd13
  • freebsd11
  • stdlib
  • centos
  • v6.0.0
  • v5.1.0
  • v5.0.0
  • v4.5.0
  • v4.4.0
  • v4.3.0
  • v4.2.1
  • v4.2.0
  • v4.1.0
  • v4.0.0
  • v3.1.0
  • v3.0.0
  • v2.0.0
  • 1.12.0
  • 1.11.0
  • 1.10.0
  • 1.9.0
  • 1.8.0
  • 1.7.0
  • 1.6.0
41 results

virtual.pp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    virtual.pp 1.51 KiB
    #== Definition: postfix::virtual
    #
    #Manages content of the /etc/postfix/virtual map.
    #
    #Parameters:
    #- *name*: name of address postfix will lookup. See virtual(8).
    #- *destination*: where the emails will be delivered to. See virtual(8).
    #- *ensure*: present/absent, defaults to present.
    #
    #Requires:
    #- Class["postfix"]
    #- Postfix::Hash["/etc/postfix/virtual"]
    #- Postfix::Config["virtual_alias_maps"]
    #- augeas
    #
    #Example usage:
    #
    #  node "toto.example.com" {
    #
    #    include postfix
    #
    #    postfix::hash { "/etc/postfix/virtual":
    #      ensure => present,
    #    }
    #    postfix::config { "virtual_alias_maps":
    #      value => "hash:/etc/postfix/virtual"
    #    }
    #    postfix::virtual { "user@example.com":
    #      ensure      => present,
    #      destination => "root",
    #    }
    #  }
    #
    define postfix::virtual (
      $destination,
      $nexthop='',
      $file='/etc/postfix/virtual',
      $ensure='present'
    ) {
      include postfix::augeas
    
      case $ensure {
        'present': {
          $changes = [
            "set pattern[. = '${name}'] '${name}'",
            # TODO: support more than one destination
            "set pattern[. = '${name}']/destination '${destination}'",
          ]
        }
    
        'absent': {
          $changes = "rm pattern[. = '${name}']"
        }
    
        default: {
          fail("Wrong ensure value: ${ensure}")
        }
      }
    
      augeas {"Postfix virtual - ${name}":
        incl    => $file,
        lens    => 'Postfix_Virtual.lns',
        changes => $changes,
        require => [Package['postfix'], Augeas::Lens['postfix_transport']],
        notify  => Exec['generate /etc/postfix/virtual.db'],
      }
    }