Compare commits

..

1 Commits

Author SHA1 Message Date
Daniel Berteaud 4be615ba2c Grant group write perm 13 years ago
  1. 2
      createlinks
  2. 12
      root/etc/e-smith/db/configuration/migrate/ImapsLimits
  3. 36
      root/etc/e-smith/events/actions/dovecot-acl
  4. 2
      root/etc/e-smith/templates-user/.qmail/80DovecotLDA
  5. 4
      root/etc/e-smith/templates/etc/dovecot/dovecot.conf/15auth
  6. 18
      root/etc/e-smith/templates/etc/dovecot/dovecot.conf/27Limits
  7. 1
      root/etc/e-smith/templates/etc/dovecot/dovecot.conf/40lda
  8. 2
      root/etc/e-smith/templates/etc/dovecot/dovecot.conf/65pluginAcl
  9. 4
      root/var/service/dovecot/control/1
  10. 30
      smeserver-dovecot.spec

@ -23,4 +23,4 @@ event_link("adjust-dovecot", "bootstrap-console-save", "02");
event_link("dovecot-acl", "email-update", "85"); event_link("dovecot-acl", "email-update", "85");
event_link("dovecot-acl", "user-create", "85"); event_link("dovecot-acl", "user-create", "85");
safe_touch("root/etc/dovecot/sharedmailbox/dict.db"); safe_touch("root/var/lib/dovecot/sharedmailbox/dict.db");

@ -1,12 +0,0 @@
{
# Those limits are now defined on the imap entry
foreach my $prop (qw/ConcurrencyLimit ConcurrencyLimitPerIP ProcessMemoryLimit/){
my $imaps_value = $DB->get_prop_and_delete('imaps', $prop);
next unless ($imaps_value);
my $imap_value = $DB->get_prop('imap', $prop);
next if ($imap_value);
$DB->set_prop('imap', $prop, $imaps_value);
}
}

