diff --git a/createlinks b/createlinks
index bc772a0..7c8f529 100644
--- a/createlinks
+++ b/createlinks
@@ -1,43 +1,74 @@
#!/usr/bin/perl -w
use esmith::Build::CreateLinks qw(:all);
-use esmith::Build::Backup qw(:all);
-# our event specific for updating with yum without reboot
-$event = 'smeserver-roundcube-update';
+# Koozali event specific for updating with yum without reboot
+$event = "smeserver-roundcube-update";
#add here the path to your templates needed to expand
#see the /etc/systemd/system-preset/49-koozali.preset should be present for systemd integration on all you yum update event
-# Maybe need ths in here as well:
-# /etc/dar/DailyBackup.dcf - if backup requested
-
foreach my $file (qw(
/etc/systemd/system-preset/49-koozali.preset
))
{
templates2events( $file, $event );
-};
+}
+
#action needed in case we have a systemd unit
-event_link('systemd-default', $event, '10');
-event_link('systemd-reload', $event, '50');
-
-#services we might need to restart
-#event_services($event, 'xxxx' => 'restart', 'yyyy' => 'restart');
-
-#Backup contrib files
-# backup_includes("smeserver-roundcube", qw(
- # files(s) to be backed up
-#));
-
-#Other possible entries:
-#Server manager entry
-#panel_link("smeserver-roundcube", 'manager');
-#Events to smeserver-roundcube
-#$event = 'smeserver-roundcube-smeserver-roundcube';
-# safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/smeserver-roundcube");
-# templates2events("/etc/smeserver-roundcube/smeserver-roundcube.conf", $event);
+event_link("systemd-default", $event, "10");
+event_link("systemd-reload", $event, "50");
+#action specific to this package
+#event_link("some event", $event, "30");
+#services we need to restart
+#safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/some service");
+#and Server Manager panel link
+#panel_link('somefunction', 'manager');
+#expand specific roundcube template
+for my $event (qw(
+ smeserver-roundcube-update
+ bootstrap-console-save
+ conf-roundcube
+ roundcube-update
+ console-save
+ ))
+{
+ templates2events("/usr/share/roundcubemail/plugins/managesieve/config.inc.php", $event);
+ templates2events("/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php", $event);
+ templates2events("/etc/roundcubemail/config.inc.php", $event);
+ templates2events("/etc/e-smith/sql/init/80roundcube", $event);
+
+}
+
+#restart specific services to avoid to reboot after the installation
+for my $event (qw(
+ smeserver-roundcube-update
+ conf-roundcube
+ roundcube-update
+ ))
+{
+ templates2events("/etc/opt/remi/php81/php-fpm.d/www.conf",$event);
+ templates2events("/etc/httpd/conf/httpd.conf", $event);
+ templates2events("/etc/dovecot/dovecot.conf", $event);
+ safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/php81-php-fpm");
+ safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/mysql.init");
+ safe_symlink("sigusr1", "root/etc/e-smith/events/$event/services2adjust/httpd-e-smith");
+ safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/dovecot");
+ safe_symlink("restart", "root/etc/e-smith/events/$event/services2adjust/qmail");
+}
+#We want to expand /etc/e-smith/templates-user/.qmail
+foreach my $event (qw(
+ smeserver-roundcube-update
+ conf-roundcube
+ roundcube-update
+ ))
+{
+ event_link("qmail-update-user", $event, "20");
+ event_link("roundcube-conf", $event, "03");
+}
+safe_symlink("/usr/share/php/Net/LDAP3","root/usr/share/pear/Net/LDAP3");
+safe_symlink("/usr/share/php/Net/LDAP3.php","root/usr/share/pear/Net/LDAP3.php");
diff --git a/root/etc/e-smith/db/accounts/defaults/roundcube/type b/root/etc/e-smith/db/accounts/defaults/roundcube/type
new file mode 100644
index 0000000..123f60c
--- /dev/null
+++ b/root/etc/e-smith/db/accounts/defaults/roundcube/type
@@ -0,0 +1 @@
+reserved
diff --git a/root/etc/e-smith/db/configuration/defaults/roundcube/DbName b/root/etc/e-smith/db/configuration/defaults/roundcube/DbName
new file mode 100644
index 0000000..51d7abf
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/roundcube/DbName
@@ -0,0 +1 @@
+roundcube
diff --git a/root/etc/e-smith/db/configuration/defaults/roundcube/DbUser b/root/etc/e-smith/db/configuration/defaults/roundcube/DbUser
new file mode 100644
index 0000000..51d7abf
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/roundcube/DbUser
@@ -0,0 +1 @@
+roundcube
diff --git a/root/etc/e-smith/db/configuration/defaults/roundcube/Name b/root/etc/e-smith/db/configuration/defaults/roundcube/Name
new file mode 100644
index 0000000..cdae9a2
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/roundcube/Name
@@ -0,0 +1 @@
+RoundCube IMAP Client
diff --git a/root/etc/e-smith/db/configuration/defaults/roundcube/PluginsList b/root/etc/e-smith/db/configuration/defaults/roundcube/PluginsList
new file mode 100644
index 0000000..91f0a6f
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/roundcube/PluginsList
@@ -0,0 +1 @@
+globaladdressbook,contextmenu,markasjunk,vcard_attachments,newmail_notifier,emoticons,managesieve,nextcloud_attachments
diff --git a/root/etc/e-smith/db/configuration/defaults/roundcube/access b/root/etc/e-smith/db/configuration/defaults/roundcube/access
new file mode 100644
index 0000000..a48cf0d
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/roundcube/access
@@ -0,0 +1 @@
+public
diff --git a/root/etc/e-smith/db/configuration/defaults/roundcube/status b/root/etc/e-smith/db/configuration/defaults/roundcube/status
new file mode 100644
index 0000000..86981e6
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/defaults/roundcube/status
@@ -0,0 +1 @@
+enabled
diff --git a/root/etc/e-smith/db/configuration/migrate/80ROUNDCUBE_IMAPS_ACCESS b/root/etc/e-smith/db/configuration/migrate/80ROUNDCUBE_IMAPS_ACCESS
new file mode 100644
index 0000000..86dbbc9
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/migrate/80ROUNDCUBE_IMAPS_ACCESS
@@ -0,0 +1,17 @@
+{
+# If you set the server dns resolver to external
+# (for the main domain) you can not login in roundcube
+# with the imap authentication
+
+use esmith::DomainsDB;
+my $d = esmith::DomainsDB->open_ro;
+my $domainname = $DB->get_value('DomainName') or
+ die ("Unable to retrieve the domain name: $!");
+
+my $dns = $d->get_prop("$domainname",'Nameservers') or
+ die ("Unable to retrieve the Name Servers: $!");
+
+if ($dns ne 'localhost') {
+$DB->set_prop('imaps','access','public');
+}
+}
diff --git a/root/etc/e-smith/db/configuration/migrate/80roundcube b/root/etc/e-smith/db/configuration/migrate/80roundcube
new file mode 100644
index 0000000..326f61e
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/migrate/80roundcube
@@ -0,0 +1,20 @@
+{
+ use MIME::Base64 qw(encode_base64);
+
+ my $rec = $DB->get('roundcube') || $DB->new_record('roundcube', {type => 'service'});
+
+# migrate PublicAccess to access
+ if ( my $PublicAccess = $DB->get_prop_and_delete('roundcube','PublicAccess') ) {
+ $DB->set_prop('roundcube','access', "private");
+ $DB->set_prop('roundcube','access', "public") if ($PublicAccess =~ /global/);
+ $DB->set_prop('roundcube','status', "disabled") if ($PublicAccess == "none");
+ }
+
+
+
+ my $pw = $rec->prop('DbPassword');
+ return "" if $pw;
+
+ $rec->set_prop('DbPassword', sprintf("%15.0f", int( (1000000000000000) * rand() )));
+
+}
diff --git a/root/etc/e-smith/db/configuration/migrate/80roundcube_Plugins_Migration b/root/etc/e-smith/db/configuration/migrate/80roundcube_Plugins_Migration
new file mode 100644
index 0000000..d91e8df
--- /dev/null
+++ b/root/etc/e-smith/db/configuration/migrate/80roundcube_Plugins_Migration
@@ -0,0 +1,57 @@
+{
+ use esmith::ConfigDB;
+ my $cdb = esmith::ConfigDB->open() || die "Couldn't open ConfigDB\n";
+ ##Added for version smeserver-roundcube-1.1-4
+ my $plugins = $cdb->get_prop('roundcube','PluginsList') || '';
+
+ return unless ($plugins ne '');
+
+#nextcloud_attachements is used
+if ($plugins !~ 'nextcloud_attachments')
+ {
+ $plugins = $plugins.',nextcloud_attachments';
+ $cdb->set_prop('roundcube','PluginsList',"$plugins");
+ }
+#sieverule is now used instead of
+if ($plugins !~ 'managesieve')
+ {
+ $plugins = $plugins.',managesieve';
+ $cdb->set_prop('roundcube','PluginsList',"$plugins");
+ }
+# sieverule deprecated
+ if ($plugins =~ 'sieverule')
+ {
+ $plugins =~ s/,sieverule//g;
+ $cdb->set_prop('roundcube','PluginsList',"$plugins");
+ }
+# markasjunk2 deprecated
+ if ($plugins =~ 'markasjunk')
+ {
+ $plugins =~ s/markasjunk2/markasjunk/g;
+ $cdb->set_prop('roundcube','PluginsList',"$plugins");
+ }
+#Carddav is a really bad plugin, when available it will become usefull
+ if ($plugins =~ 'carddav')
+ {
+ $plugins =~ s/,carddav//g;
+ $cdb->set_prop('roundcube','PluginsList',"$plugins");
+ }
+#remove calendar
+ if ($plugins =~ 'calendar')
+ {
+ $plugins =~ s/,calendar//g;
+ $cdb->set_prop('roundcube','PluginsList',"$plugins");
+ }
+#remove libcalendaring
+ if ($plugins =~ 'libcalendaring')
+ {
+ $plugins =~ s/,libcalendaring//g;
+ $cdb->set_prop('roundcube','PluginsList',"$plugins");
+ }
+#remove tasklist
+ if ($plugins =~ 'tasklist')
+ {
+ $plugins =~ s/,tasklist//g;
+ $cdb->set_prop('roundcube','PluginsList',"$plugins");
+ }
+}
diff --git a/root/etc/e-smith/events/actions/roundcube-conf b/root/etc/e-smith/events/actions/roundcube-conf
new file mode 100644
index 0000000..7808428
--- /dev/null
+++ b/root/etc/e-smith/events/actions/roundcube-conf
@@ -0,0 +1,2 @@
+#!/bin/bash
+/usr/bin/rcplugin_update.sh
diff --git a/root/etc/e-smith/templates.metadata/etc/e-smith/sql/init/80roundcube b/root/etc/e-smith/templates.metadata/etc/e-smith/sql/init/80roundcube
new file mode 100644
index 0000000..940dcf3
--- /dev/null
+++ b/root/etc/e-smith/templates.metadata/etc/e-smith/sql/init/80roundcube
@@ -0,0 +1 @@
+PERMS=0750
diff --git a/root/etc/e-smith/templates.metadata/etc/roundcubemail/config.inc.php b/root/etc/e-smith/templates.metadata/etc/roundcubemail/config.inc.php
new file mode 100644
index 0000000..b916d35
--- /dev/null
+++ b/root/etc/e-smith/templates.metadata/etc/roundcubemail/config.inc.php
@@ -0,0 +1,3 @@
+UID="root"
+GID="www"
+PERMS=0640
diff --git a/root/etc/e-smith/templates/etc/e-smith/sql/init/80roundcube b/root/etc/e-smith/templates/etc/e-smith/sql/init/80roundcube
new file mode 100644
index 0000000..622fd06
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/e-smith/sql/init/80roundcube
@@ -0,0 +1,29 @@
+{
+ my $db = $roundcube{DbName} || 'roundcube';
+ my $user = $roundcube{DbUser} || 'roundcube';
+ my $pass = $roundcube{DbPassword} || 'changeme';
+ $OUT .= <
+ Require all denied
+
+ );
+ }
+}
diff --git a/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/VirtualHosts/60RoundCube-force-https b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/VirtualHosts/60RoundCube-force-https
new file mode 100644
index 0000000..9a87dc8
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/httpd/conf/httpd.conf/VirtualHosts/60RoundCube-force-https
@@ -0,0 +1,23 @@
+{
+ my $status = $roundcube{'status'} || "disabled";
+ return " # roundcube is disabled in this VirtualHost"
+ unless $status eq 'enabled';
+
+{
+if ($port ne "443")
+{
+$OUT .= <<'HERE';
+## Redirect roundcubeWeb Address to Secure Address
+RewriteEngine on
+RewriteRule ^/roundcube https://%{HTTP_HOST}/roundcube
+RewriteRule ^/roundcubemail https://%{HTTP_HOST}/roundcubemail
+
+## End Of Redirect
+HERE
+
+if ((exists $roundcube{'URL'}) && ($roundcube{'URL'} ne '')) {
+ $OUT .= "RewriteRule ^/$roundcube{'URL'} https://%{HTTP_HOST}/$roundcube{'URL'}\n";
+ }
+}
+}
+}
diff --git a/root/etc/e-smith/templates/etc/php-fpm.d/www.conf/15roundcube b/root/etc/e-smith/templates/etc/php-fpm.d/www.conf/15roundcube
new file mode 100644
index 0000000..941876a
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/php-fpm.d/www.conf/15roundcube
@@ -0,0 +1,67 @@
+{
+ my $phpversion="81";
+
+if ($PHP_VERSION eq $phpversion){
+ if (($roundcube{'status'} || 'disabled') eq 'enabled'){
+ my $max_upload_size = ($roundcube{MaxUploadSize} || '100M');
+ $max_upload_size .= 'M' if ($max_upload_size =~ m/^\d+$/);
+ my $memory_limit = ($roundcube{MemoryLimit} || '512M');
+ $memory_limit .= 'M' if ($memory_limit =~ m/^\d+$/);
+ my $open_basedir= $roundcube{PHPBaseDir} || '';
+ $open_basedir = "/usr/share/roundcubemail:/etc/roundcubemail/:/var/log/roundcubemail:/var/lib/roundcubemail:/var/log/roundcube.log:/var/lib/php/roundcube:/home/e-smith/files/roundcube:/dev/urandom:/proc/meminfo:/usr/share/GeoIP/GeoLite2-Country.mmdb:/proc/cpuinfo:$open_basedir";
+ my $id = 'roundcube';
+ my $max_children = $roundcube{'PHPmaxChildren'} || 20;
+ my $min_spare_servers = $roundcube{'PHPminServers'} || 4;
+ my $start_servers = $roundcube{'PHPstartServers'} || 6;
+ my $max_spare_servers = $roundcube{'PHPmaxServers'} || 8;
+ my $max_requests = $roundcube{'PHPmaxRequests'} || 1000;
+ $min_spare_servers = ( $min_spare_servers > $max_spare_servers ) ? printf("%.0f",$max_spare_servers/2) : $min_spare_servers;
+ $start_servers = ( $start_servers > $max_spare_servers ) ? printf("%.0f", $max_spare_servers /2 + $min_spare_servers/2 ) : $start_servers;
+
+ $OUT .=<<_EOF;
+
+[php$PHP_VERSION-$id]
+user = www
+group = www
+listen.owner = root
+listen.group = www
+listen.mode = 0660
+listen = /var/run/php-fpm/php$PHP_VERSION-$id.sock
+pm = dynamic
+pm.max_children = $max_children
+pm.start_servers = $start_servers
+pm.min_spare_servers = $min_spare_servers
+pm.max_spare_servers = $max_spare_servers
+pm.max_requests = $max_requests
+php_admin_value[sys_temp_dir] = /var/lib/php/$id/tmp
+php_admin_value[session.save_path] = /var/lib/php/$id/session
+php_admin_value[session.gc_maxlifetime] = 86400
+php_admin_value[upload_tmp_dir] = /var/lib/php/$id/tmp
+php_admin_value[error_log] = /var/log/php/$id/error.log
+slowlog = /var/log/php/roundcube/slow.log
+php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f php@{ $DomainName }
+php_admin_flag[display_errors] = off
+php_admin_flag[log_errors] = on
+php_admin_value[error_log] = syslog
+php_admin_value[memory_limit] = $memory_limit
+php_admin_value[max_execution_time] = 3600
+php_admin_value[post_max_size] = $max_upload_size
+php_admin_value[upload_max_filesize] = $max_upload_size
+php_admin_value[disable_functions] = system, show_source, symlink, dl, passthru
+php_admin_value[open_basedir] = $open_basedir
+php_admin_flag[allow_url_fopen] = on
+php_admin_flag[file_upload] = on
+php_admin_flag[session.cookie_httponly] = on
+php_admin_flag[allow_url_include] = off
+php_admin_value[session.save_handler] = files
+php_admin_flag[output_buffering] = off
+
+_EOF
+
+ }
+ else{
+ $OUT .= '; RoudnCube is disabled';
+ }
+}
+}
+
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/10SQL_DATABASE b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/10SQL_DATABASE
new file mode 100644
index 0000000..f474431
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/10SQL_DATABASE
@@ -0,0 +1,44 @@
+$config = array();
+
+// ----------------------------------
+// SQL DATABASE
+// ----------------------------------
+
+// Database connection string (DSN) for read+write operations
+// Format (compatible with PEAR MDB2): db_provider://user:password@host/database
+// Currently supported db_providers: mysql, pgsql, sqlite, mssql or sqlsrv
+// For examples see http://pear.php.net/manual/en/package.database.mdb2.intro-dsn.php
+// NOTE: for SQLite use absolute path: 'sqlite:////full/path/to/sqlite.db?mode=0646'
+{
+ $OUT .= " \$config['db_dsnw'] = 'mysql://";
+ $OUT .= $roundcube{DbUser} . ":";
+ $OUT .= $roundcube{DbPassword} . "\@localhost/";
+ $OUT .= $roundcube{DbName} . "';";
+}
+
+// Database DSN for read-only operations (if empty write database will be used)
+// useful for database replication
+$config['db_dsnr'] = '';
+
+// Disable the use of already established dsnw connections for subsequent reads
+$config['db_dsnw_noread'] = false;
+
+// use persistent db-connections
+// beware this will not "always" work as expected
+// see: http://www.php.net/manual/en/features.persistent-connections.php
+$config['db_persistent'] = false;
+
+// you can define specific table (and sequence) names prefix
+$config['db_prefix'] = '';
+
+// Mapping of table names and connections to use for ALL operations.
+// This can be used in a setup with replicated databases and a DB master
+// where read/write access to cache tables should not go to master.
+$config['db_table_dsn'] = array(
+// 'cache' => 'r',
+// 'cache_index' => 'r',
+// 'cache_thread' => 'r',
+// 'cache_messages' => 'r',
+);
+
+
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/20LOGGING_DEBUGGING b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/20LOGGING_DEBUGGING
new file mode 100644
index 0000000..bfe0994
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/20LOGGING_DEBUGGING
@@ -0,0 +1,46 @@
+// ----------------------------------
+// LOGGING/DEBUGGING
+// ----------------------------------
+
+// system error reporting, sum of: 1 = log; 4 = show, 8 = trace
+$config['debug_level'] = 1;
+
+// log driver: 'syslog' or 'file'.
+$config['log_driver'] = 'file';
+
+// date format for log entries
+// (read http://php.net/manual/en/function.date.php for all format characters)
+$config['log_date_format'] = 'd-M-Y H:i:s O';
+
+// Syslog ident string to use, if using the 'syslog' log driver.
+$config['syslog_id'] = 'roundcube';
+
+// Syslog facility to use, if using the 'syslog' log driver.
+// For possible values see installer or http://php.net/manual/en/function.openlog.php
+$config['syslog_facility'] = LOG_USER;
+
+// Activate this option if logs should be written to per-user directories.
+// Data will only be logged if a directry // exists and is writable.
+$config['per_user_logging'] = false;
+
+// Log sent messages to /sendmail or to syslog
+$config['smtp_log'] = true;
+
+// Log successful/failed logins to /userlogins or to syslog
+$config['log_logins'] = false;
+
+// Log session authentication errors to /session or to syslog
+$config['log_session'] = false;
+
+// Log SQL queries to /sql or to syslog
+$config['sql_debug'] = false;
+
+// Log IMAP conversation to /imap or to syslog
+$config['imap_debug'] = false;
+
+// Log LDAP conversation to /ldap or to syslog
+$config['ldap_debug'] = false;
+
+// Log SMTP conversation to /smtp or to syslog
+$config['smtp_debug'] = false;
+
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/30IMAP b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/30IMAP
new file mode 100644
index 0000000..b1862d0
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/30IMAP
@@ -0,0 +1,109 @@
+// ----------------------------------
+// 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 - hostname ($_SERVER['SERVER_NAME'])
+// %t - hostname without the first part
+// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
+// %s - domain name after the '@' from e-mail address provided at login screen
+// For example %n = mail.domain.tld, %t = domain.tld
+// WARNING: After hostname change update of mail_host column in users table is
+// required to match old user data records with the new host.
+ {$OUT .= " \$config['imap_host'] = 'ssl://$DomainName:$imaps{TCPPort}';\n";}
+
+// TCP port used for IMAP connections
+//{$OUT .= " \$config['default_port'] = $imaps{TCPPort};\n";}
+
+// IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or null to use
+// best server supported one)
+$config['imap_auth_type'] = null;
+
+// IMAP socket context options
+// See http://php.net/manual/en/context.ssl.php
+// The example below enables server certificate validation
+//$config['imap_conn_options'] = array(
+// 'ssl' => array(
+// 'verify_peer' => true,
+// 'verify_depth' => 3,
+// 'cafile' => '/etc/openssl/certs/ca.crt',
+// ),
+// );
+$config['imap_conn_options'] = array(
+ 'ssl' => array(
+ 'verify_peer' => true,
+ 'allow_self_signed' => true,
+ 'peer_name' => '{$DomainName}',
+ ),
+ );
+
+// IMAP connection timeout, in seconds. Default: 0 (use default_socket_timeout)
+$config['imap_timeout'] = 0;
+
+// Optional IMAP authentication identifier to be used as authorization proxy
+$config['imap_auth_cid'] = null;
+
+// Optional IMAP authentication password to be used for imap_auth_cid
+$config['imap_auth_pw'] = null;
+
+// If you know your imap's folder delimiter, you can specify it here.
+// Otherwise it will be determined automatically
+$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
+$config['imap_ns_personal'] = null;
+$config['imap_ns_other'] = null;
+$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.
+$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.
+// Deprecated: Use imap_disabled_caps = array('LIST-EXTENDED')
+$config['imap_force_lsub'] = false;
+
+// Some server configurations (e.g. Courier) doesn't list folders in all namespaces
+// Enable this option to force listing of folders in all namespaces
+$config['imap_force_ns'] = false;
+
+// List of disabled imap extensions.
+// Use if your IMAP server has broken implementation of some feature
+// and you can't remove it from CAPABILITY string on server-side.
+// For example UW-IMAP server has broken ESEARCH.
+// Note: Because the list is cached, re-login is required after change.
+$config['imap_disabled_caps'] = array();
+
+// Type of IMAP indexes cache. Supported values: 'db', 'apc' and 'memcache'.
+$config['imap_cache'] = null;
+
+// Enables messages cache. Only 'db' cache is supported.
+// This requires an IMAP server that supports QRESYNC and CONDSTORE
+// extensions (RFC7162). See synchronize() in program/lib/Roundcube/rcube_imap_cache.php
+// for further info, or if you experience syncing problems.
+$config['messages_cache'] = false;
+
+// Lifetime of IMAP indexes cache. Possible units: s, m, h, d, w
+$config['imap_cache_ttl'] = '10d';
+
+// Lifetime of messages cache. Possible units: s, m, h, d, w
+$config['messages_cache_ttl'] = '10d';
+
+// Maximum cached message size in kilobytes.
+// Note: On MySQL this should be less than (max_allowed_packet - 30%)
+$config['messages_cache_threshold'] = 50;
+
+
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/40SMTP b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/40SMTP
new file mode 100644
index 0000000..5d6c06e
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/40SMTP
@@ -0,0 +1,70 @@
+// ----------------------------------
+// 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 - hostname ($_SERVER['SERVER_NAME'])
+// %t - hostname without the first part
+// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
+// %z - IMAP domain (IMAP hostname without the first part)
+// For example %n = mail.domain.tld, %t = domain.tld
+ {$OUT .= " \$config['smtp_host'] = 'ssl://localhost:$sqpsmtpd{'TCPPort'}';\n";}
+
+
+// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
+// deprecated SSL over SMTP (aka SMTPS))
+// {$OUT .= "\$config['smtp_port'] = $sqpsmtpd{'TCPPort'};\n";}
+
+// SMTP username (if required) if you use %u as the username Roundcube
+// will use the current username for login
+{$OUT .= "\$config['smtp_user'] = '%u';\n";}
+
+// SMTP password (if required) if you use %p as the password Roundcube
+// will use the current user's password for login
+{$OUT .= "\$config['smtp_pass'] = '%p';\n";}
+
+// SMTP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use
+// best server supported one)
+$config['smtp_auth_type'] = '';
+
+// Optional SMTP authentication identifier to be used as authorization proxy
+$config['smtp_auth_cid'] = null;
+
+// Optional SMTP authentication password to be used for smtp_auth_cid
+$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.
+$config['smtp_helo_host'] = '';
+
+// SMTP connection timeout, in seconds. Default: 0 (use default_socket_timeout)
+// Note: There's a known issue where using ssl connection with
+// timeout > 0 causes connection errors (https://bugs.php.net/bug.php?id=54511)
+$config['smtp_timeout'] = 0;
+
+// SMTP socket context options
+// See http://php.net/manual/en/context.ssl.php
+// The example below enables server certificate validation, and
+// requires 'smtp_timeout' to be non zero.
+// $config['smtp_conn_options'] = array(
+// 'ssl' => array(
+// 'verify_peer' => true,
+// 'verify_depth' => 3,
+// 'cafile' => '/etc/openssl/certs/ca.crt',
+// ),
+// );
+$config['smtp_conn_options'] = array(
+ 'ssl' => array(
+ 'verify_peer' => false,
+ 'allow_self_signed' => true,
+ 'peer_name' => '{$DomainName}',
+ ),
+ );
+
+
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/50LDAP b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/50LDAP
new file mode 100644
index 0000000..29ab75a
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/50LDAP
@@ -0,0 +1,9 @@
+// ----------------------------------
+// LDAP
+// ----------------------------------
+
+// Type of LDAP cache. Supported values: 'db', 'apc' and 'memcache'.
+$config['ldap_cache'] = 'db';
+
+// Lifetime of LDAP cache. Possible units: s, m, h, d, w
+$config['ldap_cache_ttl'] = '10m';
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/60SYSTEM b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/60SYSTEM
new file mode 100644
index 0000000..a32448d
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/60SYSTEM
@@ -0,0 +1,252 @@
+// ----------------------------------
+// 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!
+$config['enable_installer'] = false;
+
+// don't allow these settings to be overriden by the user
+$config['dont_override'] = array();
+
+// define which settings should be listed under the 'advanced' block
+// which is hidden by default
+$config['advanced_prefs'] = array();
+
+// provide an URL where a user can get support for this Roundcube installation
+// PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!
+$config['support_url'] = '';
+
+// replace Roundcube logo with this image
+// specify an URL relative to the document root of this Roundcube installation
+// an array can be used to specify different logos for specific template files, '*' for default logo
+// for example array("*" => "/images/roundcube_logo.png", "messageprint" => "/images/roundcube_logo_print.png")
+$config['skin_logo'] = null;
+
+// 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
+$config['auto_create_user'] = true;
+
+// Enables possibility to log in using email address from user identities
+$config['user_aliases'] = false;
+
+// use this folder to store log files (must be writeable for apache user)
+// This is used by the 'file' log driver.
+$config['log_dir'] = '/var/log/roundcubemail/';
+
+// use this folder to store temp files (must be writeable for apache user)
+$config['temp_dir'] = '/var/lib/roundcubemail/';
+
+// expire files in temp_dir after 48 hours
+// possible units: s, m, h, d, w
+$config['temp_dir_ttl'] = '48h';
+
+// 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
+$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
+// this option is mutually exclusive to 'force_https' and only either one of them should be set to true.
+$config['use_https'] = false;
+
+// Allow browser-autocompletion on login form.
+// 0 - disabled, 1 - username and host only, 2 - username, host, password
+$config['login_autocomplete'] = 2;
+
+// Forces conversion of logins to lower case.
+// 0 - disabled, 1 - only domain part, 2 - domain and local part.
+// If users authentication is case-insensitive this must be enabled.
+// Note: After enabling it all user records need to be updated, e.g. with query:
+// UPDATE users SET username = LOWER(username);
+$config['login_lc'] = 2;
+
+// Includes should be interpreted as PHP files
+$config['skin_include_php'] = false;
+
+// display software version on login screen
+$config['display_version'] = false;
+
+// Session lifetime in minutes
+$config['session_lifetime'] = 10;
+
+// Session domain: .example.org
+$config['session_domain'] = '';
+
+// Session name. Default: 'roundcube_sessid'
+$config['session_name'] = null;
+
+// Session authentication cookie name. Default: 'roundcube_sessauth'
+$config['session_auth_name'] = null;
+
+// Session path. Defaults to PHP session.cookie_path setting.
+$config['session_path'] = null;
+
+// Backend to use for session storage. Can either be 'db' (default), 'memcache' or 'php'
+// 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
+// Setting this value to 'php' will use the default session save handler configured in PHP
+$config['session_storage'] = 'db';
+
+// Use these hosts for accessing memcached
+// Define any number of hosts in the form of hostname:port or unix:///path/to/socket.file
+$config['memcache_hosts'] = null; // e.g. array( 'localhost:11211', '192.168.1.12:11211', 'unix:///var/tmp/memcached.sock' );
+
+// check client IP in session authorization
+$config['ip_check'] = false;
+
+// List of trusted proxies
+// X_FORWARDED_* and X_REAL_IP headers are only accepted from these IPs
+$config['proxy_whitelist'] = array();
+
+// check referer of incoming requests
+$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
+$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.
+{
+use MIME::Base64 qw(encode_base64);
+open( RANDOM, "/dev/urandom" );
+my $buf;
+read( RANDOM, $buf, 17);
+my $pwd = encode_base64($buf);
+chomp $pwd;
+close RANDOM;
+$OUT .= "\$config['des_key'] = \'$pwd\' ;\n";
+}
+
+// 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 - hostname ($_SERVER['SERVER_NAME'])
+// %t - hostname without the first part
+// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
+// %z - IMAP domain (IMAP hostname without the first part)
+// For example %n = mail.domain.tld, %t = domain.tld
+$config['username_domain'] = '';
+
+// Force domain configured in username_domain to be used for login.
+// Any domain in username will be replaced by username_domain.
+$config['username_domain_forced'] = false;
+
+// 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, %t = domain.tld
+$config['mail_domain'] = '';
+
+// Password charset.
+// Use it if your authentication backend doesn't support UTF-8.
+// Defaults to ISO-8859-1 for backward compatibility
+$config['password_charset'] = 'ISO-8859-1';
+
+// How many seconds must pass between emails sent by a user
+$config['sendmail_delay'] = 0;
+
+// Maximum number of recipients per message. Default: 0 (no limit)
+$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
+$config['max_group_members'] = 0;
+
+// Name your service. This is displayed on the login screen and in the window title
+$config['product_name'] = 'Roundcube Webmail';
+
+// Add this user-agent to message headers when sending
+$config['useragent'] = 'Roundcube Webmail/'.RCMAIL_VERSION;
+
+// try to load host-specific configuration
+// see http://trac.roundcube.net/wiki/Howto_Config for more details
+$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
+$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
+$config['generic_message_footer_html'] = '';
+
+// add a received header to outgoing mails containing the creators IP and hostname
+$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.
+$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
+$config['mail_header_delimiter'] = NULL;
+
+// number of chars allowed for line when wrapping text.
+// text wrapping is done when composing/sending messages
+$config['line_length'] = 72;
+
+// send plaintext messages as format=flowed
+$config['send_format_flowed'] = true;
+
+// According to RFC2298, return receipt envelope sender address must be empty.
+// If this option is true, Roundcube will use user's identity as envelope sender for MDN responses.
+$config['mdn_use_from'] = false;
+
+// 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
+// 4 - one identity with possibility to edit only signature
+$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'
+$config['client_mimetypes'] = null; # null == default
+
+// Path to a local mime magic database file for PHPs finfo extension.
+// Set to null if the default path should be used.
+$config['mime_magic'] = null;
+
+// Absolute path to a local mime.types mapping table file.
+// This is used to derive mime-types from the filename extension or vice versa.
+// Such a file is usually part of the apache webserver. If you don't find a file named mime.types on your system,
+// download it from http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
+$config['mime_types'] = '/etc/mime.types';
+
+// path to imagemagick identify binary
+$config['im_identify_path'] = null;
+
+// path to imagemagick convert binary
+$config['im_convert_path'] = null;
+
+// Size of thumbnails from image attachments displayed below the message content.
+// Note: whether images are displayed at all depends on the 'inline_images' option.
+// Set to 0 to display images in full size.
+$config['image_thumbnail_size'] = 240;
+
+// maximum size of uploaded contact photos in pixel
+$config['contact_photo_size'] = 160;
+
+// Enable DNS checking for e-mail address validation
+$config['email_dns_check'] = false;
+
+// Disables saving sent messages in Sent folder (like gmail) (Default: false)
+// Note: useful when SMTP server stores sent mail in user mailbox
+$config['no_save_sent_messages'] = false;
+
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/70USER_INTERFACE b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/70USER_INTERFACE
new file mode 100644
index 0000000..c392ecd
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/70USER_INTERFACE
@@ -0,0 +1,142 @@
+// ----------------------------------
+// USER INTERFACE
+// ----------------------------------
+
+// default messages sort column. Use empty value for default server's sorting,
+// or 'arrival', 'date', 'subject', 'from', 'to', 'fromto', 'size', 'cc'
+$config['message_sort_col'] = '';
+
+// default messages sort order
+$config['message_sort_order'] = 'DESC';
+
+// These cols are shown in the message list. Available cols are:
+// subject, from, to, fromto, cc, replyto, date, size, status, flag, attachment, 'priority'
+$config['list_cols'] = array('subject', 'status', 'fromto', '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
+$config['language'] = null;
+
+// use this format for date display (date or strftime format)
+$config['date_format'] = 'Y-m-d';
+
+// give this choice of date formats to the user to select from
+// Note: do not use ambiguous formats like m/d/Y
+$config['date_formats'] = array('Y-m-d', 'Y/m/d', 'Y.m.d', 'd-m-Y', 'd/m/Y', 'd.m.Y', 'j.n.Y');
+
+// use this format for time display (date or strftime format)
+$config['time_format'] = 'H:i';
+
+// give this choice of time formats to the user to select from
+$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)
+$config['date_short'] = 'D H:i';
+
+// use this format for detailed date/time formatting (derived from date_format and time_format)
+$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)
+$config['drafts_mbox'] = 'Drafts';
+
+// store spam messages in this mailbox
+// NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP)
+$config['junk_mbox'] = 'junkmail';
+
+// 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)
+$config['sent_mbox'] = 'sent-mail';
+
+// 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)
+$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)
+$config['default_folders'] = array('INBOX', 'Drafts', 'sent-mail', 'junkmail', 'Trash');
+
+// Disable localization of the default folder names listed above
+$config['show_real_foldernames'] = false;
+
+// automatically create the above listed default folders on first login
+$config['create_default_folders'] = true;
+
+// protect the default folders from renames, deletes, and subscription changes
+$config['protect_default_folders'] = true;
+
+// if in your system 0 quota means no limit set this option to true
+$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
+$config['enable_spellcheck'] = true;
+
+// Enables spellchecker exceptions dictionary.
+// Setting it to 'shared' will make the dictionary shared by all users.
+$config['spellcheck_dictionary'] = false;
+
+// Set the spell checking engine. Possible values:
+// - 'googie' - the default
+// - 'pspell' - requires the PHP Pspell module and aspell installed
+// - 'enchant' - requires the PHP Enchant module
+// - 'atd' - install your own After the Deadline server or check with the people at http://www.afterthedeadline.com before using their API
+// Since Google shut down their public spell checking service, you need to
+// connect to a Nox Spell Server when using 'googie' here. Therefore specify the 'spellcheck_uri'
+$config['spellcheck_engine'] = 'googie';
+
+// For locally installed Nox Spell Server or After the Deadline services,
+// please specify the URI to call it.
+// Get Nox Spell Server from http://orangoo.com/labs/?page_id=72 or
+// the After the Deadline package from http://www.afterthedeadline.com.
+// Leave empty to use the public API of service.afterthedeadline.com
+$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.
+$config['spellcheck_languages'] = NULL;
+
+// Makes that words with all letters capitalized will be ignored (e.g. GOOGLE)
+$config['spellcheck_ignore_caps'] = false;
+
+// Makes that words with numbers will be ignored (e.g. g00gle)
+$config['spellcheck_ignore_nums'] = false;
+
+// Makes that words with symbols will be ignored (e.g. g@@gle)
+$config['spellcheck_ignore_syms'] = false;
+
+// Use this char/string to separate recipients when composing a new message
+$config['recipients_separator'] = ',';
+
+// Number of lines at the end of a message considered to contain the signature.
+// Increase this value if signatures are not properly detected and colored
+$config['sig_max_lines'] = 15;
+
+// don't let users set pagesize to more than this value if set
+$config['max_pagesize'] = 200;
+
+// Minimal value of user's 'refresh_interval' setting (in seconds)
+$config['min_refresh_interval'] = 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.
+$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.
+$config['undo_timeout'] = 0;
+
+// A static list of canned responses which are immutable for the user
+$config['compose_responses_static'] = array(
+// array('name' => 'Canned Response 1', 'text' => 'Static Response One'),
+// array('name' => 'Canned Response 2', 'text' => 'Static Response Two'),
+);
+
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/80ADDRESSBOOKS_SETTINGS b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/80ADDRESSBOOKS_SETTINGS
new file mode 100644
index 0000000..51fbd3f
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/80ADDRESSBOOKS_SETTINGS
@@ -0,0 +1,70 @@
+// ----------------------------------
+// ADDRESSBOOK SETTINGS
+// ----------------------------------
+
+// This indicates which type of address book to use. Possible choises:
+// 'sql' (default), 'ldap' and ''.
+// 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.
+// If set to '' then no address book will be displayed or only the
+// addressbook which is created by a plugin (like CardDAV).
+$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_
+ $config['ldap_public']['Local_LDAP'] = array('hosts' => array('localhost:389'),
+
+{
+ $OUT .= " 'base_dn' \=\> " ."'". esmith::util::ldapBase($DomainName)."',";
+}
+
+ 'search_fields' => array('Email' => 'mail', 'Name' => 'cn'),
+ 'name_field' => 'cn',
+ 'email_field' => 'mail',
+ 'jobtitle_field' => 'title',
+ 'phone:work_field' => 'telephoneNumber',
+ 'street_field' => 'street',
+ 'zipcode_field' => 'postalCode',
+ 'region_field' => 'st',
+ 'locality_field' => 'l',
+ 'country_field' => 'c',
+ 'organization_field' => 'o',
+ 'department_field' => 'ou',
+ 'scope' => 'sub',
+ 'fuzzy_search' => 1);
+
+
+// An ordered array of the ids of the addressbooks that should be searched
+// when populating address autocomplete fields server-side. ex: array('sql','Verisign');
+{
+ $OUT .= "\$config['autocomplete_addressbooks'] = array('sql','Local_LDAP');";
+ $OUT .= "\$config['globaladdressbook_autocomplete'] = true;";
+}
+
+// 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
+$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.
+$config['autocomplete_threads'] = 0;
+
+// Max. numer of entries in autocomplete popup. Default: 15.
+$config['autocomplete_max'] = 15;
+
+// show address fields in this order
+// available placeholders: \{street\}, \{locality\}, \{zipcode\}, \{country\}, \{region\}
+$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
+$config['addressbook_search_mode'] = 0;
+
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/90USER_PREFERENCES b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/90USER_PREFERENCES
new file mode 100644
index 0000000..5e51cb8
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/90USER_PREFERENCES
@@ -0,0 +1,197 @@
+// ----------------------------------
+// USER PREFERENCES
+// ----------------------------------
+
+// Use this charset as fallback for message decoding
+$config['default_charset'] = 'ISO-8859-1';
+
+// skin name: folder from skins/
+$config['skin'] = '{ # for 1.5 we use larry and classic, elastic are vailable, for 1.6 only elastic is available.
+$OUT = (-d "/usr/share/roundcubemail/skins/larry") ? "larry" : "elastic"}';
+
+// Enables using standard browser windows (that can be handled as tabs)
+// instead of popup windows
+$config['standard_windows'] = false;
+
+// show up to X items in messages list view
+$config['mail_pagesize'] = 50;
+
+// show up to X items in contacts list view
+$config['addressbook_pagesize'] = 50;
+
+// sort contacts by this col (preferably either one of name, firstname, surname)
+$config['addressbook_sort_col'] = 'surname';
+
+// the way how contact names are displayed in the list
+// 0: display name
+// 1: (prefix) firstname middlename surname (suffix)
+// 2: (prefix) surname firstname middlename (suffix)
+// 3: (prefix) surname, firstname middlename (suffix)
+$config['addressbook_name_listing'] = 0;
+
+// use this timezone to display date/time
+// valid timezone identifers are listed here: php.net/manual/en/timezones.php
+// 'auto' will use the browser's timezone settings
+$config['timezone'] = 'auto';
+
+// prefer displaying HTML messages
+$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
+$config['show_images'] = 0;
+
+// open messages in new window
+$config['message_extwin'] = false;
+
+// open message compose form in new window
+$config['compose_extwin'] = false;
+
+// compose html formatted messages by default
+// 0 - never, 1 - always, 2 - on reply to HTML message, 3 - on forward or reply to HTML message
+$config['htmleditor'] = 0;
+
+// show pretty dates as standard
+$config['prettydate'] = true;
+
+// save compose message every 300 seconds (5min)
+$config['draft_autosave'] = 300;
+
+// default setting if preview pane is enabled
+$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
+$config['preview_pane_mark_read'] = 0;
+
+// Clear Trash on logout
+$config['logout_purge'] = false;
+
+// Compact INBOX on logout
+$config['logout_expunge'] = false;
+
+// Display attached images below the message body
+$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
+$config['mime_param_folding'] = 1;
+
+// Set true if deleted messages should not be displayed
+// This will make the application run slower
+$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
+$config['read_when_deleted'] = true;
+
+// Set to true to never delete messages immediately
+// Use 'Purge' to remove messages marked as deleted
+$config['flag_for_deletion'] = false;
+
+// Default interval for auto-refresh requests (in seconds)
+// These are requests for system state updates e.g. checking for new messages, etc.
+// Setting it to 0 disables the feature.
+$config['refresh_interval'] = 60;
+
+// If true all folders will be checked for recent messages
+$config['check_all_folders'] = false;
+
+// If true, after message delete/move, the next message will be displayed
+$config['display_next'] = true;
+
+// Default messages listing mode. One of 'threads' or 'list'.
+$config['default_list_mode'] = 'list';
+
+// 0 - Do not expand threads
+// 1 - Expand all threads automatically
+// 2 - Expand only threads with unread messages
+$config['autoexpand_threads'] = 0;
+
+// When replying:
+// -1 - don't cite the original message
+// 0 - place cursor below the original message
+// 1 - place cursor above original message (top posting)
+$config['reply_mode'] = 0;
+
+// When replying strip original signature from message
+$config['strip_existing_sig'] = true;
+
+// Show signature:
+// 0 - Never
+// 1 - Always
+// 2 - New messages only
+// 3 - Forwards and Replies only
+$config['show_sig'] = 1;
+
+// Use MIME encoding (quoted-printable) for 8bit characters in message body
+$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 $config['default_folders']
+$config['search_mods'] = null; // Example: array('*' => array('subject'=>1, 'from'=>1), 'Sent' => array('subject'=>1, 'to'=>1));
+
+// Defaults of the addressbook search field configuration.
+$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.
+$config['delete_always'] = false;
+
+// Directly delete messages in Junk instead of moving to Trash
+$config['delete_junk'] = 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
+$config['mdn_requests'] = 0;
+
+// Return receipt checkbox default state
+$config['mdn_default'] = 0;
+
+// Delivery Status Notification checkbox default state
+// Note: This can be used only if smtp_server is non-empty
+$config['dsn_default'] = 0;
+
+// Place replies in the folder of the message being replied to
+$config['reply_same_folder'] = false;
+
+// Sets default mode of Forward feature to "forward as attachment"
+$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.
+$config['default_addressbook'] = null;
+
+// Enables spell checking before sending a message.
+$config['spellcheck_before_send'] = false;
+
+// Skip alternative email addresses in autocompletion (show one address per contact)
+$config['autocomplete_single'] = false;
+
+// Default font for composed HTML message.
+// Supported values: Andale Mono, Arial, Arial Black, Book Antiqua, Courier New,
+// Georgia, Helvetica, Impact, Tahoma, Terminal, Times New Roman, Trebuchet MS, Verdana
+$config['default_font'] = 'Verdana';
+
+// Default font size for composed HTML message.
+// Supported sizes: 8pt, 10pt, 12pt, 14pt, 18pt, 24pt, 36pt
+$config['default_font_size'] = '10pt';
+
+// Enables display of email address with name instead of a name (and address in title)
+$config['message_show_email'] = false;
+
+// Default behavior of Reply-All button:
+// 0 - Reply-All always
+// 1 - Reply-List if mailing list is detected
+$config['reply_all_mode'] = 0;
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/95PLUGINS b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/95PLUGINS
new file mode 100644
index 0000000..4849cc4
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/95PLUGINS
@@ -0,0 +1,27 @@
+// ----------------------------------
+// PLUGINS
+// ----------------------------------
+
+// List of active plugins (in plugins/ directory)
+//Here we declare our activated plugins. If you want to add plugins, please do the following db command in a root terminal
+
+//config setprop roundcube PluginsList "plugin1,plugin2,plugin3"
+//Then issue
+//signal-event conf-roundcube or signal-event roundcube-update
+
+//The default list is : globaladdressbook,calendar,libcalendaring,contextmenu,markasjunk,vcard_attachments,newmail_notifier,emoticons,managesieve
+
+{ use esmith::ConfigDB;
+ my $DB = esmith::ConfigDB->open_ro;
+ my $plugins = $DB->get_prop('roundcube','PluginsList') || "";
+ my @plugs = split(',',$plugins);
+ my @plugd ;
+ for my $p (@plugs) {
+ push @plugd, $p if -d "/usr/share/roundcubemail/plugins/$p";
+ }
+ @plugs=@plugd;
+ s/^(.*)$/"\1"/ for @plugs;
+ $plugins = join(',',@plugs);
+ $OUT .= "\$config['plugins'] = array($plugins);";
+}
+
diff --git a/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/template-begin b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/template-begin
new file mode 100644
index 0000000..6270cb3
--- /dev/null
+++ b/root/etc/e-smith/templates/etc/roundcubemail/config.inc.php/template-begin
@@ -0,0 +1,14 @@
+{
+ $OUT = <
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/10setsieveport b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/10setsieveport
new file mode 100644
index 0000000..e5535ca
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/10setsieveport
@@ -0,0 +1,38 @@
+{
+ # This snippet sets the managesieve_port config option of the plugin if Sieve service is enabled
+ # otherwise, the default value of "null" is kept for this config option.
+
+ use esmith::ConfigDB;
+ my $cdb = esmith::ConfigDB->open_ro || die "Couldn't open ConfigDB\n";
+
+ my $sievestatus = $cdb->get_prop('sieve','status') || 'disabled';
+ my $sieveport = $cdb->get_prop('sieve','TCPPort') || 'null';
+
+ $OUT .= "// managesieve server port. When empty the port will be determined automatically\n";
+ $OUT .= "// using getservbyname() function, with 4190 as a fallback.\n";
+
+ if ($sievestatus eq 'enabled') {
+ $OUT .= "\$config['managesieve_port'] = $sieveport; \n";
+ }
+ else {
+ $OUT .= "\$config['managesieve_port'] = null; \n";
+ }
+ $OUT .= "// managesieve server address (and optional port), default is localhost.\n";
+ $OUT .= "// Replacement variables supported in host name:\n";
+ $OUT .= "// %h - user's IMAP hostname\n";
+ $OUT .= "// %n - http hostname ($_SERVER['SERVER_NAME'])\n";
+ $OUT .= "// %d - domain (http hostname without the first part)\n";
+ $OUT .= "// For example %n = mail.domain.tld, %d = domain.tld\n";
+ $OUT .= "// If port is omitted it will be determined automatically using getservbyname()\n";
+ $OUT .= "// function, with 2000 or 4190 as a fallback (depending on current version).\n";
+ $OUT .= "// Note: Add tls:// prefix to enable explicit STARTTLS\n";
+ $OUT .= "// or add ssl:// prefix to enable implicit SSL.\n";
+ if ($sievestatus eq 'enabled') {
+ $OUT .= "\$config['managesieve_host'] = 'localhost:$sieveport'; \n";
+ }
+ else {
+ $OUT .= "\$config['managesieve_host'] = null; \n";
+ }
+
+
+}
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/20default b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/20default
new file mode 100644
index 0000000..2bc3fe8
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/20default
@@ -0,0 +1,58 @@
+// authentication method. Can be CRAM-MD5, DIGEST-MD5, PLAIN, LOGIN, EXTERNAL
+// or none. Optional, defaults to best method supported by server.
+$config['managesieve_auth_type'] = null;
+
+// Optional managesieve authentication identifier to be used as authorization proxy.
+// Authenticate as a different user but act on behalf of the logged in user.
+// Works with PLAIN and DIGEST-MD5 auth.
+$config['managesieve_auth_cid'] = null;
+
+// Optional managesieve authentication password to be used for imap_auth_cid
+$config['managesieve_auth_pw'] = null;
+
+// use or not TLS for managesieve server connection
+// Note: tls:// prefix in managesieve_host is also supported
+$config['managesieve_usetls'] = false;
+
+// default contents of filters script (eg. default spam filter)
+$config['managesieve_default'] = '/etc/dovecot/sieve/global';
+
+// The name of the script which will be used when there's no user script
+$config['managesieve_script_name'] = 'managesieve';
+
+// Sieve RFC says that we should use UTF-8 endcoding for mailbox names,
+// but some implementations does not covert UTF-8 to modified UTF-7.
+// Defaults to UTF7-IMAP
+$config['managesieve_mbox_encoding'] = 'UTF-8';
+
+// I need this because my dovecot (with listescape plugin) uses
+// ':' delimiter, but creates folders with dot delimiter
+$config['managesieve_replace_delimiter'] = '';
+
+// disabled sieve extensions (body, copy, date, editheader, encoded-character,
+// envelope, environment, ereject, fileinto, ihave, imap4flags, index,
+// mailbox, mboxmetadata, regex, reject, relational, servermetadata,
+// spamtest, spamtestplus, subaddress, vacation, variables, virustest, etc.
+// Note: not all extensions are implemented
+$config['managesieve_disabled_extensions'] = array();
+
+// Enables debugging of conversation with sieve server. Logs it into /sieve
+$config['managesieve_debug'] = false;
+
+// Enables features described in http://wiki.kolab.org/KEP:14
+$config['managesieve_kolab_master'] = false;
+
+// Script name extension used for scripts including. Dovecot uses '.sieve',
+// Cyrus uses '.siv'. Doesn't matter if you have managesieve_kolab_master disabled.
+$config['managesieve_filename_extension'] = '.sieve';
+
+// List of reserved script names (without extension).
+// Scripts listed here will be not presented to the user.
+$config['managesieve_filename_exceptions'] = array();
+
+// List of domains limiting destination emails in redirect action
+// If not empty, user will need to select domain from a list
+$config['managesieve_domains'] = array();
+
+// Supported methods of notify extension. Default: 'mailto'
+$config['managesieve_notify_methods'] = array('mailto');
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/30showvacation b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/30showvacation
new file mode 100644
index 0000000..18be946
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/30showvacation
@@ -0,0 +1,7 @@
+// Enables separate management interface for vacation responses (out-of-office)
+// 0 - no separate section (roundcube default),
+// 1 - add Vacation section (new SME default),
+// 2 - add Vacation section, but hide Filters section
+$config['managesieve_vacation'] = 1;
+
+?>
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/template-begin b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/template-begin
new file mode 100644
index 0000000..6270cb3
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/managesieve/config.inc.php/template-begin
@@ -0,0 +1,14 @@
+{
+ $OUT = < verbatim RC username as reported by rcmail->get_user_name(). Depending on config loginuser@domain or login
+// %i => username used to login to imap. usually equal to %s
+// %e => user email
+// %l, %u => email localpart (%u is for backward compatibility)
+// %d => email domain
+// %h => IMAP Host
+$config["nextcloud_attachment_username"] = "%u";
+
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/30dont_try_mail_password b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/30dont_try_mail_password
new file mode 100644
index 0000000..ae645d5
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/30dont_try_mail_password
@@ -0,0 +1,4 @@
+// Don't try the email password at all, because we know it won't work
+// Defaults to false, i.e. try the password
+$config["nextcloud_attachment_dont_try_mail_password"] = false;
+
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/33folder b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/33folder
new file mode 100644
index 0000000..2368c5c
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/33folder
@@ -0,0 +1,12 @@
+// Name for the sub-folder to upload to
+// Defaults to "Mail Attachments"
+// Can't be sub-folder of sub-folder link folder/sub
+$config["nextcloud_attachment_folder"] = "{$roundcube{'nextcloudFolder'}||'Mail Attachments'}";
+
+// Translate the folder name according to the users configured locale
+// When activating this $config["nextcloud_attachment_folder"] has to be an array
+// of locale => name, e.g.
+// $config["nextcloud_attachment_folder"] = ["en_US" => "Mail Attachments", "de_DE" => "E-Mail Anhänge"]
+// If locale doesn't exist, en_US or first will be used
+// Defaults to false
+$config["nextcloud_attachment_folder_translate_name"] = false;
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/35softlimit b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/35softlimit
new file mode 100644
index 0000000..932da43
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/35softlimit
@@ -0,0 +1,5 @@
+// Limit to show a warning at for large attachments.
+// has to be smaller then $config['max_message_size']
+// set to null to disable
+$config["nextcloud_attachment_softlimit"] = "{$roundcube{'NCsoftlimit'}||$qmail{'MaxMessageSize'}||'25M'}";
+
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/37behavior b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/37behavior
new file mode 100644
index 0000000..4205bcc
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/37behavior
@@ -0,0 +1,6 @@
+// Behavior if $config['max_message_size'] is hit.
+// "prompt" to show dialog a la outlook or apple
+// "upload" to automatically upload without asking a la google
+// Defaults to "prompt"
+$config["nextcloud_attachment_behavior"] = "{$roundcube{'nextcloudBehavior'}||'prompt'}";
+
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/40excludeUsers b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/40excludeUsers
new file mode 100644
index 0000000..5f0c4c2
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/40excludeUsers
@@ -0,0 +1,57 @@
+// List of users to exclude
+// They won't be able to interact with the plugin at all
+// No prompts, no automatic uploading, no settings.
+// List by RC username or resolved username e.g. ["user@demo.com", "user"]
+$config["nextcloud_attachment_exclude_users"] = [];
+
+// Exclude users listed by uid (you need add the mapping to the address book) or email in any of the following
+// address books. This allows you to configure a hidden LDAP address book containing the users
+// to exclude.
+//
+// Hide an addressbook by setting
+// $config['ldap_public'][*] = [
+// ...
+// 'hidden' => true,
+// ...
+// ];
+// in the global config.
+//
+// Add the uid mapping via
+// $config['ldap_public'][*] = [
+// ...
+// 'fieldmap' => [
+// ...
+// //internal => ldapattr
+// 'uid' => 'uid',
+// ...
+// ],
+// ...
+// ]
+// in the global config. Replace mapped attribute with appropriate value for your directory e.g. cn
+// And replace "*" with the appropriate address book name
+$config["nextcloud_attachment_exclude_users_in_addr_books"] = [];
+
+// Exclude users that have a mapped value in an address book
+// format [ [ 'address_book', 'mapped_attribute', 'matched_value' ], ... ]
+//
+// Resulting in every user listed in the address book "address_book"
+// to be excluded if they have a "mapped_attribute", matching "matched_value".
+//
+// E.g. ['public', 'memberOf', 'cn=no_cloud,ou=groups,dc=example,dc=com']
+//
+// multiple attributes and multiple address books are supported
+$config["nextcloud_attachment_exclude_users_with_addr_book_value"] = [];
+
+// Exclude user that that are in a given group in an address book
+// format [ [ 'address_book', 'group' ], ... ]
+//
+// Resulting in every user listed in the address book "address_book" that is
+// is in group "group" to be excluded. You have to correctly configure the group
+// mapping for the LDAP entry
+//
+// E.g. ['public', 'nocloud']
+//
+// multiple groups and multiple address books are supported
+$config["nextcloud_attachment_exclude_users_in_addr_book_group"] = [];
+
+
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/60verify_https b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/60verify_https
new file mode 100644
index 0000000..be8a3f4
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/60verify_https
@@ -0,0 +1,4 @@
+// Enable/Disable certificate validation for https on WebDAV and API requests
+// Defaults to true (enabled)
+$config["nextcloud_attachment_verify_https"] = {$roundcube{'nextcloudVerifyCerts'}||'true'};
+
diff --git a/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/template-begin b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/template-begin
new file mode 100644
index 0000000..6270cb3
--- /dev/null
+++ b/root/etc/e-smith/templates/usr/share/roundcubemail/plugins/nextcloud_attachments/config.inc.php/template-begin
@@ -0,0 +1,14 @@
+{
+ $OUT = <= 11.0
+Requires: smeserver-apache >= 11.0
+Requires: roundcubemail >= 1.6
+Requires: roundcubemail < 1.7
+Requires: composer >= 2.7.8
+Requires: git
+#TODO either fuse with dovecot or put in core
+#Requires: smeserver-dovecot-extras
+Requires: jq
+Requires: php-kolab-net-ldap3
+#Requires: roundcubemail_plugins
+Obsoletes: roundcube
+AutoReqProv: no
+
+%description
+smeserver rpm to setup the roundcube IMAP mail client.
+
+%prep
+%setup
+
+%build
+perl createlinks
+
+%install
+rm -rf $RPM_BUILD_ROOT
+(cd root ; find . -depth -print | cpio -dump $RPM_BUILD_ROOT)
+rm -f %{name}-%{version}-filelist
+/sbin/e-smith/genfilelist $RPM_BUILD_ROOT \
+ --dir /var/log/php/roundcube 'attr(0755,www,www)' \
+ --dir /var/lib/php/roundcube 'attr(0755,www,www)' \
+ --dir /var/lib/php/roundcube/tmp 'attr(0755,www,www)' \
+ --dir /var/lib/php/roundcube/opcache 'attr(0755,www,www)' \
+ --dir /var/lib/php/roundcube/session 'attr(0755,www,www)' \
+ > %{name}-%{version}-filelist
+echo "%doc COPYING" >> %{name}-%{version}-filelist
+
+%clean
+cd ..
+rm -rf %{name}-%{version}
+
+%pre
+%preun
+
+%post
+
+%postun
+#uninstall
+if [ $1 = 0 ] ; then
+ /usr/bin/systemctl restart httpd-e-smith
+fi
+
+%files -f %{name}-%{version}-filelist
+%defattr(-,root,root)
+%attr(755,root,root) /usr/bin/rcplugin_update.sh
+
+%changelog
+* Sun Sep 01 2024 Jean-Philippe Pialasse 1.6-1.sme
+- initial version for SME11 [SME: ]
+
+* Mon Mar 25 2024 Jean-Philippe Pialasse 1.2-24.sme
+- fix temp event not ending because of interactive install of plugin [SME: 12530]
+- stop altering php81 ini file [SME: 12529]
+- workaround Composer could not detect the root package [SME: 12531]
+- workaround roundcube/plugin-installer is also a root requirement [SME: 12532]
+
+* Fri Mar 22 2024 Jean-Philippe Pialasse 1.2-23.sme
+- fix roundcube unable to send mail after smeserver-qpsmtpd disabling auth on port 25
+
+* Sat Feb 24 2024 Jean-Philippe Pialasse 1.2-21.sme
+- add nextcloud_attachements plugin support [SME: 12489]
+- simplify access setting using access(private,public)/status [SME: 12263]
+- Requires roundcube >= 1.6
+ up to php81, add dedicated php pool
+ using update event to config plugins
+
+* Tue Oct 31 2023 Brian Read 1.2-19.sme
+- Update params for changes from v1.6 roundcube [SME: 12415]
+
+* Sun Dec 11 2022 Jean-Philippe Pialasse 1.2-18.sme
+- fix previous patch [SME: 11430]
+
+* Sat Dec 10 2022 Jean-Philippe Pialasse 1.2-17.sme
+- remove sieverules [SME: 11430]
+ change skin on availability for 1.6
+
+* Wed Dec 07 2022 Jean-Philippe Pialasse 1.2-14.sme
+- fix list of plugins and add composer [SME: 11430]
+ do not load in conf plugins without an actual folder.
+
+* Mon Aug 01 2022 Jean-Philippe Pialasse 1.2-12.sme
+- update to httpd 2.4 access syntax [SME: 12059]
+ thanks to Vasarhelyi Zsolt
+- accept self signed certificates for imap and smtp [SME: 11430]
+- Use of undefined constant, quote around module names [SME: 11430]
+
+* Mon Apr 05 2021 Brian Read 1.2-11.sme
+- Update spec file to take out plugin rpm [SME: 11430 ]
+
+* Sun Apr 04 2021 Brian Read 1.2-10.sme
+- Add-update-event-in-createlinks-and-fix-smtp-port-in-config [SME: 11430]
+
+* Thu Mar 17 2016 stephane de Labrusse 1.2-9.sme
+- Bump the version to force the composer update
+
+* Mon Sep 21 2015 stephane de Labrusse 1.2-8.sme
+- libcalendaring calendar and tasklist are no more in the contribs
+
+* Wed Sep 02 2015 stephane de Labrusse 1.2-6.sme
+- Initial release to contribs9
+
+* Thu Apr 16 2015 stephane de labrusse 1.2-5
+- managesieve is no more used, I prefer to use sieverules (only for new installation)
+
+* Thu Apr 16 2015 stephane de labrusse 1.2-4
+- Carddav is a hugly plugin, it is now removed
+- Added a migrate fragment to remove it from DB
+
+* Sun Feb 22 2015 stephane de labrusse 1.2-3
+- Added sieverules plugins
+- Added a link for kolab-LDAP3
+
+* Thu Feb 12 2015 stephane de labrusse 1.2-2
+- Add a migrate fragment if the dns of the main domain is set to external
+- Plugins are updated by the %post section
+- Communication beetween roundcube and imap are ssl based
+- Password and login fields are saved, a random key encrypt them in cookies
+- the installer folder is forbidden by apache and by configuration file
+- The configuration is now templated in serveral files
+
+* Wed Feb 11 2015 stephane de labrusse 1.2-1
+- Switch to roundcubemail from Epel.
+
+* Sun Nov 30 2014 stephane de labrusse 1.1-5
+- code developed by Mats Schuh
+- split the config.inc.php; now the sieve vacation gets its own template
+
+* Fri Nov 28 2014 stephane de labrusse 1.1-4
+- code developed by Mats Schuh
+- Add a template in /opt/roundcube/plugins/managesieve/config.inc.php
+- Allow managesieve following the status of sieve.
+
+* Fri Sep 05 2014 stephane de labrusse 1.1-3
+- added a template in httpd.conf to forbid to browse /tmp /config /logs
+
+* Sun May 11 2014 stephane de labrusse 1.1-2
+- adapted /etc/e-smith/sql/init/80roundcube for mysql tasklists Table
+
+* Sat May 10 2014 stephane de labrusse 1.1-1
+- removed openbasedir and uploadtmpdir for roundcube compatibility
+
+* Mon Apr 14 2014 stephane de labrusse 1.0-7
+ Wed Apr 14 2014 --> Wed Apr 09 2014 or Mon Apr 14 2014 or Wed Apr 16 2014 or ....
+- removed the copymessage plugin activated
+
+* Wed Apr 02 2014 stephane de labrusse 1.0-6
+- corrected issue with the tasklists db issue
+- added auto-update for composer in the script rcplugin_update.sh
+
+* Sat Feb 15 2014 stephane de labrusse 1.0-5
+- adapted to the upstream update eg roundcube 1.0
+
+* Sun Nov 10 2013 JP Pialasse 0.9-18.sme
+- cleaning build section [SME: 7981]
+
+* Wed Nov 6 2013 JP Pialasse 0.9-17.sme
+- corrected bug: typo in patch1 [SME: 7981]
+
+* Tue Nov 05 2013 JP Pialasse 0.9-16.sme
+ Thu Nov 05 2013 --> Thu Oct 31 2013 or Tue Nov 05 2013 or Thu Nov 07 2013 or ....
+- corrected bug [SME: 7981]
+- moved out spec file sql init and other event and actions
+
+* Sat Oct 26 2013 stephane de labrusse 0.9.15
+- Change the version of roundcubemail-plugins-kolab to 3.02 : http://git.kolab.org/roundcubemail-plugins-kolab/
+
+* Sun Oct 20 2013 stephane de labrusse 0.9.14
+- Change the original https_only
+
+* Sun Oct 13 2013 stephane de labrusse 0.9.13
+ Sat Oct 13 2013 --> Sat Oct 12 2013 or Sun Oct 13 2013 or Sat Oct 19 2013 or ....
+- Add the Kolab calendar plugin : http://git.kolab.org/roundcubemail-plugins-kolab/tree/plugins/calendar
+- Add the context menu for right click, very useful : http://www.tehinterweb.co.uk/roundcube/#picontextmenu
+- Add the "Mark as Junk 2" to kick spam to junkmail : http://www.tehinterweb.co.uk/roundcube/#pimarkasjunk2
+
+* Sat Oct 5 2013 stephane de Labrusse 0.9.12
+- Add the SME Server internal LDAP addressbooks in roundcube
+
+* Sat Sep 21 2013 Stephane de Labrusse 0.9.11
+- Add carddav functionnality http://www.crash-override.net/carddav.html
+
+* Wed Jun 05 2013 Stephane de Labrusse 0.9.9
+- add a tmp folder in httpd.conf
+* Mon Jun 03 2013 Stephane de Labrusse
+- requires sme8 0.9-8
+
+* Thu Jun 28 2007 Stephen Noble
+- add domain property to use existing host or domain 0.9-7
+
+* Thu Jun 21 2007 Stephen Noble
+- update .spec file 0.9-6
+
+* Thu Jun 21 2007 Stephen Noble
+- automate config file creation
+- proxypass to fix https redirect bug
+- [0.9-5]
+
+* Fri Apr 6 2007 Stephen Noble
+- revert mysql password creation
+- [0.9-4]
+
+* Wed Feb 14 2007 Stephen Noble
+- remove phpinfo
+- simplify mysql password creation
+- don't alias / in httpd for nul values in URL
+- [0.9-3]
+
+* Thu Dec 14 2006 Stephen Noble
+- php_admin_value eaccelerator enabled
+- [0.9-2]
+
+* Tue Dec 12 2006 Stephen Noble
+- initial release
+- [0.9-1]