]> gitweb.fluxo.info Git - puppet-mail.git/commitdiff
Major refactor
authorSilvio Rhatto <rhatto@riseup.net>
Tue, 22 Jan 2013 16:56:59 +0000 (14:56 -0200)
committerSilvio Rhatto <rhatto@riseup.net>
Tue, 22 Jan 2013 16:56:59 +0000 (14:56 -0200)
44 files changed:
manifests/dovecot.pp
manifests/firma.pp
manifests/firma/packages.pp [new file with mode: 0644]
manifests/init.pp
manifests/mlmmj.pp
manifests/mlmmj/list.pp [new file with mode: 0644]
manifests/mlmmj/packages.pp [new file with mode: 0644]
manifests/mlmmj/web.pp [new file with mode: 0644]
manifests/mlmmj/web/disabled.pp [new file with mode: 0644]
manifests/packages.pp
manifests/schleuder/packages.pp [new file with mode: 0644]
manifests/sympa.pp
manifests/sympa/disabled.pp [new file with mode: 0644]
manifests/sympa/packages.pp [new file with mode: 0644]
manifests/sympa/web.pp [new file with mode: 0644]
manifests/sympa/web/disabled.pp [new file with mode: 0644]
manifests/virtual.pp
manifests/virtual/database.pp [moved from manifests/postfixadmin.pp with 68% similarity]
manifests/virtual/packages.pp [new file with mode: 0644]
manifests/virtual/params.pp [new file with mode: 0644]
manifests/virtual/web.pp [new file with mode: 0644]
manifests/web.pp [deleted file]
templates/dovecot/dovecot-sql.conf.erb
templates/firma/transport_regexp.erb [moved from templates/postfix/firma/transport_regexp.erb with 100% similarity]
templates/firma/virtual_regexp.erb [moved from templates/postfix/firma/virtual_regexp.erb with 100% similarity]
templates/mlmmj/transport_regexp.erb [moved from templates/postfix/mlmmj/transport_regexp.erb with 100% similarity]
templates/mlmmj/virtual_regexp.erb [moved from templates/postfix/mlmmj/virtual_regexp.erb with 100% similarity]
templates/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf.erb [deleted file]
templates/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf.erb [deleted file]
templates/postfix/sql/mysql_virtual_alias_domain_maps.cf.erb [deleted file]
templates/postfix/sql/mysql_virtual_alias_maps.cf.erb [deleted file]
templates/postfix/sql/mysql_virtual_mailbox_limit_maps.cf.erb [deleted file]
templates/postfix/sql/mysql_virtual_mailbox_maps.cf.erb [deleted file]
templates/sympa/transport_regexp.erb [moved from templates/postfix/sympa/transport_regexp.erb with 100% similarity]
templates/sympa/virtual_regexp.erb [moved from templates/postfix/sympa/virtual_regexp.erb with 100% similarity]
templates/virtual/database/mysql_virtual_alias_domain_catchall_maps.cf.erb [new file with mode: 0644]
templates/virtual/database/mysql_virtual_alias_domain_mailbox_maps.cf.erb [new file with mode: 0644]
templates/virtual/database/mysql_virtual_alias_domain_maps.cf.erb [new file with mode: 0644]
templates/virtual/database/mysql_virtual_alias_maps.cf.erb [new file with mode: 0644]
templates/virtual/database/mysql_virtual_domains_maps.cf.erb [moved from templates/postfix/sql/mysql_virtual_domains_maps.cf.erb with 52% similarity]
templates/virtual/database/mysql_virtual_mailbox_limit_maps.cf.erb [new file with mode: 0644]
templates/virtual/database/mysql_virtual_mailbox_maps.cf.erb [new file with mode: 0644]
templates/virtual/postfixadmin/config.inc.php.erb [moved from templates/postfixadmin/config.inc.php.erb with 100% similarity]
templates/virtual/roundcube/main.inc.php.erb [moved from templates/roundcube/main.inc.php.erb with 100% similarity]

