class mail::virtual( $database_user = hiera('mail::virtual::database_user', $mail::virtual::params::database_user), $database_host = hiera('mail::virtual::database_host', $mail::virtual::params::database_host), $database_name = hiera('mail::virtual::database_name', $mail::virtual::params::database_name), $database_password = hiera('mail::virtual::database_password', ''), ) { # Check parameters case $database_password { '': { fail("You need to define mail::virtual::database_password config") } } # Virtual subsystems include mail::virtual::packages include mail::sasl include mail::dovecot class { [ 'mail::virtual::database', 'mail::virtual::web' ]: } # Virtual mailboxes file { '/var/mail/virtual': ensure => directory, owner => vmail, group => vmail, mode => '0750', require => User['vmail'], } group { "vmail": ensure => present, gid => 5000, } user { "vmail": ensure => present, uid => 5000, gid => "vmail", password => "*", home => '/var/mail/virtual', require => Group['vmail'], } }