diff options
Diffstat (limited to 'manifests/virtual/database.pp')
-rw-r--r-- | manifests/virtual/database.pp | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/manifests/virtual/database.pp b/manifests/virtual/database.pp new file mode 100644 index 0000000..32259a4 --- /dev/null +++ b/manifests/virtual/database.pp @@ -0,0 +1,119 @@ +class mail::virtual::database { + # Class configuration + case $database_password { + '': { fail("You need to define database_password host config") } + } + + # + # Database configuration + # + database::instance { "${mail::virtual::database_name}": + password => "${mail::virtual::database_password}", + } + + # + # Postfix configuration + # + postfix::config { + "virtual_transport": value => 'dovecot'; + "dovecot_destination_recipient_limit": value => '1', nonstandard => true; + } + + postfix::config { "virtual_mailbox_domains": + value => 'proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf', + require => File['/etc/postfix/sql/mysql_virtual_domains_maps.cf'], + } + + postfix::config { "virtual_alias_maps": + value => 'hash:/etc/postfix/virtual, regexp:/etc/postfix/virtual_regexp, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf', + require => File['/etc/postfix/sql/mysql_virtual_alias_maps.cf', + '/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf', + '/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf' ], + } + + postfix::config { "virtual_mailbox_maps": + value => 'proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf', + require => File['/etc/postfix/sql/mysql_virtual_mailbox_maps.cf', + '/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf' ], + } + + # + # Map files + # + file { "/etc/postfix/sql": + ensure => directory, + owner => postfix, + group => root, + mode => 0755, + } + + file { "/etc/virtual/database/mysql_virtual_domains_maps.cf": + ensure => present, + owner => postfix, + mode => 0600, + content => template('mail/virtual/database/mysql_virtual_domains_maps.cf.erb'), + require => File['/etc/virtual/database'], + } + + file { "/etc/virtual/database/mysql_virtual_alias_maps.cf": + ensure => present, + owner => postfix, + mode => 0600, + content => template('mail/virtual/database/mysql_virtual_alias_maps.cf.erb'), + require => File['/etc/virtual/database'], + } + + file { "/etc/virtual/database/mysql_virtual_alias_domain_maps.cf": + ensure => present, + owner => postfix, + mode => 0600, + content => template('mail/virtual/database/mysql_virtual_alias_domain_maps.cf.erb'), + require => File['/etc/virtual/database'], + } + + file { "/etc/virtual/database/mysql_virtual_alias_domain_catchall_maps.cf": + ensure => present, + owner => postfix, + mode => 0600, + content => template('mail/virtual/database/mysql_virtual_alias_domain_catchall_maps.cf.erb'), + require => File['/etc/virtual/database'], + } + + file { "/etc/virtual/database/mysql_virtual_mailbox_maps.cf": + ensure => present, + owner => postfix, + mode => 0600, + content => template('mail/virtual/database/mysql_virtual_mailbox_maps.cf.erb'), + require => File['/etc/virtual/database'], + } + + file { "/etc/virtual/database/mysql_virtual_alias_domain_mailbox_maps.cf": + ensure => present, + owner => postfix, + mode => 0600, + content => template('mail/virtual/database/mysql_virtual_alias_domain_mailbox_maps.cf.erb'), + require => File['/etc/virtual/database'], + } + + # + # Additional for quota support + # + #postfix::config { "virtual_mailbox_limit_maps": + # value => 'mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf', + # require => File['/etc/postfix/mysql_virtual_mailbox_limit_maps.cf'], + #} + # + #postfix::config { "virtual_create_maildirsize": value => 'yes' } + #postfix::config { "virtual_mailbox_extended ": value => 'yes' } + #postfix::config { "virtual_mailbox_limit_override": value => 'yes' } + #postfix::config { "virtual_maildir_limit_message": value => 'The user's maildir has overdrawn his quota, try again later.' } + #postfix::config { "virtual_overquota_bounce": value => 'yes' } + # + #file { "/etc/postfix/mysql_virtual_mailbox_limit_maps.cf": + # ensure => present, + # owner => postfix, + # mode => 0600, + # content => template('mail/virtual/database/mysql_virtual_mailbox_limit_maps.cf.erb'), + # require => File['/etc/virtual/database'], + #} +} |