index 8619bcd18ab653c8e75f437659eb317cb976128b..ac22bfb13c8a4d361644303975a111d732acccc0 100644 (file)
@@ -1,10 +1,5 @@
 class mail::dovecot {
 
-  $database_user     = hiera('postfixadmin_database_user', 'postfix')
-  $database_host     = hiera('postfixadmin_database_host', 'localhost')
-  $database_name     = hiera('postfixadmin_database_name', 'postfix')
-  $database_password = hiera('postfixadmin_database_password', '')
-
   # Dovecot
   service { "dovecot":
     ensure  => running,
index ec59879984752339bea691e207df12bd7b788b56..a83287823b1e7a86f6c2a444fbe658b21c25372f 100644 (file)
@@ -3,16 +3,16 @@ class mail::firma(
 ) {
 
   # Firma subsystems
-  include mail::packages::firma
+  include mail::firma::packages
 
   postfix::config { "firma_destination_recipient_limit": value => '1', nonstandard => true }
 
   postfix::transport_regexp_snippet { 'firma_transport_regexp':
-    content => template('mail/postfix/firma/transport_regexp.erb'),
+    content => template('mail/firma/transport_regexp.erb'),
   }
 
   postfix::virtual_regexp_snippet { 'firma_virtual_regexp':
-    content => template('mail/postfix/firma/virtual_regexp.erb'),
+    content => template('mail/firma/virtual_regexp.erb'),
   }
 
   postfix::transport { "${subdomain}.$domain":
diff --git a/manifests/firma/packages.pp b/manifests/firma/packages.pp
new file mode 100644 (file)
index 0000000..31b538e
--- /dev/null
@@ -0,0 +1,5 @@
+class mail::firma::packages {
+  package { 'expect':
+    ensure => installed,
+  } 
+}
index 02a681bf5e7449cd1d9774e8060b35608e553f45..a75022d1881eb1f3e73e03160f4c49faefae0c84 100644 (file)
@@ -2,19 +2,3 @@
 # Mail module
 #
 
-import "dovecot.pp"
-import "header_checks.pp"
-import "system.pp"
-import "packages.pp"
-import "postfixadmin"
-import "sasl.pp"
-import "tls.pp"
-import "amavisd.pp"
-import "web.pp"
-import "sympa.pp"
-import "base.pp"
-import "spamassassin.pp"
-import "firma.pp"
-import "mlmmj.pp"
-import "hidden.pp"
-import "virtual.pp"
index 91a1fc06c21ae1004e738460e808818210abf673..93de6615c8222b1b4f6c824f6db7e9de4c8dccb6 100644 (file)
@@ -2,8 +2,8 @@ class mail::mlmmj(
   $subdomain = hiera('mlmmj_subdomain', 'mlmmj')
 ) {
 
-  include mail::packages::mlmmj
-  include mail::web::mlmmj::disabled
+  include mail::mlmmj::packages
+  include mail::mlmmj::web::disabled
 
   group { 'mlmmj':
     ensure => present,
@@ -33,30 +33,10 @@ class mail::mlmmj(
   #}
 
   #postfix::transport_regexp_snippet { 'mlmmj_transport_regexp':
-  #  content => template('mail/postfix/mlmmj/transport_regexp.erb'),
+  #  content => template('mail/mlmmj/transport_regexp.erb'),
   #}
 
   postfix::virtual_regexp_snippet { 'mlmmj_virtual_regexp':
-    content => template('mail/postfix/mlmmj/virtual_regexp.erb'),
-  }
-
-  # From transport(5):
-  #
-  #   The trivial-rewrite(8) server disallows regular expression
-  #   substitution  of  $1  etc.  in  regular  expression lookup
-  #   tables, because that could open a security  hole  (Postfix
-  #   version 2.3 and later).
-  #
-  # That's why we need one definition per mailing list.
-  define list($ensure = 'present') {
-    postfix::transport_regexp_snippet { "mlmmj_transport_regexp-${name}":
-      content => "/^(${name})\\@.*$/    mlmmj:${name}\n",
-      ensure  => $ensure,
-    }
-
-    postfix::transport_regexp_snippet { "mlmmj_transport_regexp-${name}-request":
-      content => "/^(${name})\\+.*\\@.*$/    mlmmj:${name}\n",
-      ensure  => $ensure,
-    }
+    content => template('mail/mlmmj/virtual_regexp.erb'),
   }
 }
diff --git a/manifests/mlmmj/list.pp b/manifests/mlmmj/list.pp
new file mode 100644 (file)
index 0000000..13f30a9
--- /dev/null
@@ -0,0 +1,19 @@
+# From transport(5):
+#
+#   The trivial-rewrite(8) server disallows regular expression
+#   substitution  of  $1  etc.  in  regular  expression lookup
+#   tables, because that could open a security  hole  (Postfix
+#   version 2.3 and later).
+#
+# That's why we need one definition per mailing list.
+define mail::mlmmj::list($ensure = 'present') {
+  postfix::transport_regexp_snippet { "mlmmj_transport_regexp-${name}":
+    content => "/^(${name})\\@.*$/    mlmmj:${name}\n",
+    ensure  => $ensure,
+  }
+
+  postfix::transport_regexp_snippet { "mlmmj_transport_regexp-${name}-request":
+    content => "/^(${name})\\+.*\\@.*$/    mlmmj:${name}\n",
+    ensure  => $ensure,
+  }
+}
diff --git a/manifests/mlmmj/packages.pp b/manifests/mlmmj/packages.pp
new file mode 100644 (file)
index 0000000..34c133d
--- /dev/null
@@ -0,0 +1,5 @@
+class mail::mlmmj::packages {
+  package { 'mlmmj':
+    ensure => installed,
+  } 
+}
diff --git a/manifests/mlmmj/web.pp b/manifests/mlmmj/web.pp
new file mode 100644 (file)
index 0000000..b0a79d4
--- /dev/null
@@ -0,0 +1,33 @@
+class mail::mlmmj::web inherits websites::setup {
+  $mlmmj_subdomain = hiera('mlmmj_subdomain')
+
+  apache::site { "${mail::mlmmj::subdomain}":
+    docroot     => "/usr/share/mlmmj-php-web-admin",
+    owner       => 'mlmmj',
+    group       => 'mlmmj',
+    mpm_user    => 'mlmmj',
+    mpm_group   => 'mlmmj',
+    manage_user => false,
+    require     => Package['mlmmj-php-web-admin'],
+  }
+
+  package { [ 'mlmmj-php-web', 'mlmmj-php-web-admin' ]:
+    ensure => present,
+  }
+
+  file { '/etc/mlmmj-php-web-admin':
+    ensure => directory,
+    owner  => mlmmj,
+    group  => mlmmj,
+    mode   => 0640,
+  }
+
+  file { '/etc/mlmmj-php-web-admin/htpasswd':
+    ensure => present,
+    owner  => mlmmj,
+    group  => mlmmj,
+    mode   => 0640,
+    source => [ "puppet:///modules/site_mail/mlmmj/htpasswd",
+                "puppet:///modules/mail/mlmmj/htpasswd" ],
+  }
+}
diff --git a/manifests/mlmmj/web/disabled.pp b/manifests/mlmmj/web/disabled.pp
new file mode 100644 (file)
index 0000000..bf29d7b
--- /dev/null
@@ -0,0 +1,18 @@
+class mail::mlmmj::web::disabled inherits mail::web::mlmmj {
+  Apache::Site["$mlmmj_subdomain"] {
+    ensure => absent,
+  }
+
+  Package[ 'mlmmj-php-web', 'mlmmj-php-web-admin' ] {
+    ensure => absent,
+  }
+
+  File['/etc/mlmmj-php-web-admin'] {
+    ensure => absent,
+    force  => true,
+  }
+
+  File['/etc/mlmmj-php-web-admin/htpasswd'] {
+    ensure => absent,
+  }
+}
index 2e3649ddb908429ff71b251b324e4a15b315d035..45c1063bbf0bb1bc42bfc58912cb1b0971ab3c0d 100644 (file)
@@ -8,57 +8,3 @@ class mail::packages {
     ensure => installed,
   }
 }
-
-class mail::packages::virtual {
-  package { [ 'libpam-mysql', 'libgsasl7' ]:
-    ensure => installed,
-  }
-
-  package { [ 'postfix-mysql', 'dovecot-imapd', 'maildrop' ]:
-    ensure => installed,
-  }
-
-  package { [ 'squirrelmail', 'squirrelmail-locales', 'imp4' ]:
-    ensure => installed,
-  } 
-
-  package { 'php-crypt-gpg':
-    ensure => installed,
-  }
-
-  # Squeeze (or newer) packages
-  if $::lsbdistcodename != 'lenny' {
-    package { [ 'roundcube', 'roundcube-sqlite', 'roundcube-plugins', 'roundcube-plugins-extra' ]:
-      ensure => latest,
-    } 
-  }
-
-  # We'll force SSL through the proxy
-  package { 'squirrelmail-secure-login':
-    ensure => absent,
-  }
-}
-
-class mail::packages::sympa {
-  package { 'sympa':
-    ensure => installed,
-  } 
-}
-
-class mail::packages::schleuder {
-  package { 'schleuder':
-    ensure => installed,
-  } 
-}
-
-class mail::packages::mlmmj {
-  package { 'mlmmj':
-    ensure => installed,
-  } 
-}
-
-class mail::packages::firma {
-  package { 'expect':
-    ensure => installed,
-  } 
-}
diff --git a/manifests/schleuder/packages.pp b/manifests/schleuder/packages.pp
new file mode 100644 (file)
index 0000000..66e824a
--- /dev/null
@@ -0,0 +1,5 @@
+class mail::schleuder::packages {
+  package { 'schleuder':
+    ensure => installed,
+  } 
+}
index 34ea084e7ed6594d52c75d864009fcb07834e329..29844693939716d19cdefc78f8fd00cba11bd370 100644 (file)
@@ -14,8 +14,8 @@ class mail::sympa(
   }
 
   # Sympa subsystems
-  include mail::web::sympa
-  include mail::packages::sympa
+  include mail::sympa::web
+  include mail::sympa::packages
 
   #
   # Database configuration
@@ -103,11 +103,11 @@ class mail::sympa(
   }
 
   postfix::transport_regexp_snippet { 'sympa_transport_regexp':
-    content => template('mail/postfix/sympa/transport_regexp.erb'),
+    content => template('mail/sympa/transport_regexp.erb'),
   }
 
   postfix::virtual_regexp_snippet { 'sympa_virtual_regexp':
-    content => template('mail/postfix/sympa/virtual_regexp.erb'),
+    content => template('mail/sympa/virtual_regexp.erb'),
   }
 
   postfix::config {
@@ -173,60 +173,3 @@ class mail::sympa(
     notify    => Exec["newaliases"],
   }
 }
-
-class mail::sympa::disabled inherits mail::sympa {
-  include mail::web::sympa::disabled
-
-  Service["sympa"] {
-    ensure => stopped,
-    enable => false,
-  }
-
-  Cron["sympa-restart"] {
-    ensure  => absent,
-  }
-
-  Postfix::Transport_regexp_snippet['sympa_transport_regexp'] {
-    content => undef,
-  }
-
-  Postfix::Virtual_regexp_snippet['sympa_virtual_regexp'] {
-    content => undef,
-  }
-
-  Mailalias["sympa"] {
-    ensure => absent,
-  }
-
-  Mailalias["sympa-request"] {
-    ensure => absent,
-  }
-
-  Mailalias["sympa-owner"] {
-    ensure => absent,
-  }
-
-  Mailalias["abuse-feedback-report"] {
-    ensure => absent,
-  }
-
-  Mailalias["bounce+*"] {
-    ensure => absent,
-  }
-
-  Mailalias["listserv"] {
-    ensure => absent,
-  }
-
-  Mailalias["listserv-request"] {
-    ensure => absent,
-  }
-
-  Mailalias["listserv-owner"] {
-    ensure => absent,
-  }
-
-  Mailalias["majordomo"] {
-    ensure => absent,
-  }
-}
diff --git a/manifests/sympa/disabled.pp b/manifests/sympa/disabled.pp
new file mode 100644 (file)
index 0000000..b81ce98
--- /dev/null
@@ -0,0 +1,56 @@
+class mail::sympa::disabled inherits mail::sympa {
+  include mail::web::sympa::disabled
+
+  Service["sympa"] {
+    ensure => stopped,
+    enable => false,
+  }
+
+  Cron["sympa-restart"] {
+    ensure  => absent,
+  }
+
+  Postfix::Transport_regexp_snippet['sympa_transport_regexp'] {
+    content => undef,
+  }
+
+  Postfix::Virtual_regexp_snippet['sympa_virtual_regexp'] {
+    content => undef,
+  }
+
+  Mailalias["sympa"] {
+    ensure => absent,
+  }
+
+  Mailalias["sympa-request"] {
+    ensure => absent,
+  }
+
+  Mailalias["sympa-owner"] {
+    ensure => absent,
+  }
+
+  Mailalias["abuse-feedback-report"] {
+    ensure => absent,
+  }
+
+  Mailalias["bounce+*"] {
+    ensure => absent,
+  }
+
+  Mailalias["listserv"] {
+    ensure => absent,
+  }
+
+  Mailalias["listserv-request"] {
+    ensure => absent,
+  }
+
+  Mailalias["listserv-owner"] {
+    ensure => absent,
+  }
+
+  Mailalias["majordomo"] {
+    ensure => absent,
+  }
+}
diff --git a/manifests/sympa/packages.pp b/manifests/sympa/packages.pp
new file mode 100644 (file)
index 0000000..4a90727
--- /dev/null
@@ -0,0 +1,5 @@
+class mail::sympa::packages {
+  package { 'sympa':
+    ensure => installed,
+  } 
+}
diff --git a/manifests/sympa/web.pp b/manifests/sympa/web.pp
new file mode 100644 (file)
index 0000000..a174e62
--- /dev/null
@@ -0,0 +1,32 @@
+class mail::sympa::web inherits websites::setup {
+  apache::site { "${sympa::subdomain}":
+    docroot => "${apache::www_folder}/${sympa::subdomain}",
+    source  => true,
+    owner   => sympa,
+    group   => sympa,
+    mpm     => false,
+  }
+
+  package { [ 'apache2-suexec', 'libapache2-mod-fcgid' ]:
+    ensure => present,
+  }
+
+  apache::module { "fcgid":
+    ensure  => present,
+    require => Package["libapache2-mod-fcgid"],
+  }
+
+  apache::module { "suexec":
+    ensure  => present,
+    require => Package["apache2-suexec"],
+  }
+
+  file { "${apache::www_folder}/${sympa::subdomain}/wwsympa.fcgi":
+    ensure  => present,
+    owner   => sympa,
+    group   => sympa,
+    mode    => 0550,
+    content => "#!/bin/sh\n/usr/lib/cgi-bin/sympa/wwsympa.fcgi\n",
+    require => File["${apache::www_folder}/${sympa::subdomain}"],
+  }
+}
diff --git a/manifests/sympa/web/disabled.pp b/manifests/sympa/web/disabled.pp
new file mode 100644 (file)
index 0000000..1d34641
--- /dev/null
@@ -0,0 +1,9 @@
+class mail::sympa::web::disabled inherits mail::web::sympa {
+  Apache::Site["$sympa_subdomain"] {
+    ensure => absent,
+  }
+
+  File["${apache::www_folder}/${sympa_subdomain}/wwsympa.fcgi"] {
+    require => undef,
+  }
+}
index cf1017103af3a77529b6ce99502a7cefc20d2bc0..fd1d020e063bef3c94d37fd99bb6b4aaf903e05b 100644 (file)
@@ -1,9 +1,3 @@
-class mail::virtual::params {
-  $database_user = 'postfix'
-  $database_host = 'localhost'
-  $database_name = 'postfix'
-}
-
 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),
@@ -22,7 +16,7 @@ class mail::virtual(
   include mail::sasl
   include mail::dovecot
 
-  class { [ 'mail::postfixadmin', 'mail::web::virtual' ]: }
+  class { [ 'mail::virtual::database', 'mail::web::virtual' ]: }
 
   # Virtual mailboxes
   file { '/var/mail/virtual':
similarity index 68%
rename from manifests/postfixadmin.pp
rename to manifests/virtual/database.pp
index a6c87c2b6595dc1d96c11d31e4a8554c67328588..32259a47f7fb4b03faf2e71b80688aaa9966baed 100644 (file)
@@ -1,4 +1,4 @@
-class mail::postfixadmin {
+class mail::virtual::database {
   # Class configuration
   case $database_password {
     '': { fail("You need to define database_password host config") }
@@ -47,52 +47,52 @@ class mail::postfixadmin {
     mode   => 0755,
   }
 
-  file { "/etc/postfix/sql/mysql_virtual_domains_maps.cf":
+  file { "/etc/virtual/database/mysql_virtual_domains_maps.cf":
     ensure  => present,
     owner   => postfix,
     mode    => 0600,
-    content => template('mail/postfix/sql/mysql_virtual_domains_maps.cf.erb'),
-    require => File['/etc/postfix/sql'],
+    content => template('mail/virtual/database/mysql_virtual_domains_maps.cf.erb'),
+    require => File['/etc/virtual/database'],
   }
 
-  file { "/etc/postfix/sql/mysql_virtual_alias_maps.cf":
+  file { "/etc/virtual/database/mysql_virtual_alias_maps.cf":
     ensure  => present,
     owner   => postfix,
     mode    => 0600,
-    content => template('mail/postfix/sql/mysql_virtual_alias_maps.cf.erb'),
-    require => File['/etc/postfix/sql'],
+    content => template('mail/virtual/database/mysql_virtual_alias_maps.cf.erb'),
+    require => File['/etc/virtual/database'],
   }
 
-  file { "/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf":
+  file { "/etc/virtual/database/mysql_virtual_alias_domain_maps.cf":
     ensure  => present,
     owner   => postfix,
     mode    => 0600,
-    content => template('mail/postfix/sql/mysql_virtual_alias_domain_maps.cf.erb'),
-    require => File['/etc/postfix/sql'],
+    content => template('mail/virtual/database/mysql_virtual_alias_domain_maps.cf.erb'),
+    require => File['/etc/virtual/database'],
   }
 
-  file { "/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf":
+  file { "/etc/virtual/database/mysql_virtual_alias_domain_catchall_maps.cf":
     ensure  => present,
     owner   => postfix,
     mode    => 0600,
-    content => template('mail/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf.erb'),
-    require => File['/etc/postfix/sql'],
+    content => template('mail/virtual/database/mysql_virtual_alias_domain_catchall_maps.cf.erb'),
+    require => File['/etc/virtual/database'],
   }
 
-  file { "/etc/postfix/sql/mysql_virtual_mailbox_maps.cf":
+  file { "/etc/virtual/database/mysql_virtual_mailbox_maps.cf":
     ensure  => present,
     owner   => postfix,
     mode    => 0600,
-    content => template('mail/postfix/sql/mysql_virtual_mailbox_maps.cf.erb'),
-    require => File['/etc/postfix/sql'],
+    content => template('mail/virtual/database/mysql_virtual_mailbox_maps.cf.erb'),
+    require => File['/etc/virtual/database'],
   }
 
-  file { "/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf":
+  file { "/etc/virtual/database/mysql_virtual_alias_domain_mailbox_maps.cf":
     ensure  => present,
     owner   => postfix,
     mode    => 0600,
-    content => template('mail/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf.erb'),
-    require => File['/etc/postfix/sql'],
+    content => template('mail/virtual/database/mysql_virtual_alias_domain_mailbox_maps.cf.erb'),
+    require => File['/etc/virtual/database'],
   }
 
   #
@@ -113,7 +113,7 @@ class mail::postfixadmin {
   #  ensure  => present,
   #  owner   => postfix,
   #  mode    => 0600,
-  #  content => template('mail/postfix/sql/mysql_virtual_mailbox_limit_maps.cf.erb'),
-  #  require => File['/etc/postfix/sql'],
+  #  content => template('mail/virtual/database/mysql_virtual_mailbox_limit_maps.cf.erb'),
+  #  require => File['/etc/virtual/database'],
   #}
 }
diff --git a/manifests/virtual/packages.pp b/manifests/virtual/packages.pp
new file mode 100644 (file)
index 0000000..809115f
--- /dev/null
@@ -0,0 +1,29 @@
+class mail::virtual::packages {
+  package { [ 'libpam-mysql', 'libgsasl7' ]:
+    ensure => installed,
+  }
+
+  package { [ 'postfix-mysql', 'dovecot-imapd', 'maildrop' ]:
+    ensure => installed,
+  }
+
+  package { [ 'squirrelmail', 'squirrelmail-locales', 'imp4' ]:
+    ensure => installed,
+  } 
+
+  package { 'php-crypt-gpg':
+    ensure => installed,
+  }
+
+  # Squeeze (or newer) packages
+  if $::lsbdistcodename != 'lenny' {
+    package { [ 'roundcube', 'roundcube-sqlite', 'roundcube-plugins', 'roundcube-plugins-extra' ]:
+      ensure => latest,
+    } 
+  }
+
+  # We'll force SSL through the proxy
+  package { 'squirrelmail-secure-login':
+    ensure => absent,
+  }
+}
diff --git a/manifests/virtual/params.pp b/manifests/virtual/params.pp
new file mode 100644 (file)
index 0000000..814b353
--- /dev/null
@@ -0,0 +1,5 @@
+class mail::virtual::params {
+  $database_user = 'postfix'
+  $database_host = 'localhost'
+  $database_name = 'postfix'
+}
diff --git a/manifests/virtual/web.pp b/manifests/virtual/web.pp
new file mode 100644 (file)
index 0000000..7c007a9
--- /dev/null
@@ -0,0 +1,73 @@
+class mail::virtual::web(
+  $postfixadmin_setup_hash = hiera('mail::web::virtual::postfixadmin_setup_hash', ''),
+  $roundcube_des_key = hiera('mail::web::virtual::roundcube_des_key', ''),
+  $roundcube_logo = hiera('mail::web::virtual::roundcube_logo', 'null'),
+  $roundcube_login_info = hiera('mail::web::virtual::roundcube_login_info', false)
+) {
+
+  # Class configuration
+  if $::lsbdistcodename != 'lenny' {
+    case $roundcube_des_key {
+      '': { fail("You need to define roundcube_des_key host config") }
+    }
+  }
+
+  case $postfixadmin_setup_hash {
+    '': {
+      warning("You need to define postfixadmin_setup_hash host config")
+      $setup_hash = 'changeme'
+    }
+  }
+
+  include php::imap
+  include websites::setup
+
+  apache::site { "postfixadmin":
+    docroot => "${apache::sites_folder}/postfixadmin/site",
+    use     => [ "Site postfixadmin" ],
+    mpm     => false,
+  }
+
+  apache::site { "mail":
+    docroot => $::lsbdistcodename ? {
+      'lenny' => "/usr/share/squirrelmail",
+      default => "/var/lib/roundcube",
+    },
+    source  => true,
+    mpm     => false,
+  }
+
+  file { "${apache::sites_folder}/postfixadmin/site/config.inc.php":
+    ensure  => present,
+    owner   => www-data,
+    group   => root,
+    mode    => 0640,
+    content => template('mail/virtual/postfixadmin/config.inc.php.erb'),
+    require => File["${apache::sites_folder}/postfixadmin/site"],
+  }
+
+  file { "/etc/roundcube/main.inc.php":
+    ensure => $::lsbdistcodename ? {
+      'lenny' => absent,
+      default => present,
+    },
+    owner   => root,
+    group   => www-data,
+    mode    => 0640,
+    content => template('mail/virtual/roundcube/main.inc.php.erb'),
+    require => Package['roundcube'],
+  }
+
+  file { "/var/lib/roundcube/plugins/login_info":
+    ensure => $::lsbdistcodename ? {
+      'lenny' => absent,
+      default => directory,
+    },
+    recurse => true,
+    owner   => root,
+    group   => root,
+    mode    => 0644,
+    source  => "puppet:///modules/mail/roundcube/plugins/login_info",
+    require => Package['roundcube'],
+  }
+}
diff --git a/manifests/web.pp b/manifests/web.pp
deleted file mode 100644 (file)
index 065b44e..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-class mail::web::virtual(
-  $postfixadmin_setup_hash = hiera('mail::web::virtual::postfixadmin_setup_hash', ''),
-  $roundcube_des_key = hiera('mail::web::virtual::roundcube_des_key', ''),
-  $roundcube_logo = hiera('mail::web::virtual::roundcube_logo', 'null'),
-  $roundcube_login_info = hiera('mail::web::virtual::roundcube_login_info', false)
-) {
-
-  # Class configuration
-  if $::lsbdistcodename != 'lenny' {
-    case $roundcube_des_key {
-      '': { fail("You need to define roundcube_des_key host config") }
-    }
-  }
-
-  case $postfixadmin_setup_hash {
-    '': {
-      warning("You need to define postfixadmin_setup_hash host config")
-      $setup_hash = 'changeme'
-    }
-  }
-
-  include php::imap
-  include websites::setup
-
-  apache::site { "postfixadmin":
-    docroot => "${apache::sites_folder}/postfixadmin/site",
-    use     => [ "Site postfixadmin" ],
-    mpm     => false,
-  }
-
-  apache::site { "mail":
-    docroot => $::lsbdistcodename ? {
-      'lenny' => "/usr/share/squirrelmail",
-      default => "/var/lib/roundcube",
-    },
-    source  => true,
-    mpm     => false,
-  }
-
-  file { "${apache::sites_folder}/postfixadmin/site/config.inc.php":
-    ensure  => present,
-    owner   => www-data,
-    group   => root,
-    mode    => 0640,
-    content => template('mail/postfixadmin/config.inc.php.erb'),
-    require => File["${apache::sites_folder}/postfixadmin/site"],
-  }
-
-  file { "/etc/roundcube/main.inc.php":
-    ensure => $::lsbdistcodename ? {
-      'lenny' => absent,
-      default => present,
-    },
-    owner   => root,
-    group   => www-data,
-    mode    => 0640,
-    content => template('mail/roundcube/main.inc.php.erb'),
-    require => Package['roundcube'],
-  }
-
-  file { "/var/lib/roundcube/plugins/login_info":
-    ensure => $::lsbdistcodename ? {
-      'lenny' => absent,
-      default => directory,
-    },
-    recurse => true,
-    owner   => root,
-    group   => root,
-    mode    => 0644,
-    source  => "puppet:///modules/mail/roundcube/plugins/login_info",
-    require => Package['roundcube'],
-  }
-}
-
-class mail::web::sympa inherits websites::setup {
-  apache::site { "${sympa::subdomain}":
-    docroot => "${apache::www_folder}/${sympa::subdomain}",
-    source  => true,
-    owner   => sympa,
-    group   => sympa,
-    mpm     => false,
-  }
-
-  package { [ 'apache2-suexec', 'libapache2-mod-fcgid' ]:
-    ensure => present,
-  }
-
-  apache::module { "fcgid":
-    ensure  => present,
-    require => Package["libapache2-mod-fcgid"],
-  }
-
-  apache::module { "suexec":
-    ensure  => present,
-    require => Package["apache2-suexec"],
-  }
-
-  file { "${apache::www_folder}/${sympa::subdomain}/wwsympa.fcgi":
-    ensure  => present,
-    owner   => sympa,
-    group   => sympa,
-    mode    => 0550,
-    content => "#!/bin/sh\n/usr/lib/cgi-bin/sympa/wwsympa.fcgi\n",
-    require => File["${apache::www_folder}/${sympa::subdomain}"],
-  }
-}
-
-class mail::web::sympa::disabled inherits mail::web::sympa {
-  Apache::Site["$sympa_subdomain"] {
-    ensure => absent,
-  }
-
-  File["${apache::www_folder}/${sympa_subdomain}/wwsympa.fcgi"] {
-    require => undef,
-  }
-}
-
-class mail::web::mlmmj inherits websites::setup {
-  $mlmmj_subdomain = hiera('mlmmj_subdomain')
-
-  apache::site { "${mail::mlmmj::subdomain}":
-    docroot     => "/usr/share/mlmmj-php-web-admin",
-    owner       => 'mlmmj',
-    group       => 'mlmmj',
-    mpm_user    => 'mlmmj',
-    mpm_group   => 'mlmmj',
-    manage_user => false,
-    require     => Package['mlmmj-php-web-admin'],
-  }
-
-  package { [ 'mlmmj-php-web', 'mlmmj-php-web-admin' ]:
-    ensure => present,
-  }
-
-  file { '/etc/mlmmj-php-web-admin':
-    ensure => directory,
-    owner  => mlmmj,
-    group  => mlmmj,
-    mode   => 0640,
-  }
-
-  file { '/etc/mlmmj-php-web-admin/htpasswd':
-    ensure => present,
-    owner  => mlmmj,
-    group  => mlmmj,
-    mode   => 0640,
-    source => [ "puppet:///modules/site_mail/mlmmj/htpasswd",
-                "puppet:///modules/mail/mlmmj/htpasswd" ],
-  }
-}
-
-class mail::web::mlmmj::disabled inherits mail::web::mlmmj {
-  Apache::Site["$mlmmj_subdomain"] {
-    ensure => absent,
-  }
-
-  Package[ 'mlmmj-php-web', 'mlmmj-php-web-admin' ] {
-    ensure => absent,
-  }
-
-  File['/etc/mlmmj-php-web-admin'] {
-    ensure => absent,
-    force  => true,
-  }
-
-  File['/etc/mlmmj-php-web-admin/htpasswd'] {
-    ensure => absent,
-  }
-}
index 1e93a2b3098cd051d7fe54df77681839c52f23c8..6f7b6603a0cbb9782a72767eefc86aa8617c2d76 100644 (file)
@@ -56,7 +56,7 @@ driver = mysql
 #   connect = /etc/dovecot/authdb.sqlite
 #
 #connect = dbname=virtual user=virtual
-connect = host=<%= @database_host %> dbname=<%= @database_name %> user=<%= @database_user %> password=<%= @database_password %>
+connect = host=<%= scope.lookupvar('mail::virtual::database_host') %> dbname=<%= scope.lookupvar('mail::virtual::database_name') %> user=<%= scope.lookupvar('mail::virtual::database_user') %> password=<%= scope.lookupvar('mail::virtual::database_password') %>
 
 # Default password scheme.
 #
diff --git a/templates/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf.erb b/templates/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf.erb
deleted file mode 100644 (file)
index dd41a61..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-user      = <%= database_user %>
-password  = <%= database_password %>
-hosts     = <%= database_host %>
-dbname    = <%= database_name %>
-query     = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
diff --git a/templates/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf.erb b/templates/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf.erb
deleted file mode 100644 (file)
index c148372..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-user      = <%= database_user %>
-password  = <%= database_password %>
-hosts     = <%= database_host %>
-dbname    = <%= database_name %>
-query     = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
diff --git a/templates/postfix/sql/mysql_virtual_alias_domain_maps.cf.erb b/templates/postfix/sql/mysql_virtual_alias_domain_maps.cf.erb
deleted file mode 100644 (file)
index fddfe91..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-user      = <%= database_user %>
-password  = <%= database_password %>
-hosts     = <%= database_host %>
-dbname    = <%= database_name %>
-query     = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
diff --git a/templates/postfix/sql/mysql_virtual_alias_maps.cf.erb b/templates/postfix/sql/mysql_virtual_alias_maps.cf.erb
deleted file mode 100644 (file)
index d4b7164..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-user      = <%= database_user %>
-password  = <%= database_password %>
-hosts     = <%= database_host %>
-dbname    = <%= database_name %>
-query     = SELECT goto FROM alias WHERE address='%s' AND active = '1'
-#expansion_limit = 100
diff --git a/templates/postfix/sql/mysql_virtual_mailbox_limit_maps.cf.erb b/templates/postfix/sql/mysql_virtual_mailbox_limit_maps.cf.erb
deleted file mode 100644 (file)
index b40ce8f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-user      = <%= database_user %>
-password  = <%= database_password %>
-hosts     = <%= database_host %>
-dbname    = <%= database_name %>
-query     = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
diff --git a/templates/postfix/sql/mysql_virtual_mailbox_maps.cf.erb b/templates/postfix/sql/mysql_virtual_mailbox_maps.cf.erb
deleted file mode 100644 (file)
index 4e4b54e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-user      = <%= database_user %>
-password  = <%= database_password %>
-hosts     = <%= database_host %>
-dbname    = <%= database_name %>
-query     = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
-#expansion_limit = 100
diff --git a/templates/virtual/database/mysql_virtual_alias_domain_catchall_maps.cf.erb b/templates/virtual/database/mysql_virtual_alias_domain_catchall_maps.cf.erb
new file mode 100644 (file)
index 0000000..daa4b06
--- /dev/null
@@ -0,0 +1,5 @@
+user      = <%= scope.lookupvar('mail::virtual::database_user') %>
+password  = <%= scope.lookupvar('mail::virtual::database_password') %>
+hosts     = <%= scope.lookupvar('mail::virtual::database_host') %>
+dbname    = <%= scope.lookupvar('mail::virtual::database_name') %>
+query     = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
diff --git a/templates/virtual/database/mysql_virtual_alias_domain_mailbox_maps.cf.erb b/templates/virtual/database/mysql_virtual_alias_domain_mailbox_maps.cf.erb
new file mode 100644 (file)
index 0000000..9f16c20
--- /dev/null
@@ -0,0 +1,5 @@
+user      = <%= scope.lookupvar('mail::virtual::database_user') %>
+password  = <%= scope.lookupvar('mail::virtual::database_password') %>
+hosts     = <%= scope.lookupvar('mail::virtual::database_host') %>
+dbname    = <%= scope.lookupvar('mail::virtual::database_name') %>
+query     = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active='1'
diff --git a/templates/virtual/database/mysql_virtual_alias_domain_maps.cf.erb b/templates/virtual/database/mysql_virtual_alias_domain_maps.cf.erb
new file mode 100644 (file)
index 0000000..1edf8e3
--- /dev/null
@@ -0,0 +1,5 @@
+user      = <%= scope.lookupvar('mail::virtual::database_user') %>
+password  = <%= scope.lookupvar('mail::virtual::database_password') %>
+hosts     = <%= scope.lookupvar('mail::virtual::database_host') %>
+dbname    = <%= scope.lookupvar('mail::virtual::database_name') %>
+query     = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active='1'
diff --git a/templates/virtual/database/mysql_virtual_alias_maps.cf.erb b/templates/virtual/database/mysql_virtual_alias_maps.cf.erb
new file mode 100644 (file)
index 0000000..0553bc4
--- /dev/null
@@ -0,0 +1,6 @@
+user      = <%= scope.lookupvar('mail::virtual::database_user') %>
+password  = <%= scope.lookupvar('mail::virtual::database_password') %>
+hosts     = <%= scope.lookupvar('mail::virtual::database_host') %>
+dbname    = <%= scope.lookupvar('mail::virtual::database_name') %>
+query     = SELECT goto FROM alias WHERE address='%s' AND active = '1'
+#expansion_limit = 100
similarity index 52%
rename from templates/postfix/sql/mysql_virtual_domains_maps.cf.erb
rename to templates/virtual/database/mysql_virtual_domains_maps.cf.erb
index ecf253e907a2f5d39917b3b9ef1209083e2e2d60..cb1322ff1f04aa9eafb0227beb686f143aeb5e23 100644 (file)
@@ -1,7 +1,7 @@
-user      = <%= database_user %>
-password  = <%= database_password %>
-hosts     = <%= database_host %>
-dbname    = <%= database_name %>
+user      = <%= scope.lookupvar('mail::virtual::database_user') %>
+password  = <%= scope.lookupvar('mail::virtual::database_password') %>
+hosts     = <%= scope.lookupvar('mail::virtual::database_host') %>
+dbname    = <%= scope.lookupvar('mail::virtual::database_name') %>
 query     = SELECT domain FROM domain WHERE domain='%s' AND active = '1'
 #query    = SELECT domain FROM domain WHERE domain='%s'
 #optional query to use when relaying for backup MX
diff --git a/templates/virtual/database/mysql_virtual_mailbox_limit_maps.cf.erb b/templates/virtual/database/mysql_virtual_mailbox_limit_maps.cf.erb
new file mode 100644 (file)
index 0000000..2b9f837
--- /dev/null
@@ -0,0 +1,5 @@
+user      = <%= scope.lookupvar('mail::virtual::database_user') %>
+password  = <%= scope.lookupvar('mail::virtual::database_password') %>
+hosts     = <%= scope.lookupvar('mail::virtual::database_host') %>
+dbname    = <%= scope.lookupvar('mail::virtual::database_name') %>
+query     = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'
diff --git a/templates/virtual/database/mysql_virtual_mailbox_maps.cf.erb b/templates/virtual/database/mysql_virtual_mailbox_maps.cf.erb
new file mode 100644 (file)
index 0000000..c90938f
--- /dev/null
@@ -0,0 +1,6 @@
+user      = <%= scope.lookupvar('mail::virtual::database_user') %>
+password  = <%= scope.lookupvar('mail::virtual::database_password') %>
+hosts     = <%= scope.lookupvar('mail::virtual::database_host') %>
+dbname    = <%= scope.lookupvar('mail::virtual::database_name') %>
+query     = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'
+#expansion_limit = 100