{
return "# Mailbox sharing is not enabled"
  if (($dovecot{'SharedMailbox'} || 'disabled') eq 'disabled') && (($dovecot{'PublicMailbox'} || 'disabled') eq 'disabled');

push @plugins, 'acl';
push @imap_plugins, 'imap_acl';

my $common =<<'_EOF';

mail_access_groups = sharedmailbox

service dict {
  unix_listener dict {
    mode = 0660
    group = sharedmailbox
  }
}

service auth {
  unix_listener auth-userdb {
    mode = 0660
    group = sharedmailbox
  }
}

service imap {
  executable = imap imap-postlogin
}

service imap-postlogin {
  executable = script-login -d /usr/bin/imap-postlogin
  unix_listener imap-postlogin {
  }
}


namespace {
  type = private
  separator = /
  prefix =
  inbox = yes
}
_EOF

my $shared_mb = "\n# SharedMailbox is disabled\n";
my $public_mb = "\n# PublicMailbox is disabled\n";
if (($dovecot{'SharedMailbox'} || 'disabled') eq 'enabled'){
 $shared_mb =<<'_EOF';
namespace {
  type = shared
  separator = /
  prefix = shared/%%u/
  location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u
  subscriptions = no
  list = children
}
_EOF
}
if (($dovecot{'PublicMailbox'} || 'disabled') eq 'enabled'){
  $public_mb =<<'_EOF';
namespace {
  type = public
  separator = /
  prefix = public/
  location = maildir:/home/e-smith/files/public
  subscriptions = no
  list = children
}
_EOF
}

my $acl =<<'_EOF';
plugin {
  acl_shared_dict = file:/home/e-smith/db/dovecot/sharedmailbox.db
}

plugin {
  acl = vfile
}

plugin {
  acl_anyone = allow
}

_EOF

push @conf, $common, $shared_mb, $public_mb, $acl;
$OUT .= '';
}