@ -16,21 +16,19 @@ my $event = $ARGV[0];
# SharedMailboxes disabled ? # SharedMailboxes disabled ?
if (($dovecot->prop('SharedMailbox') || 'disabled') eq 'disabled'){ if (($dovecot->prop('SharedMailbox') || 'disabled') eq 'disabled'){
if (($dovecot->prop('SharedMailboxAcl') || 'yes') ne 'no'){ foreach my $user ($a->users){
foreach my $user ($a->users){ my $name = $user->key;
my $name = $user->key; die "Error removing SharedMailbox ACLs ($name"."'s Maildir)\n" unless (
die "Error removing SharedMailbox ACLs ($name"."'s Maildir)\n" unless ( system('/usr/bin/setfacl',
system('/usr/bin/setfacl', '-R',
'-R', '-x',
'-x', 'g:sharedmailbox',
'g:sharedmailbox', "/home/e-smith/files/users/$name") == 0 &&
"/home/e-smith/files/users/$name") == 0 && system('/bin/chmod',
system('/bin/chmod', '-R',
'-R', 'g-s',
'g-s', "/home/e-smith/files/users/$name/Maildir") == 0
"/home/e-smith/files/users/$name/Maildir") == 0 );
);
}
} }
$dovecot->set_prop('SharedMailboxAcl','no'); $dovecot->set_prop('SharedMailboxAcl','no');
exit(0); exit(0);
@ -64,11 +62,11 @@ sub set_acl {
system('/usr/bin/setfacl', system('/usr/bin/setfacl',
'-R', '-R',
'-m', '-m',
'u::rwX,g::rwX,o::rX,g:sharedmailbox:rwX,d:u::rwX,d:g::rwX,d:g:sharedmailbox:rwX,d:o::rX', 'g:sharedmailbox:rwX,d:g:sharedmailbox:rwX',
"/home/e-smith/files/users/$user/Maildir") == 0 && "/home/e-smith/files/users/$user/Maildir") == 0 &&
# Grant sharedmailbox group permission to go through # Grant sharedmailbox group permission to go through
# the home dir so it can access the Maildir, but don't let it read # the home dir so it can access the Maildir, but let it read
# anything (except the Maildir) # anything else
system('/usr/bin/setfacl', system('/usr/bin/setfacl',
'-m', '-m',
'g:sharedmailbox:x', 'g:sharedmailbox:x',
@ -83,7 +81,7 @@ sub set_acl {
# http://wiki2.dovecot.org/Errors/ChgrpNoPerm # http://wiki2.dovecot.org/Errors/ChgrpNoPerm
sub dirperm { sub dirperm {
system('/bin/chmod', system('/bin/chmod',
'g+s', 'g+ws',
"$_") if (-d); "$_") if (-d);
} }

@ -14,7 +14,7 @@
$OUT .= "# No local delivery (Dovecot LDA)\n"; $OUT .= "# No local delivery (Dovecot LDA)\n";
} }
else{ else{
$OUT .= '| /var/qmail/bin/preline -f /usr/libexec/dovecot/dovecot-lda -a "$RECIPIENT"; if [ $? -ne 0 ] ; then exit -1; else exit 99; fi;'; $OUT .= '| /var/qmail/bin/preline -f /usr/libexec/dovecot/dovecot-lda; if [ $? -ne 0 ] ; then exit -1; else exit 99; fi;';
} }
} }

@ -1,11 +1,9 @@
{ {
my $greeting = $dovecot{'Greeting'} || 'SME Server IMAP service powered by doveot'; my $greeting = $dovecot{'Greeting'} || 'SME Server IMAP service powered by doveot';
$OUT .= "login_greeting = \"$greeting\"\n"; $OUT .= "login_greeting = \"$greeting\"\n";
our $args = $dovecot{PassDBArgs} || '';
} }
passdb \{ passdb \{
driver = pam driver = pam
{ $OUT .= ($args ne '') ? "args = $args\n" : ''; }
\} \}
{ {
if (($dovecot{'AdminIsMaster'} || 'disabled') eq 'enabled'){ if (($dovecot{'AdminIsMaster'} || 'disabled') eq 'enabled'){
@ -13,7 +11,7 @@ if (($dovecot{'AdminIsMaster'} || 'disabled') eq 'enabled'){
passdb { passdb {
driver = pam driver = pam
args = $args dovecotadmin args = dovecotadmin
master = yes master = yes
} }
auth_master_user_separator = * auth_master_user_separator = *

@ -1,18 +0,0 @@
{
my $ConcurrencyLimit = $imap{ConcurrencyLimit} || '400';
my $ConcurrencyLimitPerIP = $imap{ConcurrencyLimitPerIP} || '12';
my $ProcessMemoryLimit = $imap{ProcessMemoryLimit} || '256000000';
$OUT .=<<"END";
service imap {
process_limit = $ConcurrencyLimit
vsz_limit = $ProcessMemoryLimit
}
protocol imap {
mail_max_userip_connections = $ConcurrencyLimitPerIP
}
END
}

@ -15,6 +15,5 @@ if ($subject ne ''){
protocol lda \{ protocol lda \{
mail_plugins = $mail_plugins {$OUT .= (($sieve{'status'} || 'disabled') eq 'enabled') ? 'sieve':''} mail_plugins = $mail_plugins {$OUT .= (($sieve{'status'} || 'disabled') eq 'enabled') ? 'sieve':''}
submission_host = 127.0.0.1
\} \}

@ -50,7 +50,7 @@ namespace {
} }
plugin { plugin {
acl_shared_dict = file:/etc/dovecot/sharedmailbox/dict.db acl_shared_dict = file:/var/lib/dovecot/sharedmailbox/dict.db
} }
plugin { plugin {

@ -33,8 +33,8 @@ my $pem = "./ssl/imapd.pem";
# Now copy system pem file into jail used by ldap # Now copy system pem file into jail used by ldap
copy("/home/e-smith/ssl.pem/$s.$d.pem", "$pem.$$") copy("/home/e-smith/ssl.pem/$s.$d.pem", "$pem.$$")
or die "failed to copy SSL PEM: $!"; or die "failed to copy SSL PEM: $!";
chmod 0440, "$pem.$$"; chmod 0400, "$pem.$$";
esmith::util::chownFile("root", "stunnel", "$pem.$$"); esmith::util::chownFile("root", "root", "$pem.$$");
rename("$pem.$$", "$pem") rename("$pem.$$", "$pem")
or die "failed to rename $pem.$$ to $pem: $!"; or die "failed to rename $pem.$$ to $pem: $!";

@ -1,5 +1,5 @@
%define version 0.1.6 %define version 0.1
%define release 1.beta0 %define release 0.beta27
%define name smeserver-dovecot %define name smeserver-dovecot
@ -29,28 +29,6 @@ Configure the dovecot IMAP server with sieve scripts support,
quota, ACL, extended logging, master user quota, ACL, extended logging, master user
%changelog %changelog
* Wed Jan 7 2015 Daniel Berteaud <daniel@firewall-services.com> - 0.1.6-1
- Allow args in passdb
* Wed Jul 9 2014 Daniel Berteaud <daniel@firewall-services.com> - 0.1.5-1
- Remove trailing / when defining permissions on sharedmailbox dir
* Fri Feb 7 2014 Daniel Berteaud <daniel@firewall-services.com> - 0.1.4-1
- Migrate limits from imaps to imap DB entry
- Fix permissions on imapd.pem (for pop3s)
* Tue Dec 24 2013 Daniel Berteaud <daniel@firewall-services.com> - 0.1.3-1
- Apply process limits
* Tue Oct 29 2013 Daniel Berteaud <daniel@firewall-services.com> - 0.1.2-1
- Use SMTP for sending sieve notifications
* Mon Mar 25 2013 Daniel Berteaud <daniel@firewall-services.com> - 0.1.1-1
- Fix ACL and default ACL to set 755/644 on maildirs
* Tue Feb 12 2013 Daniel Berteaud <daniel@firewall-services.com> - 0.1.0-1
- Pass the recipient variable to dovcot-lda
* Tue Nov 29 2011 Daniel Berteaud <daniel@firewall-services.com> - 0.1 * Tue Nov 29 2011 Daniel Berteaud <daniel@firewall-services.com> - 0.1
- initial release - initial release
@ -71,8 +49,8 @@ perl createlinks
--file /var/service/dovecot/log/run 'attr(0755,root,root)' \ --file /var/service/dovecot/log/run 'attr(0755,root,root)' \
--file /var/service/dovecot/control/1 'attr(0755,root,root)' \ --file /var/service/dovecot/control/1 'attr(0755,root,root)' \
--dir /var/log/dovecot 'attr(0750,smelog,smelog)' \ --dir /var/log/dovecot 'attr(0750,smelog,smelog)' \
--dir /etc/dovecot/sharedmailbox 'attr(2770,root,sharedmailbox)' \ --dir /var/lib/dovecot/sharedmailbox 'attr(2770,root,sharedmailbox)' \
--file /etc/dovecot/sharedmailbox/dict.db 'attr(0660,root,sharedmailbox) %config(noreplace)' \ --file /var/lib/dovecot/sharedmailbox/dict.db 'attr(0660,root,sharedmailbox) %config(noreplace)' \
--file /usr/bin/imap-postlogin 'attr(0755,root,root)' \ --file /usr/bin/imap-postlogin 'attr(0755,root,root)' \
> %{name}-%{version}-filelist > %{name}-%{version}-filelist

Loading…
Cancel
Save