Skip to content
Snippets Groups Projects
Select Git revision
  • c6044570d7d054b6fac18057d111f1050da6d141
  • 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

init.pp

Blame
  • user avatar
    Steve Huff authored and Marc Fournier committed
    The selector for determining the mailx package wants to match against
    lsbdistcodename, not lsbdistrelease.
    c6044570
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    init.pp 3.77 KiB
    #
    # == Class: postfix
    #
    # This class provides a basic setup of postfix with local and remote
    # delivery and an SMTP server listening on the loopback interface.
    #
    # Parameters:
    # - *$postfix_smtp_listen*: address on which the smtp service will listen to.
    #      defaults to 127.0.0.1
    # - *$root_mail_recipient*: who will recieve root's emails. defaults to 'nobody'
    #
    # Example usage:
    #
    #   node 'toto.example.com' {
    #     $postfix_smtp_listen = '192.168.1.10'
    #     include postfix
    #   }
    #
    class postfix {
    
      # selinux labels differ from one distribution to another
      case $::operatingsystem {
    
        RedHat, CentOS: {
          case $::lsbmajdistrelease {
            '4':     { $postfix_seltype = 'etc_t' }
            '5','6': { $postfix_seltype = 'postfix_etc_t' }
            default: { $postfix_seltype = undef }
          }
        }
    
        default: {
          $postfix_seltype = undef
        }
      }
    
      # Default value for various options
      if $postfix_smtp_listen == '' {
        $postfix_smtp_listen = '127.0.0.1'
      }
      if $root_mail_recipient == '' {
        $root_mail_recipient = 'nobody'
      }
      if $postfix_use_amavisd == '' {
        $postfix_use_amavisd = 'no'
      }
      if $postfix_use_dovecot_lda == '' {
        $postfix_use_dovecot_lda = 'no'
      }
      if $postfix_use_schleuder == '' {
        $postfix_use_schleuder = 'no'
      }
      if $postfix_use_sympa == '' {
        $postfix_use_sympa = 'no'
      }
      if $postfix_mail_user == '' {
        $postfix_mail_user = 'vmail'
      }
    
      $mailx_package = $::lsbdistcodename ? {
        'squeeze' => 'bsd-mailx',
        'lucid'   => 'bsd-mailx',
        default   => 'mailx',
      }
    
      $master_os_template = $::operatingsystem ? {
        /RedHat|CentOS/          => template('postfix/master.cf.redhat.erb', 'postfix/master.cf.common.erb'),
        /Debian|Ubuntu|kFreeBSD/ => template('postfix/master.cf.debian.erb', 'postfix/master.cf.common.erb'),
      }
    
      package { 'postfix':
        ensure => installed,
      }
    
      package { 'mailx':
        ensure => installed,
        name   => $mailx_package,
      }
    
      service { 'postfix':
        ensure    => running,
        enable    => true,
        hasstatus => true,
        restart   => '/etc/init.d/postfix reload',
        require   => Package['postfix'],
      }
    
      file { '/etc/mailname':
        ensure  => present,
        content => "$::fqdn\n",
        seltype => $postfix_seltype,
      }
    
      # Aliases
      file { '/etc/aliases':
        ensure  => present,
        content => '# file managed by puppet\n',
        replace => false,
        seltype => $postfix_seltype,
        notify  => Exec['newaliases'],
      }
    
      # Aliases
      exec { 'newaliases':
        command     => '/usr/bin/newaliases',
        refreshonly => true,
        require     => Package['postfix'],
        subscribe   => File['/etc/aliases'],
      }
    
      # Config files
      file { '/etc/postfix/master.cf':
        ensure  => present,
        owner   => 'root',
        group   => 'root',
        mode    => '0644',
        content => $master_os_template,
        seltype => $postfix_seltype,
        notify  => Service['postfix'],
        require => Package['postfix'],
      }
    
      # Config files
      file { '/etc/postfix/main.cf':
        ensure  => present,
        owner   => 'root',
        group   => 'root',
        mode    => '0644',
        source  => 'puppet:///modules/postfix/main.cf',
        replace => false,
        seltype => $postfix_seltype,
        notify  => Service['postfix'],
        require => Package['postfix'],
      }
    
      # Default configuration parameters
      postfix::config {
        'myorigin':         value => $::fqdn;
        'alias_maps':       value => 'hash:/etc/aliases';
        'inet_interfaces':  value => 'all';
      }
    
      case $::operatingsystem {
        RedHat, CentOS: {
          postfix::config {
            'sendmail_path':    value => '/usr/sbin/sendmail.postfix';
            'newaliases_path':  value => '/usr/bin/newaliases.postfix';
            'mailq_path':       value => '/usr/bin/mailq.postfix';
          }
        }
        default: {}
      }
    
      mailalias {'root':
        recipient => $root_mail_recipient,
        notify    => Exec['newaliases'],
      }
    }