Skip to content
Snippets Groups Projects
sender.pp 1.45 KiB
Newer Older
Karl Kornel's avatar
Karl Kornel committed
# Many systems send emails "From" root@system-name.  That causes problems when
# an email is bounced.  This type is used to have Postfix change the sender
# address of an email while it is in flight.  Both the From: header and the
# envelope sender are changed.
#
# Example of how to set a sender:
#
#     base::postfix::sender { 'root@stanford.edu':
#       ensure => 'noreply@stanford.edu'
#     }
#
# Example of how to ensure there is no sender map:
#
#     base::postfix::sender { 'luke': ensure => absent }
#
# Assumes that a command 'postmap hash:$file' has been defined that will
# rebuild the senders map.

define base::postfix::sender(
  $ensure,
  $file = '/etc/postfix/senders'
) {
  $pattern = "'^${name}'"
  case $ensure {
    'absent': {
      exec { "rm-sender-${name}":
        command => "sed -i -e '/^${name}/d' ${file}",
        onlyif  => "grep ${pattern} ${file}",
        notify  => Exec["postmap hash:${file}"]
      }
    }
    default: {
      $line = "${name} ${ensure}"
      exec { "add-sender-${name}":
        command => "echo '${line}' >> ${file}",
        unless  => "grep ${pattern} ${file}",
        require => Package['postfix'],
        notify  => Exec["postmap hash:${file}"],
      }
      exec { "fix-sender-${name}":
        command => "sed -i -e 's/^${name}..*\$/${line}/' ${file}",
        unless  => "grep '^${line}\$' ${file}",
        require => Exec["add-sender-${name}"],
        notify  => Exec["postmap hash:${file}"],
      }
    }
  }
}