From beb9ced0191a9c6804332bd741ba30d4eee0040a Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Tue, 22 Jan 2013 14:56:59 -0200 Subject: Major refactor --- manifests/dovecot.pp | 5 - manifests/firma.pp | 6 +- manifests/firma/packages.pp | 5 + manifests/init.pp | 16 - manifests/mlmmj.pp | 28 +- manifests/mlmmj/list.pp | 19 + manifests/mlmmj/packages.pp | 5 + manifests/mlmmj/web.pp | 33 + manifests/mlmmj/web/disabled.pp | 18 + manifests/packages.pp | 54 -- manifests/postfixadmin.pp | 119 --- manifests/schleuder/packages.pp | 5 + manifests/sympa.pp | 65 +- manifests/sympa/disabled.pp | 56 ++ manifests/sympa/packages.pp | 5 + manifests/sympa/web.pp | 32 + manifests/sympa/web/disabled.pp | 9 + manifests/virtual.pp | 8 +- manifests/virtual/database.pp | 119 +++ manifests/virtual/packages.pp | 29 + manifests/virtual/params.pp | 5 + manifests/virtual/web.pp | 73 ++ manifests/web.pp | 169 ----- templates/dovecot/dovecot-sql.conf.erb | 2 +- templates/firma/transport_regexp.erb | 2 + templates/firma/virtual_regexp.erb | 1 + templates/mlmmj/transport_regexp.erb | 0 templates/mlmmj/virtual_regexp.erb | 1 + templates/postfix/firma/transport_regexp.erb | 2 - templates/postfix/firma/virtual_regexp.erb | 1 - templates/postfix/mlmmj/transport_regexp.erb | 0 templates/postfix/mlmmj/virtual_regexp.erb | 1 - ...mysql_virtual_alias_domain_catchall_maps.cf.erb | 5 - .../mysql_virtual_alias_domain_mailbox_maps.cf.erb | 5 - .../sql/mysql_virtual_alias_domain_maps.cf.erb | 5 - .../postfix/sql/mysql_virtual_alias_maps.cf.erb | 6 - .../postfix/sql/mysql_virtual_domains_maps.cf.erb | 9 - .../sql/mysql_virtual_mailbox_limit_maps.cf.erb | 5 - .../postfix/sql/mysql_virtual_mailbox_maps.cf.erb | 6 - templates/postfix/sympa/transport_regexp.erb | 2 - templates/postfix/sympa/virtual_regexp.erb | 1 - templates/postfixadmin/config.inc.php.erb | 444 ------------ templates/roundcube/main.inc.php.erb | 802 --------------------- templates/sympa/transport_regexp.erb | 2 + templates/sympa/virtual_regexp.erb | 1 + ...mysql_virtual_alias_domain_catchall_maps.cf.erb | 5 + .../mysql_virtual_alias_domain_mailbox_maps.cf.erb | 5 + .../mysql_virtual_alias_domain_maps.cf.erb | 5 + .../database/mysql_virtual_alias_maps.cf.erb | 6 + .../database/mysql_virtual_domains_maps.cf.erb | 9 + .../mysql_virtual_mailbox_limit_maps.cf.erb | 5 + .../database/mysql_virtual_mailbox_maps.cf.erb | 6 + templates/virtual/postfixadmin/config.inc.php.erb | 444 ++++++++++++ templates/virtual/roundcube/main.inc.php.erb | 802 +++++++++++++++++++++ 54 files changed, 1720 insertions(+), 1753 deletions(-) create mode 100644 manifests/firma/packages.pp create mode 100644 manifests/mlmmj/list.pp create mode 100644 manifests/mlmmj/packages.pp create mode 100644 manifests/mlmmj/web.pp create mode 100644 manifests/mlmmj/web/disabled.pp delete mode 100644 manifests/postfixadmin.pp create mode 100644 manifests/schleuder/packages.pp create mode 100644 manifests/sympa/disabled.pp create mode 100644 manifests/sympa/packages.pp create mode 100644 manifests/sympa/web.pp create mode 100644 manifests/sympa/web/disabled.pp create mode 100644 manifests/virtual/database.pp create mode 100644 manifests/virtual/packages.pp create mode 100644 manifests/virtual/params.pp create mode 100644 manifests/virtual/web.pp delete mode 100644 manifests/web.pp create mode 100644 templates/firma/transport_regexp.erb create mode 100644 templates/firma/virtual_regexp.erb create mode 100644 templates/mlmmj/transport_regexp.erb create mode 100644 templates/mlmmj/virtual_regexp.erb delete mode 100644 templates/postfix/firma/transport_regexp.erb delete mode 100644 templates/postfix/firma/virtual_regexp.erb delete mode 100644 templates/postfix/mlmmj/transport_regexp.erb delete mode 100644 templates/postfix/mlmmj/virtual_regexp.erb delete mode 100644 templates/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf.erb delete mode 100644 templates/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf.erb delete mode 100644 templates/postfix/sql/mysql_virtual_alias_domain_maps.cf.erb delete mode 100644 templates/postfix/sql/mysql_virtual_alias_maps.cf.erb delete mode 100644 templates/postfix/sql/mysql_virtual_domains_maps.cf.erb delete mode 100644 templates/postfix/sql/mysql_virtual_mailbox_limit_maps.cf.erb delete mode 100644 templates/postfix/sql/mysql_virtual_mailbox_maps.cf.erb delete mode 100644 templates/postfix/sympa/transport_regexp.erb delete mode 100644 templates/postfix/sympa/virtual_regexp.erb delete mode 100644 templates/postfixadmin/config.inc.php.erb delete mode 100644 templates/roundcube/main.inc.php.erb create mode 100644 templates/sympa/transport_regexp.erb create mode 100644 templates/sympa/virtual_regexp.erb create mode 100644 templates/virtual/database/mysql_virtual_alias_domain_catchall_maps.cf.erb create mode 100644 templates/virtual/database/mysql_virtual_alias_domain_mailbox_maps.cf.erb create mode 100644 templates/virtual/database/mysql_virtual_alias_domain_maps.cf.erb create mode 100644 templates/virtual/database/mysql_virtual_alias_maps.cf.erb create mode 100644 templates/virtual/database/mysql_virtual_domains_maps.cf.erb create mode 100644 templates/virtual/database/mysql_virtual_mailbox_limit_maps.cf.erb create mode 100644 templates/virtual/database/mysql_virtual_mailbox_maps.cf.erb create mode 100644 templates/virtual/postfixadmin/config.inc.php.erb create mode 100644 templates/virtual/roundcube/main.inc.php.erb diff --git a/manifests/dovecot.pp b/manifests/dovecot.pp index 8619bcd..ac22bfb 100644 --- a/manifests/dovecot.pp +++ b/manifests/dovecot.pp @@ -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, diff --git a/manifests/firma.pp b/manifests/firma.pp index ec59879..a832878 100644 --- a/manifests/firma.pp +++ b/manifests/firma.pp @@ -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 index 0000000..31b538e --- /dev/null +++ b/manifests/firma/packages.pp @@ -0,0 +1,5 @@ +class mail::firma::packages { + package { 'expect': + ensure => installed, + } +} diff --git a/manifests/init.pp b/manifests/init.pp index 02a681b..a75022d 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -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" diff --git a/manifests/mlmmj.pp b/manifests/mlmmj.pp index 91a1fc0..93de661 100644 --- a/manifests/mlmmj.pp +++ b/manifests/mlmmj.pp @@ -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 index 0000000..13f30a9 --- /dev/null +++ b/manifests/mlmmj/list.pp @@ -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 index 0000000..34c133d --- /dev/null +++ b/manifests/mlmmj/packages.pp @@ -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 index 0000000..b0a79d4 --- /dev/null +++ b/manifests/mlmmj/web.pp @@ -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 index 0000000..bf29d7b --- /dev/null +++ b/manifests/mlmmj/web/disabled.pp @@ -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, + } +} diff --git a/manifests/packages.pp b/manifests/packages.pp index 2e3649d..45c1063 100644 --- a/manifests/packages.pp +++ b/manifests/packages.pp @@ -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/postfixadmin.pp b/manifests/postfixadmin.pp deleted file mode 100644 index a6c87c2..0000000 --- a/manifests/postfixadmin.pp +++ /dev/null @@ -1,119 +0,0 @@ -class mail::postfixadmin { - # 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/postfix/sql/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'], - } - - file { "/etc/postfix/sql/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'], - } - - file { "/etc/postfix/sql/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'], - } - - file { "/etc/postfix/sql/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'], - } - - file { "/etc/postfix/sql/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'], - } - - file { "/etc/postfix/sql/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'], - } - - # - # 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/postfix/sql/mysql_virtual_mailbox_limit_maps.cf.erb'), - # require => File['/etc/postfix/sql'], - #} -} diff --git a/manifests/schleuder/packages.pp b/manifests/schleuder/packages.pp new file mode 100644 index 0000000..66e824a --- /dev/null +++ b/manifests/schleuder/packages.pp @@ -0,0 +1,5 @@ +class mail::schleuder::packages { + package { 'schleuder': + ensure => installed, + } +} diff --git a/manifests/sympa.pp b/manifests/sympa.pp index 34ea084..2984469 100644 --- a/manifests/sympa.pp +++ b/manifests/sympa.pp @@ -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 index 0000000..b81ce98 --- /dev/null +++ b/manifests/sympa/disabled.pp @@ -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 index 0000000..4a90727 --- /dev/null +++ b/manifests/sympa/packages.pp @@ -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 index 0000000..a174e62 --- /dev/null +++ b/manifests/sympa/web.pp @@ -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 index 0000000..1d34641 --- /dev/null +++ b/manifests/sympa/web/disabled.pp @@ -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, + } +} diff --git a/manifests/virtual.pp b/manifests/virtual.pp index cf10171..fd1d020 100644 --- a/manifests/virtual.pp +++ b/manifests/virtual.pp @@ -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': 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'], + #} +} diff --git a/manifests/virtual/packages.pp b/manifests/virtual/packages.pp new file mode 100644 index 0000000..809115f --- /dev/null +++ b/manifests/virtual/packages.pp @@ -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 index 0000000..814b353 --- /dev/null +++ b/manifests/virtual/params.pp @@ -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 index 0000000..7c007a9 --- /dev/null +++ b/manifests/virtual/web.pp @@ -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 index 065b44e..0000000 --- a/manifests/web.pp +++ /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, - } -} diff --git a/templates/dovecot/dovecot-sql.conf.erb b/templates/dovecot/dovecot-sql.conf.erb index 1e93a2b..6f7b660 100644 --- a/templates/dovecot/dovecot-sql.conf.erb +++ b/templates/dovecot/dovecot-sql.conf.erb @@ -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/firma/transport_regexp.erb b/templates/firma/transport_regexp.erb new file mode 100644 index 0000000..27c65af --- /dev/null +++ b/templates/firma/transport_regexp.erb @@ -0,0 +1,2 @@ +/^.*+request\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ firmarequest: +/^.*\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ firma: diff --git a/templates/firma/virtual_regexp.erb b/templates/firma/virtual_regexp.erb new file mode 100644 index 0000000..767f3c1 --- /dev/null +++ b/templates/firma/virtual_regexp.erb @@ -0,0 +1 @@ +/^(.*)-request\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ $1+request@<%= subdomain %>.$2 diff --git a/templates/mlmmj/transport_regexp.erb b/templates/mlmmj/transport_regexp.erb new file mode 100644 index 0000000..e69de29 diff --git a/templates/mlmmj/virtual_regexp.erb b/templates/mlmmj/virtual_regexp.erb new file mode 100644 index 0000000..57f1a72 --- /dev/null +++ b/templates/mlmmj/virtual_regexp.erb @@ -0,0 +1 @@ +/^(.*)\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ ${1} diff --git a/templates/postfix/firma/transport_regexp.erb b/templates/postfix/firma/transport_regexp.erb deleted file mode 100644 index 27c65af..0000000 --- a/templates/postfix/firma/transport_regexp.erb +++ /dev/null @@ -1,2 +0,0 @@ -/^.*+request\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ firmarequest: -/^.*\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ firma: diff --git a/templates/postfix/firma/virtual_regexp.erb b/templates/postfix/firma/virtual_regexp.erb deleted file mode 100644 index 767f3c1..0000000 --- a/templates/postfix/firma/virtual_regexp.erb +++ /dev/null @@ -1 +0,0 @@ -/^(.*)-request\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ $1+request@<%= subdomain %>.$2 diff --git a/templates/postfix/mlmmj/transport_regexp.erb b/templates/postfix/mlmmj/transport_regexp.erb deleted file mode 100644 index e69de29..0000000 diff --git a/templates/postfix/mlmmj/virtual_regexp.erb b/templates/postfix/mlmmj/virtual_regexp.erb deleted file mode 100644 index 57f1a72..0000000 --- a/templates/postfix/mlmmj/virtual_regexp.erb +++ /dev/null @@ -1 +0,0 @@ -/^(.*)\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ ${1} 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 index dd41a61..0000000 --- a/templates/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf.erb +++ /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 index c148372..0000000 --- a/templates/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf.erb +++ /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 index fddfe91..0000000 --- a/templates/postfix/sql/mysql_virtual_alias_domain_maps.cf.erb +++ /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 index d4b7164..0000000 --- a/templates/postfix/sql/mysql_virtual_alias_maps.cf.erb +++ /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_domains_maps.cf.erb b/templates/postfix/sql/mysql_virtual_domains_maps.cf.erb deleted file mode 100644 index ecf253e..0000000 --- a/templates/postfix/sql/mysql_virtual_domains_maps.cf.erb +++ /dev/null @@ -1,9 +0,0 @@ -user = <%= database_user %> -password = <%= database_password %> -hosts = <%= database_host %> -dbname = <%= 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 -#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' 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 index b40ce8f..0000000 --- a/templates/postfix/sql/mysql_virtual_mailbox_limit_maps.cf.erb +++ /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 index 4e4b54e..0000000 --- a/templates/postfix/sql/mysql_virtual_mailbox_maps.cf.erb +++ /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/postfix/sympa/transport_regexp.erb b/templates/postfix/sympa/transport_regexp.erb deleted file mode 100644 index 1e32e2a..0000000 --- a/templates/postfix/sympa/transport_regexp.erb +++ /dev/null @@ -1,2 +0,0 @@ -/^.*+owner\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ sympabounce: -/^.*\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ sympa: diff --git a/templates/postfix/sympa/virtual_regexp.erb b/templates/postfix/sympa/virtual_regexp.erb deleted file mode 100644 index f5883d7..0000000 --- a/templates/postfix/sympa/virtual_regexp.erb +++ /dev/null @@ -1 +0,0 @@ -/^(.*)-owner\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ $1+owner@<%= subdomain %>.$2 diff --git a/templates/postfixadmin/config.inc.php.erb b/templates/postfixadmin/config.inc.php.erb deleted file mode 100644 index 404dcb3..0000000 --- a/templates/postfixadmin/config.inc.php.erb +++ /dev/null @@ -1,444 +0,0 @@ -'; - -// Postfix Admin Path -// Set the location of your Postfix Admin installation here. -// YOU MUST ENTER THE COMPLETE URL e.g. http://domain.tld/postfixadmin -$CONF['postfix_admin_url'] = ''; - -// shouldn't need changing. -$CONF['postfix_admin_path'] = dirname(__FILE__); - -// Language config -// Language files are located in './languages', change as required.. -$CONF['default_language'] = 'en'; - -// Database Config -// mysql = MySQL 3.23 and 4.0, 4.1 or 5 -// mysqli = MySQL 4.1+ -// pgsql = PostgreSQL -$CONF['database_type'] = 'mysql'; -$CONF['database_host'] = '<%= database_host %>'; -$CONF['database_user'] = '<%= database_user %>'; -$CONF['database_password'] = '<%= database_password %>'; -$CONF['database_name'] = '<%= database_name %>'; -$CONF['database_prefix'] = ''; -// If you need to specify a different port for a MYSQL database connection, use e.g. -// $CONF['database_host'] = '172.30.33.66:3308'; -// If you need to specify a different port for POSTGRESQL database connection -// uncomment and change the following -// $CONF['database_port'] = '5432'; - - -// Here, if you need, you can customize table names. -$CONF['database_prefix'] = ''; -$CONF['database_tables'] = array ( - 'admin' => 'admin', - 'alias' => 'alias', - 'alias_domain' => 'alias_domain', - 'config' => 'config', - 'domain' => 'domain', - 'domain_admins' => 'domain_admins', - 'fetchmail' => 'fetchmail', - 'log' => 'log', - 'mailbox' => 'mailbox', - 'vacation' => 'vacation', - 'vacation_notification' => 'vacation_notification', - 'quota' => 'quota', - 'quota2' => 'quota2', -); - -// Site Admin -// Define the Site Admins email address below. -// This will be used to send emails from to create mailboxes. -$CONF['admin_email'] = 'postmaster@<%= domain %>'; - -// Mail Server -// Hostname (FQDN) of your mail server. -// This is used to send email to Postfix in order to create mailboxes. -$CONF['smtp_server'] = 'localhost'; -$CONF['smtp_port'] = '25'; - -// Encrypt -// In what way do you want the passwords to be crypted? -// md5crypt = internal postfix admin md5 -// md5 = md5 sum of the password -// system = whatever you have set as your PHP system default -// cleartext = clear text passwords (ouch!) -// mysql_encrypt = useful for PAM integration -// authlib = support for courier-authlib style passwords -// dovecot:CRYPT-METHOD = use dovecotpw -s 'CRYPT-METHOD'. Example: dovecot:CRAM-MD5 -$CONF['encrypt'] = 'md5crypt'; - -// In what flavor should courier-authlib style passwords be enrypted? -// md5 = {md5} + base64 encoded md5 hash -// md5raw = {md5raw} + plain encoded md5 hash -// SHA = {SHA} + base64-encoded sha1 hash -// crypt = {crypt} + Standard UNIX DES-enrypted with 2-character salt -$CONF['authlib_default_flavor'] = 'md5raw'; - -// If you use the dovecot encryption method: where is the dovecotpw binary located? -$CONF['dovecotpw'] = "/usr/sbin/dovecotpw"; - -// Minimum length required for passwords. Postfixadmin will not -// allow users to set passwords which are shorter than this value. -$CONF['min_password_length'] = 5; - -// Generate Password -// Generate a random password for a mailbox or admin and display it. -// If you want to automagically generate paswords set this to 'YES'. -$CONF['generate_password'] = 'NO'; - -// Show Password -// Always show password after adding a mailbox or admin. -// If you want to always see what password was set set this to 'YES'. -$CONF['show_password'] = 'NO'; - -// Page Size -// Set the number of entries that you would like to see -// in one page. -$CONF['page_size'] = '10'; - -// Default Aliases -// The default aliases that need to be created for all domains. -$CONF['default_aliases'] = array ( - 'abuse' => 'abuse@<%= domain %>', - 'hostmaster' => 'hostmaster@<%= domain %>', - 'postmaster' => 'postmaster@<%= domain %>', - 'webmaster' => 'webmaster@<%= domain %>' -); - -// Mailboxes -// If you want to store the mailboxes per domain set this to 'YES'. -// Examples: -// YES: /usr/local/virtual/domain.tld/username@domain.tld -// NO: /usr/local/virtual/username@domain.tld -$CONF['domain_path'] = 'NO'; -// If you don't want to have the domain in your mailbox set this to 'NO'. -// Examples: -// YES: /usr/local/virtual/domain.tld/username@domain.tld -// NO: /usr/local/virtual/domain.tld/username -// Note: If $CONF['domain_path'] is set to NO, this setting will be forced to YES. -$CONF['domain_in_mailbox'] = 'YES'; -// If you want to define your own function to generate a maildir path set this to the name of the function. -// Notes: -// - this configuration directive will override both domain_path and domain_in_mailbox -// - the maildir_name_hook() function example is present below, commented out -// - if the function does not exist the program will default to the above domain_path and domain_in_mailbox settings -$CONF['maildir_name_hook'] = 'NO'; - -/* - maildir_name_hook example function - - Called by create-mailbox.php if $CONF['maildir_name_hook'] == '' - - allows for customized maildir paths determined by a custom function - - the example below will prepend a single-character directory to the - beginning of the maildir, splitting domains more or less evenly over - 36 directories for improved filesystem performance with large numbers - of domains. - - Returns: maildir path - ie. I/example.com/user/ -*/ -/* -function maildir_name_hook($domain, $user) { - $chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - - $dir_index = hexdec(substr(md5($domain), 28)) % strlen($chars); - $dir = substr($chars, $dir_index, 1); - return sprintf("%s/%s/%s/", $dir, $domain, $user); -} -*/ - - -// Default Domain Values -// Specify your default values below. Quota in MB. -$CONF['aliases'] = '10'; -$CONF['mailboxes'] = '10'; -$CONF['maxquota'] = '10'; - -// Quota -// When you want to enforce quota for your mailbox users set this to 'YES'. -$CONF['quota'] = 'NO'; -// You can either use '1024000' or '1048576' -$CONF['quota_multiplier'] = '1024000'; - -// Transport -// If you want to define additional transport options for a domain set this to 'YES'. -// Read the transport file of the Postfix documentation. -$CONF['transport'] = 'NO'; -// Transport options -// If you want to define additional transport options put them in array below. -$CONF['transport_options'] = array ( - 'virtual', // for virtual accounts - 'local', // for system accounts - 'relay' // for backup mx -); -// Transport default -// You should define default transport. It must be in array above. -$CONF['transport_default'] = 'virtual'; - -// Virtual Vacation -// If you want to use virtual vacation for you mailbox users set this to 'YES'. -// NOTE: Make sure that you install the vacation module. (See VIRTUAL-VACATION/) -$CONF['vacation'] = 'NO'; -// This is the autoreply domain that you will need to set in your Postfix -// transport maps to handle virtual vacations. It does not need to be a -// real domain (i.e. you don't need to setup DNS for it). -$CONF['vacation_domain'] = 'autoreply.<%= domain %>'; - -// Vacation Control -// If you want users to take control of vacation set this to 'YES'. -$CONF['vacation_control'] ='YES'; - -// Vacation Control for admins -// Set to 'YES' if your domain admins should be able to edit user vacation. -$CONF['vacation_control_admin'] = 'YES'; - -// Alias Control -// Postfix Admin inserts an alias in the alias table for every mailbox it creates. -// The reason for this is that when you want catch-all and normal mailboxes -// to work you need to have the mailbox replicated in the alias table. -// If you want to take control of these aliases as well set this to 'YES'. -$CONF['alias_control'] = 'NO'; - -// Alias Control for admins -// Set to 'NO' if your domain admins shouldn't be able to edit user aliases. -$CONF['alias_control_admin'] = 'NO'; - -// Special Alias Control -// Set to 'NO' if your domain admins shouldn't be able to edit default aliases. -$CONF['special_alias_control'] = 'NO'; - -// Alias Goto Field Limit -// Set the max number of entries that you would like to see -// in one 'goto' field in overview, the rest will be hidden and "[and X more...]" will be added. -// '0' means no limits. -$CONF['alias_goto_limit'] = '0'; - -// Alias Domains -// Alias domains allow to "mirror" aliases and mailboxes to another domain. This makes -// configuration easier if you need the same set of aliases on multiple domains, but -// also requires postfix to do more database queries. -// Note: If you update from 2.2.x or earlier, you will have to update your postfix configuration. -// Set to 'NO' to disable alias domains. -$CONF['alias_domain'] = 'YES'; - -// Backup -// If you don't want backup tab set this to 'NO'; -$CONF['backup'] = 'YES'; - -// Send Mail -// If you don't want sendmail tab set this to 'NO'; -$CONF['sendmail'] = 'YES'; - -// Logging -// If you don't want logging set this to 'NO'; -$CONF['logging'] = 'YES'; - -// Fetchmail -// If you don't want fetchmail tab set this to 'NO'; -$CONF['fetchmail'] = 'YES'; - -// fetchmail_extra_options allows users to specify any fetchmail options and any MDA -// (it will even accept 'rm -rf /' as MDA!) -// This should be set to NO, except if you *really* trust *all* your users. -$CONF['fetchmail_extra_options'] = 'NO'; - -// Header -$CONF['show_header_text'] = 'NO'; -$CONF['header_text'] = ':: Postfix Admin ::'; - -// link to display under 'Main' menu when logged in as a user. -$CONF['user_footer_link'] = "http://<%= domain %>/main"; - -// Footer -// Below information will be on all pages. -// If you don't want the footer information to appear set this to 'NO'. -$CONF['show_footer_text'] = 'YES'; -$CONF['footer_text'] = 'Return to <%= domain %>'; -$CONF['footer_link'] = 'http://<%= domain %>'; - -// Welcome Message -// This message is send to every newly created mailbox. -// Change the text between EOM. -$CONF['welcome_text'] = <<= 1.2, set this to yes. -// Note about dovecot config: table "quota" is for 1.0 & 1.1, table "quota2" is for dovecot 1.2 and newer -$CONF['new_quota_table'] = 'NO'; - -// -// Normally, the TCP port number does not have to be specified. -// $CONF['create_mailbox_subdirs_hostport']=143; -// -// If you have trouble connecting to the IMAP-server, then specify -// a value for $CONF['create_mailbox_subdirs_hostoptions']. These -// are some examples to experiment with: -// $CONF['create_mailbox_subdirs_hostoptions']=array('notls'); -// $CONF['create_mailbox_subdirs_hostoptions']=array('novalidate-cert','norsh'); -// See also the "Optional flags for names" table at -// http://www.php.net/manual/en/function.imap-open.php - - -// Theme Config -// Specify your own logo and CSS file -$CONF['theme_logo'] = 'images/logo-default.png'; -$CONF['theme_css'] = 'css/default.css'; - -// XMLRPC Interface. -// This should be only of use if you wish to use e.g the -// Postfixadmin-Squirrelmail package -// change to boolean true to enable xmlrpc -$CONF['xmlrpc_enabled'] = false; - - -// If you want to keep most settings at default values and/or want to ensure -// that future updates work without problems, you can use a separate config -// file (config.local.php) instead of editing this file and override some -// settings there. -if (file_exists(dirname(__FILE__) . '/config.local.php')) { - include(dirname(__FILE__) . '/config.local.php'); -} - -// -// END OF CONFIG FILE -// -/* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */ diff --git a/templates/roundcube/main.inc.php.erb b/templates/roundcube/main.inc.php.erb deleted file mode 100644 index 5582ce0..0000000 --- a/templates/roundcube/main.inc.php.erb +++ /dev/null @@ -1,802 +0,0 @@ -/sendmail or to syslog -$rcmail_config['smtp_log'] = true; - -// Log successful logins to /userlogins or to syslog -$rcmail_config['log_logins'] = false; - -// Log session authentication errors to /session or to syslog -$rcmail_config['log_session'] = false; - -// Log SQL queries to /sql or to syslog -$rcmail_config['sql_debug'] = false; - -// Log IMAP conversation to /imap or to syslog -$rcmail_config['imap_debug'] = false; - -// Log LDAP conversation to /ldap or to syslog -$rcmail_config['ldap_debug'] = false; - -// Log SMTP conversation to /smtp or to syslog -$rcmail_config['smtp_debug'] = false; - -// ---------------------------------- -// IMAP -// ---------------------------------- - -// the mail host chosen to perform the log-in -// leave blank to show a textbox at login, give a list of hosts -// to display a pulldown menu or set one host as string. -// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls:// -// Supported replacement variables: -// %n - http hostname ($_SERVER['SERVER_NAME']) -// %d - domain (http hostname without the first part) -// %s - domain name after the '@' from e-mail address provided at login screen -// For example %n = mail.domain.tld, %d = domain.tld -$rcmail_config['default_host'] = 'localhost'; - -// TCP port used for IMAP connections -$rcmail_config['default_port'] = 143; - -// IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use -// best server supported one) -$rcmail_config['imap_auth_type'] = null; - -// If you know your imap's folder delimiter, you can specify it here. -// Otherwise it will be determined automatically -$rcmail_config['imap_delimiter'] = null; - -// If IMAP server doesn't support NAMESPACE extension, but you're -// using shared folders or personal root folder is non-empty, you'll need to -// set these options. All can be strings or arrays of strings. -// Folders need to be ended with directory separator, e.g. "INBOX." -// (special directory "~" is an exception to this rule) -// These can be used also to overwrite server's namespaces -$rcmail_config['imap_ns_personal'] = null; -$rcmail_config['imap_ns_other'] = null; -$rcmail_config['imap_ns_shared'] = null; - -// By default IMAP capabilities are readed after connection to IMAP server -// In some cases, e.g. when using IMAP proxy, there's a need to refresh the list -// after login. Set to True if you've got this case. -$rcmail_config['imap_force_caps'] = false; - -// By default list of subscribed folders is determined using LIST-EXTENDED -// extension if available. Some servers (dovecot 1.x) returns wrong results -// for shared namespaces in this case. http://trac.roundcube.net/ticket/1486225 -// Enable this option to force LSUB command usage instead. -$rcmail_config['imap_force_lsub'] = false; - -// IMAP connection timeout, in seconds. Default: 0 (no limit) -$rcmail_config['imap_timeout'] = 0; - -// Optional IMAP authentication identifier to be used as authorization proxy -$rcmail_config['imap_auth_cid'] = null; - -// Optional IMAP authentication password to be used for imap_auth_cid -$rcmail_config['imap_auth_pw'] = null; - -// Type of IMAP indexes cache. Supported values: 'db', 'apc' and 'memcache'. -$rcmail_config['imap_cache'] = null; - -// Enables messages cache. Only 'db' cache is supported. -$rcmail_config['messages_cache'] = false; - - -// ---------------------------------- -// SMTP -// ---------------------------------- - -// SMTP server host (for sending mails). -// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls:// -// If left blank, the PHP mail() function is used -// Supported replacement variables: -// %h - user's IMAP hostname -// %n - http hostname ($_SERVER['SERVER_NAME']) -// %d - domain (http hostname without the first part) -// %z - IMAP domain (IMAP hostname without the first part) -// For example %n = mail.domain.tld, %d = domain.tld -$rcmail_config['smtp_server'] = ''; - -// SMTP port (default is 25; 465 for SSL) -$rcmail_config['smtp_port'] = 25; - -// SMTP username (if required) if you use %u as the username Roundcube -// will use the current username for login -$rcmail_config['smtp_user'] = ''; - -// SMTP password (if required) if you use %p as the password Roundcube -// will use the current user's password for login -$rcmail_config['smtp_pass'] = ''; - -// SMTP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use -// best server supported one) -$rcmail_config['smtp_auth_type'] = ''; - -// Optional SMTP authentication identifier to be used as authorization proxy -$rcmail_config['smtp_auth_cid'] = null; - -// Optional SMTP authentication password to be used for smtp_auth_cid -$rcmail_config['smtp_auth_pw'] = null; - -// SMTP HELO host -// Hostname to give to the remote server for SMTP 'HELO' or 'EHLO' messages -// Leave this blank and you will get the server variable 'server_name' or -// localhost if that isn't defined. -$rcmail_config['smtp_helo_host'] = ''; - -// SMTP connection timeout, in seconds. Default: 0 (no limit) -$rcmail_config['smtp_timeout'] = 0; - -// ---------------------------------- -// SYSTEM -// ---------------------------------- - -// THIS OPTION WILL ALLOW THE INSTALLER TO RUN AND CAN EXPOSE SENSITIVE CONFIG DATA. -// ONLY ENABLE IT IF YOU'RE REALLY SURE WHAT YOU'RE DOING! -$rcmail_config['enable_installer'] = false; - -// use this folder to store log files (must be writeable for apache user) -// This is used by the 'file' log driver. -$rcmail_config['log_dir'] = 'logs/'; - -// use this folder to store temp files (must be writeable for apache user) -$rcmail_config['temp_dir'] = 'temp/'; - -// lifetime of message cache -// possible units: s, m, h, d, w -$rcmail_config['message_cache_lifetime'] = '10d'; - -// enforce connections over https -// with this option enabled, all non-secure connections will be redirected. -// set the port for the ssl connection as value of this option if it differs from the default 443 -$rcmail_config['force_https'] = false; - -// tell PHP that it should work as under secure connection -// even if it doesn't recognize it as secure ($_SERVER['HTTPS'] is not set) -// e.g. when you're running Roundcube behind a https proxy -$rcmail_config['use_https'] = false; - -// Allow browser-autocompletion on login form. -// 0 - disabled, 1 - username and host only, 2 - username, host, password -$rcmail_config['login_autocomplete'] = 0; - -// If users authentication is not case sensitive this must be enabled. -// You can also use it to force conversion of logins to lower case. -// After enabling it all user records need to be updated, e.g. with query: -// UPDATE users SET username = LOWER(username); -$rcmail_config['login_lc'] = false; - -// automatically create a new Roundcube user when log-in the first time. -// a new user will be created once the IMAP login succeeds. -// set to false if only registered users can use this service -$rcmail_config['auto_create_user'] = true; - -// replace Roundcube logo with this image -// specify an URL relative to the document root of this Roundcube installation -$rcmail_config['skin_logo'] = <%= roundcube_logo %>; - -// Includes should be interpreted as PHP files -$rcmail_config['skin_include_php'] = false; - -// Session lifetime in minutes -// must be greater than 'keep_alive'/60 -$rcmail_config['session_lifetime'] = 10; - -// session domain: .example.org -$rcmail_config['session_domain'] = ''; - -// session name. Default: 'roundcube_sessid' -$rcmail_config['session_name'] = null; - -// Backend to use for session storage. Can either be 'db' (default) or 'memcache' -// If set to memcache, a list of servers need to be specified in 'memcache_hosts' -// Make sure the Memcache extension (http://pecl.php.net/package/memcache) version >= 2.0.0 is installed -$rcmail_config['session_storage'] = 'db'; - -// Use these hosts for accessing memcached -// Define any number of hosts in the form hostname:port -$rcmail_config['memcache_hosts'] = null; // e.g. array( 'localhost:11211', '192.168.1.12:11211' ); - -// check client IP in session athorization -$rcmail_config['ip_check'] = false; - -// check referer of incoming requests -$rcmail_config['referer_check'] = false; - -// X-Frame-Options HTTP header value sent to prevent from Clickjacking. -// Possible values: sameorigin|deny. Set to false in order to disable sending them -$rcmail_config['x_frame_options'] = 'sameorigin'; - -// this key is used to encrypt the users imap password which is stored -// in the session record (and the client cookie if remember password is enabled). -// please provide a string of exactly 24 chars. -$rcmail_config['des_key'] = '<%= roundcube_des_key %>'; - -// Automatically add this domain to user names for login -// Only for IMAP servers that require full e-mail addresses for login -// Specify an array with 'host' => 'domain' values to support multiple hosts -// Supported replacement variables: -// %h - user's IMAP hostname -// %n - http hostname ($_SERVER['SERVER_NAME']) -// %d - domain (http hostname without the first part) -// %z - IMAP domain (IMAP hostname without the first part) -// For example %n = mail.domain.tld, %d = domain.tld -$rcmail_config['username_domain'] = ''; - -// This domain will be used to form e-mail addresses of new users -// Specify an array with 'host' => 'domain' values to support multiple hosts -// Supported replacement variables: -// %h - user's IMAP hostname -// %n - http hostname ($_SERVER['SERVER_NAME']) -// %d - domain (http hostname without the first part) -// %z - IMAP domain (IMAP hostname without the first part) -// For example %n = mail.domain.tld, %d = domain.tld -$rcmail_config['mail_domain'] = ''; - -// Password charset. -// Use it if your authentication backend doesn't support UTF-8. -// Defaults to ISO-8859-1 for backward compatibility -$rcmail_config['password_charset'] = 'ISO-8859-1'; - -// How many seconds must pass between emails sent by a user -$rcmail_config['sendmail_delay'] = 0; - -// Maximum number of recipients per message. Default: 0 (no limit) -$rcmail_config['max_recipients'] = 0; - -// Maximum allowednumber of members of an address group. Default: 0 (no limit) -// If 'max_recipients' is set this value should be less or equal -$rcmail_config['max_group_members'] = 0; - -// add this user-agent to message headers when sending -$rcmail_config['useragent'] = 'Roundcube Webmail/'.RCMAIL_VERSION; - -// use this name to compose page titles -$rcmail_config['product_name'] = 'Roundcube Webmail'; - -// try to load host-specific configuration -// see http://trac.roundcube.net/wiki/Howto_Config for more details -$rcmail_config['include_host_config'] = false; - -// path to a text file which will be added to each sent message -// paths are relative to the Roundcube root folder -$rcmail_config['generic_message_footer'] = ''; - -// path to a text file which will be added to each sent HTML message -// paths are relative to the Roundcube root folder -$rcmail_config['generic_message_footer_html'] = ''; - -// add a received header to outgoing mails containing the creators IP and hostname -$rcmail_config['http_received_header'] = false; - -// Whether or not to encrypt the IP address and the host name -// these could, in some circles, be considered as sensitive information; -// however, for the administrator, these could be invaluable help -// when tracking down issues. -$rcmail_config['http_received_header_encrypt'] = false; - -// This string is used as a delimiter for message headers when sending -// a message via mail() function. Leave empty for auto-detection -$rcmail_config['mail_header_delimiter'] = NULL; - -// number of chars allowed for line when wrapping text. -// text wrapping is done when composing/sending messages -$rcmail_config['line_length'] = 72; - -// send plaintext messages as format=flowed -$rcmail_config['send_format_flowed'] = true; - -// don't allow these settings to be overriden by the user -$rcmail_config['dont_override'] = array(); - -// Set identities access level: -// 0 - many identities with possibility to edit all params -// 1 - many identities with possibility to edit all params but not email address -// 2 - one identity with possibility to edit all params -// 3 - one identity with possibility to edit all params but not email address -$rcmail_config['identities_level'] = 0; - -// Mimetypes supported by the browser. -// attachments of these types will open in a preview window -// either a comma-separated list or an array: 'text/plain,text/html,text/xml,image/jpeg,image/gif,image/png,application/pdf' -$rcmail_config['client_mimetypes'] = null; # null == default - -// mime magic database -$rcmail_config['mime_magic'] = '/usr/share/misc/magic'; - -// path to imagemagick identify binary -$rcmail_config['im_identify_path'] = null; - -// path to imagemagick convert binary -$rcmail_config['im_convert_path'] = null; - -// maximum size of uploaded contact photos in pixel -$rcmail_config['contact_photo_size'] = 160; - -// Enable DNS checking for e-mail address validation -$rcmail_config['email_dns_check'] = false; - -// ---------------------------------- -// PLUGINS -// ---------------------------------- - -// List of active plugins (in plugins/ directory) -$rcmail_config['plugins'] = array('login_info'); - -// ---------------------------------- -// USER INTERFACE -// ---------------------------------- - -// default messages sort column. Use empty value for default server's sorting, -// or 'arrival', 'date', 'subject', 'from', 'to', 'size', 'cc' -$rcmail_config['message_sort_col'] = ''; - -// default messages sort order -$rcmail_config['message_sort_order'] = 'DESC'; - -// These cols are shown in the message list. Available cols are: -// subject, from, to, cc, replyto, date, size, status, flag, attachment, 'priority' -$rcmail_config['list_cols'] = array('subject', 'status', 'from', 'date', 'size', 'flag', 'attachment'); - -// the default locale setting (leave empty for auto-detection) -// RFC1766 formatted language name like en_US, de_DE, de_CH, fr_FR, pt_BR -$rcmail_config['language'] = 'pt_BR'; - -// use this format for date display (date or strftime format) -$rcmail_config['date_format'] = 'Y-m-d'; - -// give this choice of date formats to the user to select from -$rcmail_config['date_formats'] = array('Y-m-d', 'd-m-Y', 'Y/m/d', 'm/d/Y', 'd/m/Y', 'd.m.Y', 'j.n.Y'); - -// use this format for time display (date or strftime format) -$rcmail_config['time_format'] = 'H:i'; - -// give this choice of time formats to the user to select from -$rcmail_config['time_formats'] = array('G:i', 'H:i', 'g:i a', 'h:i A'); - -// use this format for short date display (derived from date_format and time_format) -$rcmail_config['date_short'] = 'D H:i'; - -// use this format for detailed date/time formatting (derived from date_format and time_format) -$rcmail_config['date_long'] = 'Y-m-d H:i'; - -// store draft message is this mailbox -// leave blank if draft messages should not be stored -// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) -$rcmail_config['drafts_mbox'] = 'Drafts'; - -// store spam messages in this mailbox -// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) -$rcmail_config['junk_mbox'] = 'Junk'; - -// store sent message is this mailbox -// leave blank if sent messages should not be stored -// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) -$rcmail_config['sent_mbox'] = 'Sent'; - -// move messages to this folder when deleting them -// leave blank if they should be deleted directly -// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) -$rcmail_config['trash_mbox'] = 'Trash'; - -// display these folders separately in the mailbox list. -// these folders will also be displayed with localized names -// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) -$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash'); - -// automatically create the above listed default folders on first login -$rcmail_config['create_default_folders'] = false; - -// protect the default folders from renames, deletes, and subscription changes -$rcmail_config['protect_default_folders'] = true; - -// if in your system 0 quota means no limit set this option to true -$rcmail_config['quota_zero_as_unlimited'] = false; - -// Make use of the built-in spell checker. It is based on GoogieSpell. -// Since Google only accepts connections over https your PHP installatation -// requires to be compiled with Open SSL support -$rcmail_config['enable_spellcheck'] = true; - -// Enables spellchecker exceptions dictionary. -// Setting it to 'shared' will make the dictionary shared by all users. -$rcmail_config['spellcheck_dictionary'] = false; - -// Set the spell checking engine. 'googie' is the default. 'pspell' is also available, -// but requires the Pspell extensions. When using Nox Spell Server, also set 'googie' here. -$rcmail_config['spellcheck_engine'] = 'pspell'; - -// For a locally installed Nox Spell Server, please specify the URI to call it. -// Get Nox Spell Server from http://orangoo.com/labs/?page_id=72 -// Leave empty to use the Google spell checking service, what means -// that the message content will be sent to Google in order to check spelling -$rcmail_config['spellcheck_uri'] = ''; - -// These languages can be selected for spell checking. -// Configure as a PHP style hash array: array('en'=>'English', 'de'=>'Deutsch'); -// Leave empty for default set of available language. -$rcmail_config['spellcheck_languages'] = NULL; - -// Makes that words with all letters capitalized will be ignored (e.g. GOOGLE) -$rcmail_config['spellcheck_ignore_caps'] = false; - -// Makes that words with numbers will be ignored (e.g. g00gle) -$rcmail_config['spellcheck_ignore_nums'] = false; - -// Makes that words with symbols will be ignored (e.g. g@@gle) -$rcmail_config['spellcheck_ignore_syms'] = false; - -// Use this char/string to separate recipients when composing a new message -$rcmail_config['recipients_separator'] = ','; - -// don't let users set pagesize to more than this value if set -$rcmail_config['max_pagesize'] = 200; - -// Minimal value of user's 'keep_alive' setting (in seconds) -// Must be less than 'session_lifetime' -$rcmail_config['min_keep_alive'] = 60; - -// Enables files upload indicator. Requires APC installed and enabled apc.rfc1867 option. -// By default refresh time is set to 1 second. You can set this value to true -// or any integer value indicating number of seconds. -$rcmail_config['upload_progress'] = false; - -// Specifies for how many seconds the Undo button will be available -// after object delete action. Currently used with supporting address book sources. -// Setting it to 0, disables the feature. -$rcmail_config['undo_timeout'] = 0; - -<% if roundcube_login_info != false %> -// Login_info plugin -$rcmail_config['login_info'] = << - <%= roundcube_login_info %> - -EOT; -<% end -%> - -// ---------------------------------- -// ADDRESSBOOK SETTINGS -// ---------------------------------- - -// This indicates which type of address book to use. Possible choises: -// 'sql' (default) and 'ldap'. -// If set to 'ldap' then it will look at using the first writable LDAP -// address book as the primary address book and it will not display the -// SQL address book in the 'Address Book' view. -$rcmail_config['address_book_type'] = 'sql'; - -// In order to enable public ldap search, configure an array like the Verisign -// example further below. if you would like to test, simply uncomment the example. -// Array key must contain only safe characters, ie. a-zA-Z0-9_ -$rcmail_config['ldap_public'] = array(); - -// If you are going to use LDAP for individual address books, you will need to -// set 'user_specific' to true and use the variables to generate the appropriate DNs to access it. -// -// The recommended directory structure for LDAP is to store all the address book entries -// under the users main entry, e.g.: -// -// o=root -// ou=people -// uid=user@domain -// mail=contact@contactdomain -// -// So the base_dn would be uid=%fu,ou=people,o=root -// The bind_dn would be the same as based_dn or some super user login. -/* -* example config for Verisign directory -* -$rcmail_config['ldap_public']['Verisign'] = array( -'name' => 'Verisign.com', -// Replacement variables supported in host names: -// %h - user's IMAP hostname -// %n - http hostname ($_SERVER['SERVER_NAME']) -// %d - domain (http hostname without the first part) -// %z - IMAP domain (IMAP hostname without the first part) -// For example %n = mail.domain.tld, %d = domain.tld -'hosts' => array('directory.verisign.com'), -'port' => 389, -'use_tls' => false, -'ldap_version' => 3, // using LDAPv3 -'user_specific' => false, // If true the base_dn, bind_dn and bind_pass default to the user's IMAP login. -// %fu - The full username provided, assumes the username is an email -// address, uses the username_domain value if not an email address. -// %u - The username prior to the '@'. -// %d - The domain name after the '@'. -// %dc - The domain name hierarchal string e.g. "dc=test,dc=domain,dc=com" -// %dn - DN found by ldap search when search_filter/search_base_dn are used -'base_dn' => '', -'bind_dn' => '', -'bind_pass' => '', -// It's possible to bind for an individual address book -// The login name is used to search for the DN to bind with -'search_base_dn' => '', -'search_filter' => '', // e.g. '(&(objectClass=posixAccount)(uid=%u))' -// DN and password to bind as before searching for bind DN, if anonymous search is not allowed -'search_bind_dn' => '', -'search_bind_pw' => '', -// Default for %dn variable if search doesn't return DN value -'search_dn_default' => '', -// Optional authentication identifier to be used as SASL authorization proxy -// bind_dn need to be empty -'auth_cid' => '', -// SASL authentication method (for proxy auth), e.g. DIGEST-MD5 -'auth_method' => '', -// Indicates if the addressbook shall be hidden from the list. -// With this option enabled you can still search/view contacts. -'hidden' => false, -// Indicates if the addressbook shall not list contacts but only allows searching. -'searchonly' => false, -// Indicates if we can write to the LDAP directory or not. -// If writable is true then these fields need to be populated: -// LDAP_Object_Classes, required_fields, LDAP_rdn -'writable' => false, -// To create a new contact these are the object classes to specify -// (or any other classes you wish to use). -'LDAP_Object_Classes' => array('top', 'inetOrgPerson'), -// The RDN field that is used for new entries, this field needs -// to be one of the search_fields, the base of base_dn is appended -// to the RDN to insert into the LDAP directory. -'LDAP_rdn' => 'mail', -// The required fields needed to build a new contact as required by -// the object classes (can include additional fields not required by the object classes). -'required_fields' => array('cn', 'sn', 'mail'), -'search_fields' => array('mail', 'cn'), // fields to search in -// mapping of contact fields to directory attributes -'fieldmap' => array( -// Roundcube => LDAP -'name' => 'cn', -'surname' => 'sn', -'firstname' => 'givenName', -'email' => 'mail', -'phone:home' => 'homePhone', -'phone:work' => 'telephoneNumber', -'phone:mobile' => 'mobile', -'street' => 'street', -'zipcode' => 'postalCode', -'locality' => 'l', -'country' => 'c', -'organization' => 'o', -), -'sort' => 'cn', // The field to sort the listing by. -'scope' => 'sub', // search mode: sub|base|list -'filter' => '(objectClass=inetOrgPerson)', // used for basic listing (if not empty) and will be &'d with search queries. example: status=act -'fuzzy_search' => true, // server allows wildcard search -'vlv' => false, // Enable Virtual List View to more efficiently fetch paginated data (if server supports it) -'numsub_filter' => '(objectClass=organizationalUnit)', // with VLV, we also use numSubOrdinates to query the total number of records. Set this filter to get all numSubOrdinates attributes for counting -'sizelimit' => '0', // Enables you to limit the count of entries fetched. Setting this to 0 means no limit. -'timelimit' => '0', // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit. -'referrals' => true|false, // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups - -// definition for contact groups (uncomment if no groups are supported) -// for the groups base_dn, the user replacements %fu, %u, $d and %dc work as for base_dn (see above) -// if the groups base_dn is empty, the contact base_dn is used for the groups as well -// -> in this case, assure that groups and contacts are separated due to the concernig filters! -'groups' => array( -'base_dn' => '', -'filter' => '(objectClass=groupOfNames)', -'object_classes' => array("top", "groupOfNames"), -'member_attr' => 'member', // name of the member attribute, e.g. uniqueMember -'name_attr' => 'cn', // attribute to be used as group name -), -); -*/ - -// An ordered array of the ids of the addressbooks that should be searched -// when populating address autocomplete fields server-side. ex: array('sql','Verisign'); -$rcmail_config['autocomplete_addressbooks'] = array('sql'); - -// The minimum number of characters required to be typed in an autocomplete field -// before address books will be searched. Most useful for LDAP directories that -// may need to do lengthy results building given overly-broad searches -$rcmail_config['autocomplete_min_length'] = 1; - -// Number of parallel autocomplete requests. -// If there's more than one address book, n parallel (async) requests will be created, -// where each request will search in one address book. By default (0), all address -// books are searched in one request. -$rcmail_config['autocomplete_threads'] = 0; - -// Max. numer of entries in autocomplete popup. Default: 15. -$rcmail_config['autocomplete_max'] = 15; - -// show address fields in this order -// available placeholders: {street}, {locality}, {zipcode}, {country}, {region} -$rcmail_config['address_template'] = '{street}
{locality} {zipcode}
{country} {region}'; - -// Matching mode for addressbook search (including autocompletion) -// 0 - partial (*abc*), default -// 1 - strict (abc) -// 2 - prefix (abc*) -// Note: For LDAP sources fuzzy_search must be enabled to use 'partial' or 'prefix' mode -$rcmail_config['addressbook_search_mode'] = 0; - -// ---------------------------------- -// USER PREFERENCES -// ---------------------------------- - -// Use this charset as fallback for message decoding -$rcmail_config['default_charset'] = 'UTF-8'; - -// skin name: folder from skins/ -$rcmail_config['skin'] = 'default'; - -// show up to X items in list view -$rcmail_config['pagesize'] = 40; - -// use this timezone to display date/time -$rcmail_config['timezone'] = 'auto'; - -// is daylight saving On? Default: (bool)date('I'); -$rcmail_config['dst_active'] = null; - -// prefer displaying HTML messages -$rcmail_config['prefer_html'] = true; - -// display remote inline images -// 0 - Never, always ask -// 1 - Ask if sender is not in address book -// 2 - Always show inline images -$rcmail_config['show_images'] = 0; - -// compose html formatted messages by default -// 0 - never, 1 - always, 2 - on reply to HTML message only -$rcmail_config['htmleditor'] = 0; - -// show pretty dates as standard -$rcmail_config['prettydate'] = true; - -// save compose message every 300 seconds (5min) -$rcmail_config['draft_autosave'] = 300; - -// default setting if preview pane is enabled -$rcmail_config['preview_pane'] = false; - -// Mark as read when viewed in preview pane (delay in seconds) -// Set to -1 if messages in preview pane should not be marked as read -$rcmail_config['preview_pane_mark_read'] = 0; - -// Clear Trash on logout -$rcmail_config['logout_purge'] = false; - -// Compact INBOX on logout -$rcmail_config['logout_expunge'] = false; - -// Display attached images below the message body -$rcmail_config['inline_images'] = true; - -// Encoding of long/non-ascii attachment names: -// 0 - Full RFC 2231 compatible -// 1 - RFC 2047 for 'name' and RFC 2231 for 'filename' parameter (Thunderbird's default) -// 2 - Full 2047 compatible -$rcmail_config['mime_param_folding'] = 1; - -// Set true if deleted messages should not be displayed -// This will make the application run slower -$rcmail_config['skip_deleted'] = false; - -// Set true to Mark deleted messages as read as well as deleted -// False means that a message's read status is not affected by marking it as deleted -$rcmail_config['read_when_deleted'] = true; - -// Set to true to never delete messages immediately -// Use 'Purge' to remove messages marked as deleted -$rcmail_config['flag_for_deletion'] = false; - -// Default interval for keep-alive/check-recent requests (in seconds) -// Must be greater than or equal to 'min_keep_alive' and less than 'session_lifetime' -$rcmail_config['keep_alive'] = 60; - -// If true all folders will be checked for recent messages -$rcmail_config['check_all_folders'] = false; - -// If true, after message delete/move, the next message will be displayed -$rcmail_config['display_next'] = false; - -// 0 - Do not expand threads -// 1 - Expand all threads automatically -// 2 - Expand only threads with unread messages -$rcmail_config['autoexpand_threads'] = 0; - -// When replying place cursor above original message (top posting) -$rcmail_config['top_posting'] = false; - -// When replying strip original signature from message -$rcmail_config['strip_existing_sig'] = true; - -// Show signature: -// 0 - Never -// 1 - Always -// 2 - New messages only -// 3 - Forwards and Replies only -$rcmail_config['show_sig'] = 1; - -// When replying or forwarding place sender's signature above existing message -$rcmail_config['sig_above'] = false; - -// Use MIME encoding (quoted-printable) for 8bit characters in message body -$rcmail_config['force_7bit'] = false; - -// Defaults of the search field configuration. -// The array can contain a per-folder list of header fields which should be considered when searching -// The entry with key '*' stands for all folders which do not have a specific list set. -// Please note that folder names should to be in sync with $rcmail_config['default_imap_folders'] -$rcmail_config['search_mods'] = null; // Example: array('*' => array('subject'=>1, 'from'=>1), 'Sent' => array('subject'=>1, 'to'=>1)); - -// Defaults of the addressbook search field configuration. -$rcmail_config['addressbook_search_mods'] = null; // Example: array('name'=>1, 'firstname'=>1, 'surname'=>1, 'email'=>1, '*'=>1); - -// 'Delete always' -// This setting reflects if mail should be always deleted -// when moving to Trash fails. This is necessary in some setups -// when user is over quota and Trash is included in the quota. -$rcmail_config['delete_always'] = false; - -// Behavior if a received message requests a message delivery notification (read receipt) -// 0 = ask the user, 1 = send automatically, 2 = ignore (never send or ask) -// 3 = send automatically if sender is in addressbook, otherwise ask the user -// 4 = send automatically if sender is in addressbook, otherwise ignore -$rcmail_config['mdn_requests'] = 0; - -// Return receipt checkbox default state -$rcmail_config['mdn_default'] = 0; - -// Delivery Status Notification checkbox default state -$rcmail_config['dsn_default'] = 0; - -// Place replies in the folder of the message being replied to -$rcmail_config['reply_same_folder'] = false; - -// Sets default mode of Forward feature to "forward as attachment" -$rcmail_config['forward_attachment'] = false; - -// Defines address book (internal index) to which new contacts will be added -// By default it is the first writeable addressbook. -// Note: Use '0' for built-in address book. -$rcmail_config['default_addressbook'] = null; - -// Enables spell checking before sending a message. -$rcmail_config['spellcheck_before_send'] = false; - -// Skip alternative email addresses in autocompletion (show one address per contact) -$rcmail_config['autocomplete_single'] = false; - -// end of config file diff --git a/templates/sympa/transport_regexp.erb b/templates/sympa/transport_regexp.erb new file mode 100644 index 0000000..1e32e2a --- /dev/null +++ b/templates/sympa/transport_regexp.erb @@ -0,0 +1,2 @@ +/^.*+owner\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ sympabounce: +/^.*\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ sympa: diff --git a/templates/sympa/virtual_regexp.erb b/templates/sympa/virtual_regexp.erb new file mode 100644 index 0000000..f5883d7 --- /dev/null +++ b/templates/sympa/virtual_regexp.erb @@ -0,0 +1 @@ +/^(.*)-owner\@<%= subdomain.gsub(/\./, '\.') %>\.(.*)$/ $1+owner@<%= subdomain %>.$2 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 index 0000000..daa4b06 --- /dev/null +++ b/templates/virtual/database/mysql_virtual_alias_domain_catchall_maps.cf.erb @@ -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 index 0000000..9f16c20 --- /dev/null +++ b/templates/virtual/database/mysql_virtual_alias_domain_mailbox_maps.cf.erb @@ -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 index 0000000..1edf8e3 --- /dev/null +++ b/templates/virtual/database/mysql_virtual_alias_domain_maps.cf.erb @@ -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 index 0000000..0553bc4 --- /dev/null +++ b/templates/virtual/database/mysql_virtual_alias_maps.cf.erb @@ -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 diff --git a/templates/virtual/database/mysql_virtual_domains_maps.cf.erb b/templates/virtual/database/mysql_virtual_domains_maps.cf.erb new file mode 100644 index 0000000..cb1322f --- /dev/null +++ b/templates/virtual/database/mysql_virtual_domains_maps.cf.erb @@ -0,0 +1,9 @@ +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 +#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1' +#expansion_limit = 100 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 index 0000000..2b9f837 --- /dev/null +++ b/templates/virtual/database/mysql_virtual_mailbox_limit_maps.cf.erb @@ -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 index 0000000..c90938f --- /dev/null +++ b/templates/virtual/database/mysql_virtual_mailbox_maps.cf.erb @@ -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 diff --git a/templates/virtual/postfixadmin/config.inc.php.erb b/templates/virtual/postfixadmin/config.inc.php.erb new file mode 100644 index 0000000..404dcb3 --- /dev/null +++ b/templates/virtual/postfixadmin/config.inc.php.erb @@ -0,0 +1,444 @@ +'; + +// Postfix Admin Path +// Set the location of your Postfix Admin installation here. +// YOU MUST ENTER THE COMPLETE URL e.g. http://domain.tld/postfixadmin +$CONF['postfix_admin_url'] = ''; + +// shouldn't need changing. +$CONF['postfix_admin_path'] = dirname(__FILE__); + +// Language config +// Language files are located in './languages', change as required.. +$CONF['default_language'] = 'en'; + +// Database Config +// mysql = MySQL 3.23 and 4.0, 4.1 or 5 +// mysqli = MySQL 4.1+ +// pgsql = PostgreSQL +$CONF['database_type'] = 'mysql'; +$CONF['database_host'] = '<%= database_host %>'; +$CONF['database_user'] = '<%= database_user %>'; +$CONF['database_password'] = '<%= database_password %>'; +$CONF['database_name'] = '<%= database_name %>'; +$CONF['database_prefix'] = ''; +// If you need to specify a different port for a MYSQL database connection, use e.g. +// $CONF['database_host'] = '172.30.33.66:3308'; +// If you need to specify a different port for POSTGRESQL database connection +// uncomment and change the following +// $CONF['database_port'] = '5432'; + + +// Here, if you need, you can customize table names. +$CONF['database_prefix'] = ''; +$CONF['database_tables'] = array ( + 'admin' => 'admin', + 'alias' => 'alias', + 'alias_domain' => 'alias_domain', + 'config' => 'config', + 'domain' => 'domain', + 'domain_admins' => 'domain_admins', + 'fetchmail' => 'fetchmail', + 'log' => 'log', + 'mailbox' => 'mailbox', + 'vacation' => 'vacation', + 'vacation_notification' => 'vacation_notification', + 'quota' => 'quota', + 'quota2' => 'quota2', +); + +// Site Admin +// Define the Site Admins email address below. +// This will be used to send emails from to create mailboxes. +$CONF['admin_email'] = 'postmaster@<%= domain %>'; + +// Mail Server +// Hostname (FQDN) of your mail server. +// This is used to send email to Postfix in order to create mailboxes. +$CONF['smtp_server'] = 'localhost'; +$CONF['smtp_port'] = '25'; + +// Encrypt +// In what way do you want the passwords to be crypted? +// md5crypt = internal postfix admin md5 +// md5 = md5 sum of the password +// system = whatever you have set as your PHP system default +// cleartext = clear text passwords (ouch!) +// mysql_encrypt = useful for PAM integration +// authlib = support for courier-authlib style passwords +// dovecot:CRYPT-METHOD = use dovecotpw -s 'CRYPT-METHOD'. Example: dovecot:CRAM-MD5 +$CONF['encrypt'] = 'md5crypt'; + +// In what flavor should courier-authlib style passwords be enrypted? +// md5 = {md5} + base64 encoded md5 hash +// md5raw = {md5raw} + plain encoded md5 hash +// SHA = {SHA} + base64-encoded sha1 hash +// crypt = {crypt} + Standard UNIX DES-enrypted with 2-character salt +$CONF['authlib_default_flavor'] = 'md5raw'; + +// If you use the dovecot encryption method: where is the dovecotpw binary located? +$CONF['dovecotpw'] = "/usr/sbin/dovecotpw"; + +// Minimum length required for passwords. Postfixadmin will not +// allow users to set passwords which are shorter than this value. +$CONF['min_password_length'] = 5; + +// Generate Password +// Generate a random password for a mailbox or admin and display it. +// If you want to automagically generate paswords set this to 'YES'. +$CONF['generate_password'] = 'NO'; + +// Show Password +// Always show password after adding a mailbox or admin. +// If you want to always see what password was set set this to 'YES'. +$CONF['show_password'] = 'NO'; + +// Page Size +// Set the number of entries that you would like to see +// in one page. +$CONF['page_size'] = '10'; + +// Default Aliases +// The default aliases that need to be created for all domains. +$CONF['default_aliases'] = array ( + 'abuse' => 'abuse@<%= domain %>', + 'hostmaster' => 'hostmaster@<%= domain %>', + 'postmaster' => 'postmaster@<%= domain %>', + 'webmaster' => 'webmaster@<%= domain %>' +); + +// Mailboxes +// If you want to store the mailboxes per domain set this to 'YES'. +// Examples: +// YES: /usr/local/virtual/domain.tld/username@domain.tld +// NO: /usr/local/virtual/username@domain.tld +$CONF['domain_path'] = 'NO'; +// If you don't want to have the domain in your mailbox set this to 'NO'. +// Examples: +// YES: /usr/local/virtual/domain.tld/username@domain.tld +// NO: /usr/local/virtual/domain.tld/username +// Note: If $CONF['domain_path'] is set to NO, this setting will be forced to YES. +$CONF['domain_in_mailbox'] = 'YES'; +// If you want to define your own function to generate a maildir path set this to the name of the function. +// Notes: +// - this configuration directive will override both domain_path and domain_in_mailbox +// - the maildir_name_hook() function example is present below, commented out +// - if the function does not exist the program will default to the above domain_path and domain_in_mailbox settings +$CONF['maildir_name_hook'] = 'NO'; + +/* + maildir_name_hook example function + + Called by create-mailbox.php if $CONF['maildir_name_hook'] == '' + - allows for customized maildir paths determined by a custom function + - the example below will prepend a single-character directory to the + beginning of the maildir, splitting domains more or less evenly over + 36 directories for improved filesystem performance with large numbers + of domains. + + Returns: maildir path + ie. I/example.com/user/ +*/ +/* +function maildir_name_hook($domain, $user) { + $chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + $dir_index = hexdec(substr(md5($domain), 28)) % strlen($chars); + $dir = substr($chars, $dir_index, 1); + return sprintf("%s/%s/%s/", $dir, $domain, $user); +} +*/ + + +// Default Domain Values +// Specify your default values below. Quota in MB. +$CONF['aliases'] = '10'; +$CONF['mailboxes'] = '10'; +$CONF['maxquota'] = '10'; + +// Quota +// When you want to enforce quota for your mailbox users set this to 'YES'. +$CONF['quota'] = 'NO'; +// You can either use '1024000' or '1048576' +$CONF['quota_multiplier'] = '1024000'; + +// Transport +// If you want to define additional transport options for a domain set this to 'YES'. +// Read the transport file of the Postfix documentation. +$CONF['transport'] = 'NO'; +// Transport options +// If you want to define additional transport options put them in array below. +$CONF['transport_options'] = array ( + 'virtual', // for virtual accounts + 'local', // for system accounts + 'relay' // for backup mx +); +// Transport default +// You should define default transport. It must be in array above. +$CONF['transport_default'] = 'virtual'; + +// Virtual Vacation +// If you want to use virtual vacation for you mailbox users set this to 'YES'. +// NOTE: Make sure that you install the vacation module. (See VIRTUAL-VACATION/) +$CONF['vacation'] = 'NO'; +// This is the autoreply domain that you will need to set in your Postfix +// transport maps to handle virtual vacations. It does not need to be a +// real domain (i.e. you don't need to setup DNS for it). +$CONF['vacation_domain'] = 'autoreply.<%= domain %>'; + +// Vacation Control +// If you want users to take control of vacation set this to 'YES'. +$CONF['vacation_control'] ='YES'; + +// Vacation Control for admins +// Set to 'YES' if your domain admins should be able to edit user vacation. +$CONF['vacation_control_admin'] = 'YES'; + +// Alias Control +// Postfix Admin inserts an alias in the alias table for every mailbox it creates. +// The reason for this is that when you want catch-all and normal mailboxes +// to work you need to have the mailbox replicated in the alias table. +// If you want to take control of these aliases as well set this to 'YES'. +$CONF['alias_control'] = 'NO'; + +// Alias Control for admins +// Set to 'NO' if your domain admins shouldn't be able to edit user aliases. +$CONF['alias_control_admin'] = 'NO'; + +// Special Alias Control +// Set to 'NO' if your domain admins shouldn't be able to edit default aliases. +$CONF['special_alias_control'] = 'NO'; + +// Alias Goto Field Limit +// Set the max number of entries that you would like to see +// in one 'goto' field in overview, the rest will be hidden and "[and X more...]" will be added. +// '0' means no limits. +$CONF['alias_goto_limit'] = '0'; + +// Alias Domains +// Alias domains allow to "mirror" aliases and mailboxes to another domain. This makes +// configuration easier if you need the same set of aliases on multiple domains, but +// also requires postfix to do more database queries. +// Note: If you update from 2.2.x or earlier, you will have to update your postfix configuration. +// Set to 'NO' to disable alias domains. +$CONF['alias_domain'] = 'YES'; + +// Backup +// If you don't want backup tab set this to 'NO'; +$CONF['backup'] = 'YES'; + +// Send Mail +// If you don't want sendmail tab set this to 'NO'; +$CONF['sendmail'] = 'YES'; + +// Logging +// If you don't want logging set this to 'NO'; +$CONF['logging'] = 'YES'; + +// Fetchmail +// If you don't want fetchmail tab set this to 'NO'; +$CONF['fetchmail'] = 'YES'; + +// fetchmail_extra_options allows users to specify any fetchmail options and any MDA +// (it will even accept 'rm -rf /' as MDA!) +// This should be set to NO, except if you *really* trust *all* your users. +$CONF['fetchmail_extra_options'] = 'NO'; + +// Header +$CONF['show_header_text'] = 'NO'; +$CONF['header_text'] = ':: Postfix Admin ::'; + +// link to display under 'Main' menu when logged in as a user. +$CONF['user_footer_link'] = "http://<%= domain %>/main"; + +// Footer +// Below information will be on all pages. +// If you don't want the footer information to appear set this to 'NO'. +$CONF['show_footer_text'] = 'YES'; +$CONF['footer_text'] = 'Return to <%= domain %>'; +$CONF['footer_link'] = 'http://<%= domain %>'; + +// Welcome Message +// This message is send to every newly created mailbox. +// Change the text between EOM. +$CONF['welcome_text'] = <<= 1.2, set this to yes. +// Note about dovecot config: table "quota" is for 1.0 & 1.1, table "quota2" is for dovecot 1.2 and newer +$CONF['new_quota_table'] = 'NO'; + +// +// Normally, the TCP port number does not have to be specified. +// $CONF['create_mailbox_subdirs_hostport']=143; +// +// If you have trouble connecting to the IMAP-server, then specify +// a value for $CONF['create_mailbox_subdirs_hostoptions']. These +// are some examples to experiment with: +// $CONF['create_mailbox_subdirs_hostoptions']=array('notls'); +// $CONF['create_mailbox_subdirs_hostoptions']=array('novalidate-cert','norsh'); +// See also the "Optional flags for names" table at +// http://www.php.net/manual/en/function.imap-open.php + + +// Theme Config +// Specify your own logo and CSS file +$CONF['theme_logo'] = 'images/logo-default.png'; +$CONF['theme_css'] = 'css/default.css'; + +// XMLRPC Interface. +// This should be only of use if you wish to use e.g the +// Postfixadmin-Squirrelmail package +// change to boolean true to enable xmlrpc +$CONF['xmlrpc_enabled'] = false; + + +// If you want to keep most settings at default values and/or want to ensure +// that future updates work without problems, you can use a separate config +// file (config.local.php) instead of editing this file and override some +// settings there. +if (file_exists(dirname(__FILE__) . '/config.local.php')) { + include(dirname(__FILE__) . '/config.local.php'); +} + +// +// END OF CONFIG FILE +// +/* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */ diff --git a/templates/virtual/roundcube/main.inc.php.erb b/templates/virtual/roundcube/main.inc.php.erb new file mode 100644 index 0000000..5582ce0 --- /dev/null +++ b/templates/virtual/roundcube/main.inc.php.erb @@ -0,0 +1,802 @@ +/sendmail or to syslog +$rcmail_config['smtp_log'] = true; + +// Log successful logins to /userlogins or to syslog +$rcmail_config['log_logins'] = false; + +// Log session authentication errors to /session or to syslog +$rcmail_config['log_session'] = false; + +// Log SQL queries to /sql or to syslog +$rcmail_config['sql_debug'] = false; + +// Log IMAP conversation to /imap or to syslog +$rcmail_config['imap_debug'] = false; + +// Log LDAP conversation to /ldap or to syslog +$rcmail_config['ldap_debug'] = false; + +// Log SMTP conversation to /smtp or to syslog +$rcmail_config['smtp_debug'] = false; + +// ---------------------------------- +// IMAP +// ---------------------------------- + +// the mail host chosen to perform the log-in +// leave blank to show a textbox at login, give a list of hosts +// to display a pulldown menu or set one host as string. +// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls:// +// Supported replacement variables: +// %n - http hostname ($_SERVER['SERVER_NAME']) +// %d - domain (http hostname without the first part) +// %s - domain name after the '@' from e-mail address provided at login screen +// For example %n = mail.domain.tld, %d = domain.tld +$rcmail_config['default_host'] = 'localhost'; + +// TCP port used for IMAP connections +$rcmail_config['default_port'] = 143; + +// IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use +// best server supported one) +$rcmail_config['imap_auth_type'] = null; + +// If you know your imap's folder delimiter, you can specify it here. +// Otherwise it will be determined automatically +$rcmail_config['imap_delimiter'] = null; + +// If IMAP server doesn't support NAMESPACE extension, but you're +// using shared folders or personal root folder is non-empty, you'll need to +// set these options. All can be strings or arrays of strings. +// Folders need to be ended with directory separator, e.g. "INBOX." +// (special directory "~" is an exception to this rule) +// These can be used also to overwrite server's namespaces +$rcmail_config['imap_ns_personal'] = null; +$rcmail_config['imap_ns_other'] = null; +$rcmail_config['imap_ns_shared'] = null; + +// By default IMAP capabilities are readed after connection to IMAP server +// In some cases, e.g. when using IMAP proxy, there's a need to refresh the list +// after login. Set to True if you've got this case. +$rcmail_config['imap_force_caps'] = false; + +// By default list of subscribed folders is determined using LIST-EXTENDED +// extension if available. Some servers (dovecot 1.x) returns wrong results +// for shared namespaces in this case. http://trac.roundcube.net/ticket/1486225 +// Enable this option to force LSUB command usage instead. +$rcmail_config['imap_force_lsub'] = false; + +// IMAP connection timeout, in seconds. Default: 0 (no limit) +$rcmail_config['imap_timeout'] = 0; + +// Optional IMAP authentication identifier to be used as authorization proxy +$rcmail_config['imap_auth_cid'] = null; + +// Optional IMAP authentication password to be used for imap_auth_cid +$rcmail_config['imap_auth_pw'] = null; + +// Type of IMAP indexes cache. Supported values: 'db', 'apc' and 'memcache'. +$rcmail_config['imap_cache'] = null; + +// Enables messages cache. Only 'db' cache is supported. +$rcmail_config['messages_cache'] = false; + + +// ---------------------------------- +// SMTP +// ---------------------------------- + +// SMTP server host (for sending mails). +// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls:// +// If left blank, the PHP mail() function is used +// Supported replacement variables: +// %h - user's IMAP hostname +// %n - http hostname ($_SERVER['SERVER_NAME']) +// %d - domain (http hostname without the first part) +// %z - IMAP domain (IMAP hostname without the first part) +// For example %n = mail.domain.tld, %d = domain.tld +$rcmail_config['smtp_server'] = ''; + +// SMTP port (default is 25; 465 for SSL) +$rcmail_config['smtp_port'] = 25; + +// SMTP username (if required) if you use %u as the username Roundcube +// will use the current username for login +$rcmail_config['smtp_user'] = ''; + +// SMTP password (if required) if you use %p as the password Roundcube +// will use the current user's password for login +$rcmail_config['smtp_pass'] = ''; + +// SMTP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use +// best server supported one) +$rcmail_config['smtp_auth_type'] = ''; + +// Optional SMTP authentication identifier to be used as authorization proxy +$rcmail_config['smtp_auth_cid'] = null; + +// Optional SMTP authentication password to be used for smtp_auth_cid +$rcmail_config['smtp_auth_pw'] = null; + +// SMTP HELO host +// Hostname to give to the remote server for SMTP 'HELO' or 'EHLO' messages +// Leave this blank and you will get the server variable 'server_name' or +// localhost if that isn't defined. +$rcmail_config['smtp_helo_host'] = ''; + +// SMTP connection timeout, in seconds. Default: 0 (no limit) +$rcmail_config['smtp_timeout'] = 0; + +// ---------------------------------- +// SYSTEM +// ---------------------------------- + +// THIS OPTION WILL ALLOW THE INSTALLER TO RUN AND CAN EXPOSE SENSITIVE CONFIG DATA. +// ONLY ENABLE IT IF YOU'RE REALLY SURE WHAT YOU'RE DOING! +$rcmail_config['enable_installer'] = false; + +// use this folder to store log files (must be writeable for apache user) +// This is used by the 'file' log driver. +$rcmail_config['log_dir'] = 'logs/'; + +// use this folder to store temp files (must be writeable for apache user) +$rcmail_config['temp_dir'] = 'temp/'; + +// lifetime of message cache +// possible units: s, m, h, d, w +$rcmail_config['message_cache_lifetime'] = '10d'; + +// enforce connections over https +// with this option enabled, all non-secure connections will be redirected. +// set the port for the ssl connection as value of this option if it differs from the default 443 +$rcmail_config['force_https'] = false; + +// tell PHP that it should work as under secure connection +// even if it doesn't recognize it as secure ($_SERVER['HTTPS'] is not set) +// e.g. when you're running Roundcube behind a https proxy +$rcmail_config['use_https'] = false; + +// Allow browser-autocompletion on login form. +// 0 - disabled, 1 - username and host only, 2 - username, host, password +$rcmail_config['login_autocomplete'] = 0; + +// If users authentication is not case sensitive this must be enabled. +// You can also use it to force conversion of logins to lower case. +// After enabling it all user records need to be updated, e.g. with query: +// UPDATE users SET username = LOWER(username); +$rcmail_config['login_lc'] = false; + +// automatically create a new Roundcube user when log-in the first time. +// a new user will be created once the IMAP login succeeds. +// set to false if only registered users can use this service +$rcmail_config['auto_create_user'] = true; + +// replace Roundcube logo with this image +// specify an URL relative to the document root of this Roundcube installation +$rcmail_config['skin_logo'] = <%= roundcube_logo %>; + +// Includes should be interpreted as PHP files +$rcmail_config['skin_include_php'] = false; + +// Session lifetime in minutes +// must be greater than 'keep_alive'/60 +$rcmail_config['session_lifetime'] = 10; + +// session domain: .example.org +$rcmail_config['session_domain'] = ''; + +// session name. Default: 'roundcube_sessid' +$rcmail_config['session_name'] = null; + +// Backend to use for session storage. Can either be 'db' (default) or 'memcache' +// If set to memcache, a list of servers need to be specified in 'memcache_hosts' +// Make sure the Memcache extension (http://pecl.php.net/package/memcache) version >= 2.0.0 is installed +$rcmail_config['session_storage'] = 'db'; + +// Use these hosts for accessing memcached +// Define any number of hosts in the form hostname:port +$rcmail_config['memcache_hosts'] = null; // e.g. array( 'localhost:11211', '192.168.1.12:11211' ); + +// check client IP in session athorization +$rcmail_config['ip_check'] = false; + +// check referer of incoming requests +$rcmail_config['referer_check'] = false; + +// X-Frame-Options HTTP header value sent to prevent from Clickjacking. +// Possible values: sameorigin|deny. Set to false in order to disable sending them +$rcmail_config['x_frame_options'] = 'sameorigin'; + +// this key is used to encrypt the users imap password which is stored +// in the session record (and the client cookie if remember password is enabled). +// please provide a string of exactly 24 chars. +$rcmail_config['des_key'] = '<%= roundcube_des_key %>'; + +// Automatically add this domain to user names for login +// Only for IMAP servers that require full e-mail addresses for login +// Specify an array with 'host' => 'domain' values to support multiple hosts +// Supported replacement variables: +// %h - user's IMAP hostname +// %n - http hostname ($_SERVER['SERVER_NAME']) +// %d - domain (http hostname without the first part) +// %z - IMAP domain (IMAP hostname without the first part) +// For example %n = mail.domain.tld, %d = domain.tld +$rcmail_config['username_domain'] = ''; + +// This domain will be used to form e-mail addresses of new users +// Specify an array with 'host' => 'domain' values to support multiple hosts +// Supported replacement variables: +// %h - user's IMAP hostname +// %n - http hostname ($_SERVER['SERVER_NAME']) +// %d - domain (http hostname without the first part) +// %z - IMAP domain (IMAP hostname without the first part) +// For example %n = mail.domain.tld, %d = domain.tld +$rcmail_config['mail_domain'] = ''; + +// Password charset. +// Use it if your authentication backend doesn't support UTF-8. +// Defaults to ISO-8859-1 for backward compatibility +$rcmail_config['password_charset'] = 'ISO-8859-1'; + +// How many seconds must pass between emails sent by a user +$rcmail_config['sendmail_delay'] = 0; + +// Maximum number of recipients per message. Default: 0 (no limit) +$rcmail_config['max_recipients'] = 0; + +// Maximum allowednumber of members of an address group. Default: 0 (no limit) +// If 'max_recipients' is set this value should be less or equal +$rcmail_config['max_group_members'] = 0; + +// add this user-agent to message headers when sending +$rcmail_config['useragent'] = 'Roundcube Webmail/'.RCMAIL_VERSION; + +// use this name to compose page titles +$rcmail_config['product_name'] = 'Roundcube Webmail'; + +// try to load host-specific configuration +// see http://trac.roundcube.net/wiki/Howto_Config for more details +$rcmail_config['include_host_config'] = false; + +// path to a text file which will be added to each sent message +// paths are relative to the Roundcube root folder +$rcmail_config['generic_message_footer'] = ''; + +// path to a text file which will be added to each sent HTML message +// paths are relative to the Roundcube root folder +$rcmail_config['generic_message_footer_html'] = ''; + +// add a received header to outgoing mails containing the creators IP and hostname +$rcmail_config['http_received_header'] = false; + +// Whether or not to encrypt the IP address and the host name +// these could, in some circles, be considered as sensitive information; +// however, for the administrator, these could be invaluable help +// when tracking down issues. +$rcmail_config['http_received_header_encrypt'] = false; + +// This string is used as a delimiter for message headers when sending +// a message via mail() function. Leave empty for auto-detection +$rcmail_config['mail_header_delimiter'] = NULL; + +// number of chars allowed for line when wrapping text. +// text wrapping is done when composing/sending messages +$rcmail_config['line_length'] = 72; + +// send plaintext messages as format=flowed +$rcmail_config['send_format_flowed'] = true; + +// don't allow these settings to be overriden by the user +$rcmail_config['dont_override'] = array(); + +// Set identities access level: +// 0 - many identities with possibility to edit all params +// 1 - many identities with possibility to edit all params but not email address +// 2 - one identity with possibility to edit all params +// 3 - one identity with possibility to edit all params but not email address +$rcmail_config['identities_level'] = 0; + +// Mimetypes supported by the browser. +// attachments of these types will open in a preview window +// either a comma-separated list or an array: 'text/plain,text/html,text/xml,image/jpeg,image/gif,image/png,application/pdf' +$rcmail_config['client_mimetypes'] = null; # null == default + +// mime magic database +$rcmail_config['mime_magic'] = '/usr/share/misc/magic'; + +// path to imagemagick identify binary +$rcmail_config['im_identify_path'] = null; + +// path to imagemagick convert binary +$rcmail_config['im_convert_path'] = null; + +// maximum size of uploaded contact photos in pixel +$rcmail_config['contact_photo_size'] = 160; + +// Enable DNS checking for e-mail address validation +$rcmail_config['email_dns_check'] = false; + +// ---------------------------------- +// PLUGINS +// ---------------------------------- + +// List of active plugins (in plugins/ directory) +$rcmail_config['plugins'] = array('login_info'); + +// ---------------------------------- +// USER INTERFACE +// ---------------------------------- + +// default messages sort column. Use empty value for default server's sorting, +// or 'arrival', 'date', 'subject', 'from', 'to', 'size', 'cc' +$rcmail_config['message_sort_col'] = ''; + +// default messages sort order +$rcmail_config['message_sort_order'] = 'DESC'; + +// These cols are shown in the message list. Available cols are: +// subject, from, to, cc, replyto, date, size, status, flag, attachment, 'priority' +$rcmail_config['list_cols'] = array('subject', 'status', 'from', 'date', 'size', 'flag', 'attachment'); + +// the default locale setting (leave empty for auto-detection) +// RFC1766 formatted language name like en_US, de_DE, de_CH, fr_FR, pt_BR +$rcmail_config['language'] = 'pt_BR'; + +// use this format for date display (date or strftime format) +$rcmail_config['date_format'] = 'Y-m-d'; + +// give this choice of date formats to the user to select from +$rcmail_config['date_formats'] = array('Y-m-d', 'd-m-Y', 'Y/m/d', 'm/d/Y', 'd/m/Y', 'd.m.Y', 'j.n.Y'); + +// use this format for time display (date or strftime format) +$rcmail_config['time_format'] = 'H:i'; + +// give this choice of time formats to the user to select from +$rcmail_config['time_formats'] = array('G:i', 'H:i', 'g:i a', 'h:i A'); + +// use this format for short date display (derived from date_format and time_format) +$rcmail_config['date_short'] = 'D H:i'; + +// use this format for detailed date/time formatting (derived from date_format and time_format) +$rcmail_config['date_long'] = 'Y-m-d H:i'; + +// store draft message is this mailbox +// leave blank if draft messages should not be stored +// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) +$rcmail_config['drafts_mbox'] = 'Drafts'; + +// store spam messages in this mailbox +// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) +$rcmail_config['junk_mbox'] = 'Junk'; + +// store sent message is this mailbox +// leave blank if sent messages should not be stored +// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) +$rcmail_config['sent_mbox'] = 'Sent'; + +// move messages to this folder when deleting them +// leave blank if they should be deleted directly +// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) +$rcmail_config['trash_mbox'] = 'Trash'; + +// display these folders separately in the mailbox list. +// these folders will also be displayed with localized names +// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) +$rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash'); + +// automatically create the above listed default folders on first login +$rcmail_config['create_default_folders'] = false; + +// protect the default folders from renames, deletes, and subscription changes +$rcmail_config['protect_default_folders'] = true; + +// if in your system 0 quota means no limit set this option to true +$rcmail_config['quota_zero_as_unlimited'] = false; + +// Make use of the built-in spell checker. It is based on GoogieSpell. +// Since Google only accepts connections over https your PHP installatation +// requires to be compiled with Open SSL support +$rcmail_config['enable_spellcheck'] = true; + +// Enables spellchecker exceptions dictionary. +// Setting it to 'shared' will make the dictionary shared by all users. +$rcmail_config['spellcheck_dictionary'] = false; + +// Set the spell checking engine. 'googie' is the default. 'pspell' is also available, +// but requires the Pspell extensions. When using Nox Spell Server, also set 'googie' here. +$rcmail_config['spellcheck_engine'] = 'pspell'; + +// For a locally installed Nox Spell Server, please specify the URI to call it. +// Get Nox Spell Server from http://orangoo.com/labs/?page_id=72 +// Leave empty to use the Google spell checking service, what means +// that the message content will be sent to Google in order to check spelling +$rcmail_config['spellcheck_uri'] = ''; + +// These languages can be selected for spell checking. +// Configure as a PHP style hash array: array('en'=>'English', 'de'=>'Deutsch'); +// Leave empty for default set of available language. +$rcmail_config['spellcheck_languages'] = NULL; + +// Makes that words with all letters capitalized will be ignored (e.g. GOOGLE) +$rcmail_config['spellcheck_ignore_caps'] = false; + +// Makes that words with numbers will be ignored (e.g. g00gle) +$rcmail_config['spellcheck_ignore_nums'] = false; + +// Makes that words with symbols will be ignored (e.g. g@@gle) +$rcmail_config['spellcheck_ignore_syms'] = false; + +// Use this char/string to separate recipients when composing a new message +$rcmail_config['recipients_separator'] = ','; + +// don't let users set pagesize to more than this value if set +$rcmail_config['max_pagesize'] = 200; + +// Minimal value of user's 'keep_alive' setting (in seconds) +// Must be less than 'session_lifetime' +$rcmail_config['min_keep_alive'] = 60; + +// Enables files upload indicator. Requires APC installed and enabled apc.rfc1867 option. +// By default refresh time is set to 1 second. You can set this value to true +// or any integer value indicating number of seconds. +$rcmail_config['upload_progress'] = false; + +// Specifies for how many seconds the Undo button will be available +// after object delete action. Currently used with supporting address book sources. +// Setting it to 0, disables the feature. +$rcmail_config['undo_timeout'] = 0; + +<% if roundcube_login_info != false %> +// Login_info plugin +$rcmail_config['login_info'] = << + <%= roundcube_login_info %> + +EOT; +<% end -%> + +// ---------------------------------- +// ADDRESSBOOK SETTINGS +// ---------------------------------- + +// This indicates which type of address book to use. Possible choises: +// 'sql' (default) and 'ldap'. +// If set to 'ldap' then it will look at using the first writable LDAP +// address book as the primary address book and it will not display the +// SQL address book in the 'Address Book' view. +$rcmail_config['address_book_type'] = 'sql'; + +// In order to enable public ldap search, configure an array like the Verisign +// example further below. if you would like to test, simply uncomment the example. +// Array key must contain only safe characters, ie. a-zA-Z0-9_ +$rcmail_config['ldap_public'] = array(); + +// If you are going to use LDAP for individual address books, you will need to +// set 'user_specific' to true and use the variables to generate the appropriate DNs to access it. +// +// The recommended directory structure for LDAP is to store all the address book entries +// under the users main entry, e.g.: +// +// o=root +// ou=people +// uid=user@domain +// mail=contact@contactdomain +// +// So the base_dn would be uid=%fu,ou=people,o=root +// The bind_dn would be the same as based_dn or some super user login. +/* +* example config for Verisign directory +* +$rcmail_config['ldap_public']['Verisign'] = array( +'name' => 'Verisign.com', +// Replacement variables supported in host names: +// %h - user's IMAP hostname +// %n - http hostname ($_SERVER['SERVER_NAME']) +// %d - domain (http hostname without the first part) +// %z - IMAP domain (IMAP hostname without the first part) +// For example %n = mail.domain.tld, %d = domain.tld +'hosts' => array('directory.verisign.com'), +'port' => 389, +'use_tls' => false, +'ldap_version' => 3, // using LDAPv3 +'user_specific' => false, // If true the base_dn, bind_dn and bind_pass default to the user's IMAP login. +// %fu - The full username provided, assumes the username is an email +// address, uses the username_domain value if not an email address. +// %u - The username prior to the '@'. +// %d - The domain name after the '@'. +// %dc - The domain name hierarchal string e.g. "dc=test,dc=domain,dc=com" +// %dn - DN found by ldap search when search_filter/search_base_dn are used +'base_dn' => '', +'bind_dn' => '', +'bind_pass' => '', +// It's possible to bind for an individual address book +// The login name is used to search for the DN to bind with +'search_base_dn' => '', +'search_filter' => '', // e.g. '(&(objectClass=posixAccount)(uid=%u))' +// DN and password to bind as before searching for bind DN, if anonymous search is not allowed +'search_bind_dn' => '', +'search_bind_pw' => '', +// Default for %dn variable if search doesn't return DN value +'search_dn_default' => '', +// Optional authentication identifier to be used as SASL authorization proxy +// bind_dn need to be empty +'auth_cid' => '', +// SASL authentication method (for proxy auth), e.g. DIGEST-MD5 +'auth_method' => '', +// Indicates if the addressbook shall be hidden from the list. +// With this option enabled you can still search/view contacts. +'hidden' => false, +// Indicates if the addressbook shall not list contacts but only allows searching. +'searchonly' => false, +// Indicates if we can write to the LDAP directory or not. +// If writable is true then these fields need to be populated: +// LDAP_Object_Classes, required_fields, LDAP_rdn +'writable' => false, +// To create a new contact these are the object classes to specify +// (or any other classes you wish to use). +'LDAP_Object_Classes' => array('top', 'inetOrgPerson'), +// The RDN field that is used for new entries, this field needs +// to be one of the search_fields, the base of base_dn is appended +// to the RDN to insert into the LDAP directory. +'LDAP_rdn' => 'mail', +// The required fields needed to build a new contact as required by +// the object classes (can include additional fields not required by the object classes). +'required_fields' => array('cn', 'sn', 'mail'), +'search_fields' => array('mail', 'cn'), // fields to search in +// mapping of contact fields to directory attributes +'fieldmap' => array( +// Roundcube => LDAP +'name' => 'cn', +'surname' => 'sn', +'firstname' => 'givenName', +'email' => 'mail', +'phone:home' => 'homePhone', +'phone:work' => 'telephoneNumber', +'phone:mobile' => 'mobile', +'street' => 'street', +'zipcode' => 'postalCode', +'locality' => 'l', +'country' => 'c', +'organization' => 'o', +), +'sort' => 'cn', // The field to sort the listing by. +'scope' => 'sub', // search mode: sub|base|list +'filter' => '(objectClass=inetOrgPerson)', // used for basic listing (if not empty) and will be &'d with search queries. example: status=act +'fuzzy_search' => true, // server allows wildcard search +'vlv' => false, // Enable Virtual List View to more efficiently fetch paginated data (if server supports it) +'numsub_filter' => '(objectClass=organizationalUnit)', // with VLV, we also use numSubOrdinates to query the total number of records. Set this filter to get all numSubOrdinates attributes for counting +'sizelimit' => '0', // Enables you to limit the count of entries fetched. Setting this to 0 means no limit. +'timelimit' => '0', // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit. +'referrals' => true|false, // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups + +// definition for contact groups (uncomment if no groups are supported) +// for the groups base_dn, the user replacements %fu, %u, $d and %dc work as for base_dn (see above) +// if the groups base_dn is empty, the contact base_dn is used for the groups as well +// -> in this case, assure that groups and contacts are separated due to the concernig filters! +'groups' => array( +'base_dn' => '', +'filter' => '(objectClass=groupOfNames)', +'object_classes' => array("top", "groupOfNames"), +'member_attr' => 'member', // name of the member attribute, e.g. uniqueMember +'name_attr' => 'cn', // attribute to be used as group name +), +); +*/ + +// An ordered array of the ids of the addressbooks that should be searched +// when populating address autocomplete fields server-side. ex: array('sql','Verisign'); +$rcmail_config['autocomplete_addressbooks'] = array('sql'); + +// The minimum number of characters required to be typed in an autocomplete field +// before address books will be searched. Most useful for LDAP directories that +// may need to do lengthy results building given overly-broad searches +$rcmail_config['autocomplete_min_length'] = 1; + +// Number of parallel autocomplete requests. +// If there's more than one address book, n parallel (async) requests will be created, +// where each request will search in one address book. By default (0), all address +// books are searched in one request. +$rcmail_config['autocomplete_threads'] = 0; + +// Max. numer of entries in autocomplete popup. Default: 15. +$rcmail_config['autocomplete_max'] = 15; + +// show address fields in this order +// available placeholders: {street}, {locality}, {zipcode}, {country}, {region} +$rcmail_config['address_template'] = '{street}
{locality} {zipcode}
{country} {region}'; + +// Matching mode for addressbook search (including autocompletion) +// 0 - partial (*abc*), default +// 1 - strict (abc) +// 2 - prefix (abc*) +// Note: For LDAP sources fuzzy_search must be enabled to use 'partial' or 'prefix' mode +$rcmail_config['addressbook_search_mode'] = 0; + +// ---------------------------------- +// USER PREFERENCES +// ---------------------------------- + +// Use this charset as fallback for message decoding +$rcmail_config['default_charset'] = 'UTF-8'; + +// skin name: folder from skins/ +$rcmail_config['skin'] = 'default'; + +// show up to X items in list view +$rcmail_config['pagesize'] = 40; + +// use this timezone to display date/time +$rcmail_config['timezone'] = 'auto'; + +// is daylight saving On? Default: (bool)date('I'); +$rcmail_config['dst_active'] = null; + +// prefer displaying HTML messages +$rcmail_config['prefer_html'] = true; + +// display remote inline images +// 0 - Never, always ask +// 1 - Ask if sender is not in address book +// 2 - Always show inline images +$rcmail_config['show_images'] = 0; + +// compose html formatted messages by default +// 0 - never, 1 - always, 2 - on reply to HTML message only +$rcmail_config['htmleditor'] = 0; + +// show pretty dates as standard +$rcmail_config['prettydate'] = true; + +// save compose message every 300 seconds (5min) +$rcmail_config['draft_autosave'] = 300; + +// default setting if preview pane is enabled +$rcmail_config['preview_pane'] = false; + +// Mark as read when viewed in preview pane (delay in seconds) +// Set to -1 if messages in preview pane should not be marked as read +$rcmail_config['preview_pane_mark_read'] = 0; + +// Clear Trash on logout +$rcmail_config['logout_purge'] = false; + +// Compact INBOX on logout +$rcmail_config['logout_expunge'] = false; + +// Display attached images below the message body +$rcmail_config['inline_images'] = true; + +// Encoding of long/non-ascii attachment names: +// 0 - Full RFC 2231 compatible +// 1 - RFC 2047 for 'name' and RFC 2231 for 'filename' parameter (Thunderbird's default) +// 2 - Full 2047 compatible +$rcmail_config['mime_param_folding'] = 1; + +// Set true if deleted messages should not be displayed +// This will make the application run slower +$rcmail_config['skip_deleted'] = false; + +// Set true to Mark deleted messages as read as well as deleted +// False means that a message's read status is not affected by marking it as deleted +$rcmail_config['read_when_deleted'] = true; + +// Set to true to never delete messages immediately +// Use 'Purge' to remove messages marked as deleted +$rcmail_config['flag_for_deletion'] = false; + +// Default interval for keep-alive/check-recent requests (in seconds) +// Must be greater than or equal to 'min_keep_alive' and less than 'session_lifetime' +$rcmail_config['keep_alive'] = 60; + +// If true all folders will be checked for recent messages +$rcmail_config['check_all_folders'] = false; + +// If true, after message delete/move, the next message will be displayed +$rcmail_config['display_next'] = false; + +// 0 - Do not expand threads +// 1 - Expand all threads automatically +// 2 - Expand only threads with unread messages +$rcmail_config['autoexpand_threads'] = 0; + +// When replying place cursor above original message (top posting) +$rcmail_config['top_posting'] = false; + +// When replying strip original signature from message +$rcmail_config['strip_existing_sig'] = true; + +// Show signature: +// 0 - Never +// 1 - Always +// 2 - New messages only +// 3 - Forwards and Replies only +$rcmail_config['show_sig'] = 1; + +// When replying or forwarding place sender's signature above existing message +$rcmail_config['sig_above'] = false; + +// Use MIME encoding (quoted-printable) for 8bit characters in message body +$rcmail_config['force_7bit'] = false; + +// Defaults of the search field configuration. +// The array can contain a per-folder list of header fields which should be considered when searching +// The entry with key '*' stands for all folders which do not have a specific list set. +// Please note that folder names should to be in sync with $rcmail_config['default_imap_folders'] +$rcmail_config['search_mods'] = null; // Example: array('*' => array('subject'=>1, 'from'=>1), 'Sent' => array('subject'=>1, 'to'=>1)); + +// Defaults of the addressbook search field configuration. +$rcmail_config['addressbook_search_mods'] = null; // Example: array('name'=>1, 'firstname'=>1, 'surname'=>1, 'email'=>1, '*'=>1); + +// 'Delete always' +// This setting reflects if mail should be always deleted +// when moving to Trash fails. This is necessary in some setups +// when user is over quota and Trash is included in the quota. +$rcmail_config['delete_always'] = false; + +// Behavior if a received message requests a message delivery notification (read receipt) +// 0 = ask the user, 1 = send automatically, 2 = ignore (never send or ask) +// 3 = send automatically if sender is in addressbook, otherwise ask the user +// 4 = send automatically if sender is in addressbook, otherwise ignore +$rcmail_config['mdn_requests'] = 0; + +// Return receipt checkbox default state +$rcmail_config['mdn_default'] = 0; + +// Delivery Status Notification checkbox default state +$rcmail_config['dsn_default'] = 0; + +// Place replies in the folder of the message being replied to +$rcmail_config['reply_same_folder'] = false; + +// Sets default mode of Forward feature to "forward as attachment" +$rcmail_config['forward_attachment'] = false; + +// Defines address book (internal index) to which new contacts will be added +// By default it is the first writeable addressbook. +// Note: Use '0' for built-in address book. +$rcmail_config['default_addressbook'] = null; + +// Enables spell checking before sending a message. +$rcmail_config['spellcheck_before_send'] = false; + +// Skip alternative email addresses in autocompletion (show one address per contact) +$rcmail_config['autocomplete_single'] = false; + +// end of config file -- cgit v1.2.3