initial commit of file from CVS for smeserver-dovecot on Thu 26 Oct 11:25:44 BST 2023
This commit is contained in:
parent
1cc640641d
commit
ca0b639483
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
*.rpm
|
||||
*.log
|
||||
*spec-20*
|
||||
*.tar.xz
|
21
Makefile
Normal file
21
Makefile
Normal file
@ -0,0 +1,21 @@
|
||||
# Makefile for source rpm: smeserver-dovecot
|
||||
# $Id: Makefile,v 1.1 2016/02/05 23:44:06 stephdl Exp $
|
||||
NAME := smeserver-dovecot
|
||||
SPECFILE = $(firstword $(wildcard *.spec))
|
||||
|
||||
define find-makefile-common
|
||||
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(find-makefile-common))
|
||||
|
||||
ifeq ($(MAKEFILE_COMMON),)
|
||||
# attept a checkout
|
||||
define checkout-makefile-common
|
||||
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
|
||||
endif
|
||||
|
||||
include $(MAKEFILE_COMMON)
|
19
README.md
19
README.md
@ -1,3 +1,18 @@
|
||||
# smeserver-dovecot
|
||||
# <img src="https://www.koozali.org/images/koozali/Logo/Png/Koozali_logo_2016.png" width="25%" vertical="auto" style="vertical-align:bottom"> smeserver-dovecot
|
||||
|
||||
SMEServer Koozali developed git repo for smeserver-dovecot smeserver
|
||||
SMEServer Koozali developed git repo for smeserver-dovecot smeserver
|
||||
|
||||
## Wiki
|
||||
<br />https://wiki.koozali.org/Dovecot-extras
|
||||
<br />https://wiki.koozali.org/Smeserver-dovecot-extras
|
||||
|
||||
## Bugzilla
|
||||
Show list of outstanding bugs: [here](https://bugs.koozali.org/buglist.cgi?component=smeserver-dovecot&product=SME%20Server%2010.X&query_format=advanced&limit=0&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=CONFIRMED)
|
||||
|
||||
## Description
|
||||
|
||||
<br />*This description has been generated by an LLM AI system and cannot be relied on to be fully correct.*
|
||||
*Once it has been checked, then this comment will be deleted*
|
||||
<br />
|
||||
|
||||
Dovecot is an open source software service that provides secure access to emails, calendars, and other applications for both users and administrators. It works by creating a secure connection between a mail server and an email client, allowing users to securely sync and download their emails, calendar events, contacts, and other data. Dovecot also provides a secure authentication process to ensure that only users with the proper credentials can access the email server. It is highly reliable and scalable, making it a popular choice for large and small businesses alike. Additionally, Dovecot is easy to install and configure, so businesses can get started quickly and easily.
|
||||
|
1
contriborbase
Normal file
1
contriborbase
Normal file
@ -0,0 +1 @@
|
||||
sme10
|
27
createlinks
Normal file
27
createlinks
Normal file
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use esmith::Build::CreateLinks qw(:all);
|
||||
|
||||
|
||||
templates2events("/etc/dovecot/dovecot.conf", qw(email-update bootstrap-console-save ssl-update smeserver-dovecot-update ip-change));
|
||||
templates2events("/etc/dovecot/ssl/imapd.pem", qw(email-update bootstrap-console-save ssl-update smeserver-dovecot-update ip-change));
|
||||
templates2events("/etc/dovecot/master.users", qw(email-update bootstrap-console-save smeserver-dovecot-update));
|
||||
templates2events("/etc/pam.d/dovecotadmin", qw(email-update bootstrap-console-save smeserver-dovecot-update));
|
||||
|
||||
safe_symlink("sigusr2", "root/etc/e-smith/events/email-update/services2adjust/dovecot");
|
||||
|
||||
event_link("adjust-dovecot", "email-update", "02");
|
||||
event_link("adjust-dovecot", "bootstrap-console-save", "02");
|
||||
|
||||
#smeserver-dovecot-update
|
||||
safe_symlink("restart", "root/etc/e-smith/events/smeserver-dovecot-update/services2adjust/dovecot");
|
||||
safe_symlink("restart", "root/etc/e-smith/events/smeserver-dovecot-update/services2adjust/rsyslog");
|
||||
event_link("adjust-dovecot", "smeserver-dovecot-update", "02");
|
||||
event_link("systemd-reload", "smeserver-dovecot-update", "89");
|
||||
event_link("systemd-default", "smeserver-dovecot-update", "88");
|
||||
templates2events("/etc/rsyslog.conf","smeserver-dovecot-update");
|
||||
templates2events("/usr/lib/systemd/system/dovecot.service.d/50koozali.conf", qw(bootstrap-console-save console-save post-install post-upgrade smeserver-dovecot-update ));
|
||||
|
||||
# in case the ip change
|
||||
safe_symlink("sigusr2", "root/etc/e-smith/events/ip-change/services2adjust/dovecot");
|
||||
|
0
root/etc/dovecot/ssl/.gitignore
vendored
Normal file
0
root/etc/dovecot/ssl/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
enabled
|
@ -0,0 +1 @@
|
||||
enabled
|
1
root/etc/e-smith/db/configuration/defaults/dovecot/type
Normal file
1
root/etc/e-smith/db/configuration/defaults/dovecot/type
Normal file
@ -0,0 +1 @@
|
||||
service
|
1
root/etc/e-smith/db/configuration/defaults/imap/TCPPort
Normal file
1
root/etc/e-smith/db/configuration/defaults/imap/TCPPort
Normal file
@ -0,0 +1 @@
|
||||
143
|
1
root/etc/e-smith/db/configuration/defaults/imap/access
Normal file
1
root/etc/e-smith/db/configuration/defaults/imap/access
Normal file
@ -0,0 +1 @@
|
||||
private
|
1
root/etc/e-smith/db/configuration/defaults/imap/status
Normal file
1
root/etc/e-smith/db/configuration/defaults/imap/status
Normal file
@ -0,0 +1 @@
|
||||
enabled
|
1
root/etc/e-smith/db/configuration/defaults/imap/type
Normal file
1
root/etc/e-smith/db/configuration/defaults/imap/type
Normal file
@ -0,0 +1 @@
|
||||
configuration
|
1
root/etc/e-smith/db/configuration/defaults/imaps/TCPPort
Normal file
1
root/etc/e-smith/db/configuration/defaults/imaps/TCPPort
Normal file
@ -0,0 +1 @@
|
||||
993
|
1
root/etc/e-smith/db/configuration/defaults/imaps/access
Normal file
1
root/etc/e-smith/db/configuration/defaults/imaps/access
Normal file
@ -0,0 +1 @@
|
||||
private
|
1
root/etc/e-smith/db/configuration/defaults/imaps/status
Normal file
1
root/etc/e-smith/db/configuration/defaults/imaps/status
Normal file
@ -0,0 +1 @@
|
||||
enabled
|
1
root/etc/e-smith/db/configuration/defaults/imaps/type
Normal file
1
root/etc/e-smith/db/configuration/defaults/imaps/type
Normal file
@ -0,0 +1 @@
|
||||
configuration
|
1
root/etc/e-smith/db/configuration/defaults/pop3/TCPPort
Normal file
1
root/etc/e-smith/db/configuration/defaults/pop3/TCPPort
Normal file
@ -0,0 +1 @@
|
||||
110
|
1
root/etc/e-smith/db/configuration/defaults/pop3/access
Normal file
1
root/etc/e-smith/db/configuration/defaults/pop3/access
Normal file
@ -0,0 +1 @@
|
||||
private
|
1
root/etc/e-smith/db/configuration/defaults/pop3/status
Normal file
1
root/etc/e-smith/db/configuration/defaults/pop3/status
Normal file
@ -0,0 +1 @@
|
||||
enabled
|
1
root/etc/e-smith/db/configuration/defaults/pop3/type
Normal file
1
root/etc/e-smith/db/configuration/defaults/pop3/type
Normal file
@ -0,0 +1 @@
|
||||
configuration
|
1
root/etc/e-smith/db/configuration/defaults/pop3s/TCPPort
Normal file
1
root/etc/e-smith/db/configuration/defaults/pop3s/TCPPort
Normal file
@ -0,0 +1 @@
|
||||
995
|
1
root/etc/e-smith/db/configuration/defaults/pop3s/access
Normal file
1
root/etc/e-smith/db/configuration/defaults/pop3s/access
Normal file
@ -0,0 +1 @@
|
||||
private
|
1
root/etc/e-smith/db/configuration/defaults/pop3s/status
Normal file
1
root/etc/e-smith/db/configuration/defaults/pop3s/status
Normal file
@ -0,0 +1 @@
|
||||
enabled
|
1
root/etc/e-smith/db/configuration/defaults/pop3s/type
Normal file
1
root/etc/e-smith/db/configuration/defaults/pop3s/type
Normal file
@ -0,0 +1 @@
|
||||
configuration
|
1
root/etc/e-smith/db/configuration/force/dovecot/status
Normal file
1
root/etc/e-smith/db/configuration/force/dovecot/status
Normal file
@ -0,0 +1 @@
|
||||
enabled
|
1
root/etc/e-smith/db/configuration/force/imap/status
Normal file
1
root/etc/e-smith/db/configuration/force/imap/status
Normal file
@ -0,0 +1 @@
|
||||
enabled
|
12
root/etc/e-smith/db/configuration/migrate/ImapsLimits
Normal file
12
root/etc/e-smith/db/configuration/migrate/ImapsLimits
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
|
||||
# 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);
|
||||
}
|
||||
|
||||
}
|
23
root/etc/e-smith/db/configuration/migrate/PopMemLimit
Normal file
23
root/etc/e-smith/db/configuration/migrate/PopMemLimit
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
|
||||
# This limit is renamed after ProcessMemoryLimit for consistency with imap entry
|
||||
foreach my $prop (qw/MemLimit/){
|
||||
my $pop_value = $DB->get_prop_and_delete('pop3', $prop);
|
||||
next unless ($pop_value);
|
||||
my $curpop_value = $DB->get_prop('pop3', 'ProcessMemoryLimit');
|
||||
next if ($curpop_value);
|
||||
$DB->set_prop('pop3', 'ProcessMemoryLimit', $pop_value);
|
||||
}
|
||||
|
||||
# Those limits are now defined on the pop entry
|
||||
foreach my $prop (qw/MemLimit/){
|
||||
my $pops_value = $DB->get_prop_and_delete('pop3s', $prop);
|
||||
next unless ($pops_value);
|
||||
my $pop_value = $DB->get_prop('pop3', 'ProcessMemoryLimit');
|
||||
next if ($pop_value);
|
||||
$DB->set_prop('pop3', 'ProcessMemoryLimit' , $imaps_value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
5
root/etc/e-smith/db/configuration/migrate/dovecot
Normal file
5
root/etc/e-smith/db/configuration/migrate/dovecot
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
foreach my $sservice qw(imap imaps pop3 pop3s) {
|
||||
$DB->set_prop($sservice, "type", "configuration") if ${$sservice}{type} eq "service";
|
||||
}
|
||||
}
|
34
root/etc/e-smith/events/actions/adjust-dovecot
Normal file
34
root/etc/e-smith/events/actions/adjust-dovecot
Normal file
@ -0,0 +1,34 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
|
||||
# This script just ensure the dovecot service is enabled
|
||||
# if imap or imaps is enabled
|
||||
# It will also entirely disable the dovecot service if both imap,
|
||||
# imaps pop3 and pop3s are disabled
|
||||
|
||||
use esmith::ConfigDB;
|
||||
|
||||
my $c = esmith::ConfigDB->open() or die "Couldn't open Config DB\n";
|
||||
|
||||
my $imap = $c->get('imap');
|
||||
my $imaps = $c->get('imaps');
|
||||
my $pop = $c->get('pop3');
|
||||
my $pops = $c->get('pop3s');
|
||||
my $dovecot = $c->get('dovecot') || $c->new_record('dovecot',
|
||||
{ type => 'service',
|
||||
status => 'enabled'});
|
||||
|
||||
my $imapStatus = $imap->prop('status') || 'enabled';
|
||||
my $imapsStatus = $imaps->prop('status') || 'enabled';
|
||||
my $popStatus = $pop->prop('status') || 'enabled';
|
||||
my $popsStatus = $pops->prop('status') || 'enabled';
|
||||
|
||||
if ($imapStatus eq 'enabled' or $imapsStatus eq 'enabled' or $popStatus eq 'enabled' or $popsStatus eq 'enabled'){
|
||||
$dovecot->set_prop('status', 'enabled');
|
||||
}
|
||||
else{
|
||||
$dovecot->set_prop('status', 'disabled');
|
||||
}
|
||||
|
||||
# also if /etc/pam.d/pop3 exists we unlink it, as it was needed by former e-smith-pop3
|
||||
unlink('/etc/pam.d/pop3');
|
@ -0,0 +1,2 @@
|
||||
sigusr1
|
||||
sighup
|
@ -0,0 +1,4 @@
|
||||
TEMPLATE_PATH="/home/e-smith/ssl.pem"
|
||||
OUTPUT_FILENAME="/etc/dovecot/ssl/imapd.pem"
|
||||
GID="stunnel"
|
||||
PERMS=0640
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
our $proto = '';
|
||||
if ((($imap{'status'} || 'disabled') eq 'enabled') ||
|
||||
(($imaps{'status'} || 'disabled') eq 'enabled')){
|
||||
$proto .= "imap";
|
||||
}
|
||||
$OUT .= "";
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
{
|
||||
if ((($pop3{'status'} || 'disabled') eq 'enabled') ||
|
||||
(($pop3s{'status'} || 'disabled') eq 'enabled')) {
|
||||
$proto .= " pop3";
|
||||
}
|
||||
|
||||
$OUT .= "";
|
||||
}
|
@ -0,0 +1 @@
|
||||
protocols = {$proto}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
$OUT = "#only accept username as default, not " unless ($dovecot{AcceptFullEmail} || "enabled" ) eq "enabled";
|
||||
|
||||
$OUT = "auth_username_format = \%n";
|
||||
|
||||
}
|
23
root/etc/e-smith/templates/etc/dovecot/dovecot.conf/15auth
Normal file
23
root/etc/e-smith/templates/etc/dovecot/dovecot.conf/15auth
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
our $args = $dovecot{PassDBArgs} || '';
|
||||
}
|
||||
passdb \{
|
||||
driver = pam
|
||||
{ $OUT .= ($args ne '') ? "args = $args\n" : ''; }
|
||||
\}
|
||||
{
|
||||
if (($dovecot{'AdminIsMaster'} || 'disabled') eq 'enabled'){
|
||||
$OUT .=<<"HERE";
|
||||
|
||||
passdb {
|
||||
driver = pam
|
||||
args = $args dovecotadmin
|
||||
master = yes
|
||||
}
|
||||
auth_master_user_separator = *
|
||||
HERE
|
||||
}
|
||||
}
|
||||
userdb \{
|
||||
driver = passwd
|
||||
\}
|
@ -0,0 +1,4 @@
|
||||
log_path = syslog
|
||||
# we choose same as rsyslog for SME "%b %e %H:%M:%S " and not "%b %d %H:%M:%S "
|
||||
log_timestamp = "%b %e %H:%M:%S "
|
||||
auth_verbose = yes
|
@ -0,0 +1,3 @@
|
||||
mail_location = maildir:~/Maildir
|
||||
first_valid_uid = 101
|
||||
|
22
root/etc/e-smith/templates/etc/dovecot/dovecot.conf/27Limits
Normal file
22
root/etc/e-smith/templates/etc/dovecot/dovecot.conf/27Limits
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
|
||||
my $ConcurrencyLimit = $imap{ConcurrencyLimit} || '400';
|
||||
my $ConcurrencyLimitPerIP = $imap{ConcurrencyLimitPerIP} || '12';
|
||||
my $ProcessMemoryLimit = $imap{ProcessMemoryLimit} || '256000000';
|
||||
|
||||
my $greeting = $imap{'Greeting'} || $dovecot{'Greeting'} || 'SME Server IMAP service powered by dovecot';
|
||||
|
||||
$OUT .=<<"END";
|
||||
|
||||
service imap {
|
||||
process_limit = $ConcurrencyLimit
|
||||
vsz_limit = $ProcessMemoryLimit
|
||||
client_limit = 1
|
||||
}
|
||||
protocol imap {
|
||||
login_greeting = $greeting
|
||||
mail_max_userip_connections = $ConcurrencyLimitPerIP
|
||||
}
|
||||
END
|
||||
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
{
|
||||
|
||||
my $ConcurrencyLimit = $pop3{ConcurrencyLimit} || '40';
|
||||
my $ConcurrencyLimitPerIP = $pop3{ConcurrencyLimitPerIP} || '4';
|
||||
my $ProcessMemoryLimit = $pop3{ProcessMemoryLimit} || '40000000';
|
||||
|
||||
my $greeting = $pop3{'Greeting'} || $dovecot{'Greeting'} || 'SME Server POP3 service powered by dovecot';
|
||||
|
||||
$OUT .=<<"END";
|
||||
|
||||
service pop3 {
|
||||
process_limit = $ConcurrencyLimit
|
||||
vsz_limit = $ProcessMemoryLimit
|
||||
client_limit = 1
|
||||
}
|
||||
protocol pop3 {
|
||||
mail_max_userip_connections = $ConcurrencyLimitPerIP
|
||||
login_greeting = $greeting
|
||||
}
|
||||
END
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,66 @@
|
||||
{
|
||||
# (($imap{'status'} || 'disabled') eq 'disabled') to remove if we use for pop3, to test
|
||||
if ((($imap{'status'} || 'disabled') eq 'disabled') ||
|
||||
(($imap{'AllowPlainText'} || 'enabled') eq 'disabled')){
|
||||
$OUT .= "disable_plaintext_auth = yes\n";
|
||||
}
|
||||
else {
|
||||
$OUT .= "disable_plaintext_auth = no\n";
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
# TODO IPV6 ::
|
||||
$LOCALIP = $LocalIP;
|
||||
$EXTERNALIP = $ExternalIP || "";
|
||||
$imapPort = $imap{'TCPPort'} || '110';
|
||||
$imapsPort = $imaps{'TCPPort'} || '995';
|
||||
$imapStatus = $imap{'status'} || 'disabled';
|
||||
$imapsStatus = $imaps{'status'} || 'disabled';
|
||||
$imapAccess = $imap{'access'} || 'localhost';
|
||||
$imapsAccess = $imaps{'access'} || 'private';
|
||||
$imapListenIP = $imap{'ListenIP'} || '';
|
||||
$imapsListenIP = $imaps{'ListenIP'} || '';
|
||||
|
||||
if ($imapStatus eq 'disabled') {
|
||||
$imapAddress = '127.0.0.1';
|
||||
$imapPort='0';
|
||||
} elsif ($imapAccess eq 'localhost') {
|
||||
$imapAddress = '127.0.0.1';
|
||||
} elsif ($imapAccess eq 'private') {
|
||||
$imapAddress = "127.0.0.1 $LOCALIP";
|
||||
} elsif ($imapAccess eq 'public') {
|
||||
$imapAddress = "127.0.0.1 $LOCALIP $EXTERNALIP";
|
||||
}
|
||||
$imapAddress .= " $imapListenIP";
|
||||
|
||||
|
||||
if ($imapsStatus eq 'disabled') {
|
||||
$imapsAddress = '127.0.0.1';
|
||||
$imapsPort='0';
|
||||
} elsif ($imapsAccess eq 'localhost') {
|
||||
$imapsAddress = '127.0.0.1';
|
||||
} elsif ($imapsAccess eq 'private') {
|
||||
$imapsAddress = "127.0.0.1 $LOCALIP";
|
||||
} elsif ($imapsAccess eq 'public') {
|
||||
$imapsAddress = "127.0.0.1 $LOCALIP $EXTERNALIP";
|
||||
}
|
||||
$imapsAddress .= " $imapsListenIP";
|
||||
|
||||
$OUT .= "service imap-login \{
|
||||
inet_listener imap \{
|
||||
port = $imapPort
|
||||
address = $imapAddress
|
||||
\}
|
||||
inet_listener imaps \{
|
||||
port = $imapsPort
|
||||
ssl = yes
|
||||
address = $imapsAddress
|
||||
\}
|
||||
|
||||
service_count = 0
|
||||
process_min_avail = 2
|
||||
|
||||
\}";
|
||||
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
{
|
||||
# TODO IPV6 ::
|
||||
$LOCALIP = $LocalIP;
|
||||
$EXTERNALIP = $ExternalIP || "";
|
||||
$popPort = $pop3{'TCPPort'} || '110';
|
||||
$popsPort = $pop3s{'TCPPort'} || '995';
|
||||
$popStatus = $pop3{'status'} || 'disabled';
|
||||
$popsStatus = $pop3s{'status'} || 'disabled';
|
||||
$popAccess = $pop3{'access'} || 'localhost';
|
||||
$popsAccess = $pop3s{'access'} || 'private';
|
||||
$popListenIP = $pop3{'ListenIP'} || '';
|
||||
$popsListenIP = $pop3s{'ListenIP'} || '';
|
||||
if ($popStatus eq 'disabled') {
|
||||
$popAddress = '127.0.0.1';
|
||||
$popPort='0';
|
||||
} elsif ($popAccess eq 'localhost') {
|
||||
$popAddress = '127.0.0.1';
|
||||
} elsif ($popAccess eq 'private') {
|
||||
$popAddress = "127.0.0.1 $LOCALIP";
|
||||
} elsif ($popAccess eq 'public') {
|
||||
$popAddress = "127.0.0.1 $LOCALIP $EXTERNALIP";
|
||||
}
|
||||
$popAddress .= " $popListenIP";
|
||||
|
||||
|
||||
if ($popsStatus eq 'disabled') {
|
||||
$popsAddress = '127.0.0.1';
|
||||
$popsPort='0';
|
||||
} elsif ($popsAccess eq 'localhost') {
|
||||
$popsAddress = '127.0.0.1';
|
||||
} elsif ($popsAccess eq 'private') {
|
||||
$popsAddress = "127.0.0.1 $LOCALIP";
|
||||
} elsif ($popsAccess eq 'public') {
|
||||
$popsAddress = "127.0.0.1 $LOCALIP $EXTERNALIP";
|
||||
}
|
||||
$popsAddress .= " $popsListenIP";
|
||||
|
||||
$OUT .= "service pop3-login \{
|
||||
inet_listener pop3 \{
|
||||
port = $popPort
|
||||
address = $popAddress
|
||||
\}
|
||||
inet_listener pop3s \{
|
||||
port = $popsPort
|
||||
ssl = yes
|
||||
address = $popsAddress
|
||||
\}
|
||||
|
||||
service_count = 0
|
||||
process_min_avail = 2
|
||||
|
||||
\}"
|
||||
}
|
||||
|
19
root/etc/e-smith/templates/etc/dovecot/dovecot.conf/35ssl
Normal file
19
root/etc/e-smith/templates/etc/dovecot/dovecot.conf/35ssl
Normal file
@ -0,0 +1,19 @@
|
||||
ssl = {$OUT .= ( (($imaps{'status'} || 'enabled') eq 'enabled') || (($pops{'status'} || 'enabled') eq 'enabled') ) ? 'yes':'no';}
|
||||
ssl_cert = </etc/dovecot/ssl/imapd.pem
|
||||
ssl_key = </etc/dovecot/ssl/imapd.pem
|
||||
{
|
||||
|
||||
my $proto = '';
|
||||
$proto .= ' !SSLv2' unless ($dovecot{'SSLv2'} || 'disabled') eq 'enabled';
|
||||
$proto .= ' !SSLv3' unless ($dovecot{'SSLv3'} || 'disabled') eq 'enabled';
|
||||
$proto .= ' !TLSv1' unless ($dovecot{'TLSv1'} || 'disabled') eq 'enabled';
|
||||
$proto .= ' !TLSv1.1' unless ($dovecot{'TLSv1.1'} || 'disabled') eq 'enabled';
|
||||
$proto .= ' !TLSv1.2' unless ($dovecot{'TLSv1.2'} || 'enabled') eq 'enabled';
|
||||
|
||||
my $dh = $dovecot{'dh'} || '4096';
|
||||
$OUT .= "ssl_dh_parameters_length = $dh\n";
|
||||
$OUT .= "ssl_protocols = $proto\n" if ($proto ne '');
|
||||
$OUT .= "ssl_prefer_server_ciphers = yes\n";
|
||||
$OUT .= "ssl_cipher_list = " . ($dovecot{CipherSuite} || $modSSL{CipherSuite} || 'ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:HIGH@STRENGTH:!SSLv2:!ADH:!aNULL:!MD5:!RC4') . "\n";
|
||||
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
@plugins = ();
|
||||
@imap_plugins = ();
|
||||
@conf = ();
|
||||
$OUT .= '';
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
|
||||
{
|
||||
push @plugins, 'quota';
|
||||
push @imap_plugins, 'imap_quota';
|
||||
$OUT .= '';
|
||||
my $string =<<'HERE';
|
||||
|
||||
plugin {
|
||||
quota = fs:user
|
||||
}
|
||||
|
||||
HERE
|
||||
|
||||
push @conf, $string;
|
||||
}
|
||||
|
@ -0,0 +1,21 @@
|
||||
{
|
||||
|
||||
if (($dovecot{'LogActions'} || 'disabled') eq 'enabled'){
|
||||
push @plugins, 'mail_log';
|
||||
push @plugins, 'notify';
|
||||
my $string = <<'HERE';
|
||||
|
||||
plugin {
|
||||
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename mailbox_create flag_change
|
||||
mail_log_fields = uid box msgid from subject flags
|
||||
}
|
||||
|
||||
HERE
|
||||
|
||||
push @conf, $string;
|
||||
$OUT .= '';
|
||||
}
|
||||
else{
|
||||
$OUT .= "# Actions loging is disabled\n";
|
||||
}
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
{
|
||||
if (($dovecot{'FullTextIndexing'} || 'disabled') eq 'enabled'){
|
||||
push @plugins, 'fts';
|
||||
push @plugins, 'fts_squat';
|
||||
my $string =<<'HERE';
|
||||
|
||||
plugin {
|
||||
fts = squat
|
||||
fts_squat = partial=4 full=10
|
||||
}
|
||||
|
||||
HERE
|
||||
|
||||
push @conf, $string;
|
||||
$OUT .= '';
|
||||
}
|
||||
else{
|
||||
$OUT .= "# Full text indexing is disabled\n";
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
$OUT .= 'mail_plugins = $mail_plugins ' . join(' ', @plugins) ."\n\n";
|
||||
$OUT .= "protocol imap {\n";
|
||||
$OUT .= ' mail_plugins = $mail_plugins ' . join(' ', @imap_plugins) . "\n";
|
||||
$OUT .= "}\n";
|
||||
$OUT .= "$_\n" foreach (@conf);
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
my $timeout = $dovecot{Idle_Notify} || '2';
|
||||
|
||||
$OUT .= "imap_idle_notify_interval = $timeout mins\n";
|
||||
|
||||
}
|
||||
|
@ -0,0 +1 @@
|
||||
admin
|
5
root/etc/e-smith/templates/etc/pam.d/dovecotadmin/10All
Normal file
5
root/etc/e-smith/templates/etc/pam.d/dovecotadmin/10All
Normal file
@ -0,0 +1,5 @@
|
||||
auth required pam_listfile.so item=user sense=allow file=/etc/dovecot/master.users onerr=fail
|
||||
auth include dovecot
|
||||
account include system-auth
|
||||
session include system-auth
|
||||
|
@ -0,0 +1,9 @@
|
||||
{
|
||||
$OUT = <<HERE;
|
||||
#%PAM-1.0
|
||||
HERE
|
||||
|
||||
$OUT .=
|
||||
Text::Template::_load_text("/etc/e-smith/templates-default/template-begin");
|
||||
}
|
||||
|
6
root/etc/e-smith/templates/etc/rsyslog.conf/32dovecot
Normal file
6
root/etc/e-smith/templates/etc/rsyslog.conf/32dovecot
Normal file
@ -0,0 +1,6 @@
|
||||
|
||||
#dovecot
|
||||
:programname, isequal, "dovecot" /var/log/dovecot/dovecot.log
|
||||
& stop
|
||||
|
||||
|
@ -0,0 +1,10 @@
|
||||
[Service]
|
||||
#first we reset the ExecStartPre
|
||||
ExecStartPre=
|
||||
#our needs
|
||||
ExecStartPre=-/sbin/e-smith/service-status dovecot
|
||||
ExecStartPre=-/sbin/e-smith/expand-template /etc/dovecot/dovecot.conf
|
||||
ExecStartPre=-/sbin/e-smith/expand-template /etc/dovecot/master.users
|
||||
ExecStartPre=-/sbin/e-smith/expand-template /etc/dovecot/ssl/imapd.pem
|
||||
ExecStartPre=-/usr/sbin/portrelease dovecot
|
||||
Restart=always
|
@ -0,0 +1,2 @@
|
||||
[Install]
|
||||
WantedBy=sme-server.target
|
18
root/etc/logrotate.d/dovecot
Normal file
18
root/etc/logrotate.d/dovecot
Normal file
@ -0,0 +1,18 @@
|
||||
/var/log/dovecot/dovecot.log {
|
||||
weekly
|
||||
rotate 4
|
||||
missingok
|
||||
notifempty
|
||||
compress
|
||||
delaycompress
|
||||
sharedscripts
|
||||
su root root
|
||||
create 600 root root
|
||||
postrotate
|
||||
#/usr/bin/systemctl reload-or-try-restart dovecot
|
||||
# kill -s USR2 `cat /var/run/dovecot/master.pid`
|
||||
doveadm log reopen
|
||||
# in case of issues with SELinux
|
||||
# kill -s 0 `cat /var/run/dovecot/master.pid` || kill -s USR1 `cat /var/run/dovecot/master.pid`
|
||||
endscript
|
||||
}
|
0
root/usr/lib/systemd/system/dovecot.service.d/.gitignore
vendored
Normal file
0
root/usr/lib/systemd/system/dovecot.service.d/.gitignore
vendored
Normal file
0
root/var/log/dovecot/.gitignore
vendored
Normal file
0
root/var/log/dovecot/.gitignore
vendored
Normal file
230
smeserver-dovecot.spec
Normal file
230
smeserver-dovecot.spec
Normal file
@ -0,0 +1,230 @@
|
||||
%define version 1.6.0
|
||||
%define release 22
|
||||
%define name smeserver-dovecot
|
||||
|
||||
|
||||
Summary: Dovecot IMAP server integration
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}%{?dist}
|
||||
License: GPL
|
||||
Group: Networking/Daemons
|
||||
Source: %{name}-%{version}.tar.xz
|
||||
|
||||
|
||||
BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot
|
||||
BuildArchitectures: noarch
|
||||
BuildRequires: e-smith-devtools
|
||||
|
||||
Requires: e-smith-base >= 5.2.0
|
||||
Requires: dovecot >= 2.0.9
|
||||
|
||||
Provides: e-smith-imap
|
||||
Provides: e-smith-pop3
|
||||
Obsoletes: e-smith-imap
|
||||
Obsoletes: e-smith-pop3
|
||||
Obsoletes: e-smith-ssl-imap
|
||||
Obsoletes: e-smith-wu-imap
|
||||
Obsoletes: imap
|
||||
Obsoletes: m4 <= 1.4.5
|
||||
Obsoletes: mailfront <= 1.10
|
||||
Obsoletes: stunnel <= 4.15
|
||||
Obsoletes: stunnel-tls <= 3.22
|
||||
|
||||
%description
|
||||
Configure the dovecot IMAP server with sieve scripts support,
|
||||
quota, ACL, extended logging, master user
|
||||
|
||||
%changelog
|
||||
* Thu Oct 26 2023 cvs2git.sh aka Brian Read <brianr@koozali.org> 1.6.0-22.sme
|
||||
- Roll up patches and move to git repo [SME: 12338]
|
||||
|
||||
* Thu Oct 26 2023 BogusDateBot
|
||||
- Eliminated rpmbuild "bogus date" warnings due to inconsistent weekday,
|
||||
by assuming the date is correct and changing the weekday.
|
||||
|
||||
* Tue Aug 15 2023 Jean-Philippe Pialasse <tests@pialasse.com> 1.6.0-21.sme
|
||||
- force imap and dovecot satus=enabled to allow auth for webmail and smtp [SME: 12399]
|
||||
also migrate imap imaps pop3 pop3s as configuration, not service
|
||||
|
||||
* Mon Aug 14 2023 Jean-Philippe Pialasse <tests@pialasse.com> 1.6.0-20.sme
|
||||
- remove obsoletes word as it prevents unrelated packages to install [SME: 12393]
|
||||
|
||||
* Sun May 30 2021 Jean-Philippe Pialasse <tests@pialasse.com> 1.6.0-19.sme
|
||||
- ssl pem update via template expand in place of copy [SME: 11601]
|
||||
|
||||
* Tue Mar 16 2021 Jean-Philippe Pialasse <tests@pialasse.com> 1.6.0-18.sme
|
||||
- clean rsyslog syntax for dovecot [SME: 11422]
|
||||
|
||||
* Sat Jan 02 2021 Jean-Philipe Pialasse <tests@pialasse.com> 1.6.0-17.sme
|
||||
- add Restart=always [SME: 11101]
|
||||
|
||||
* Mon Dec 14 2020 Jean-Philipe Pialasse <tests@pialasse.com> 1.6.0-16.sme
|
||||
- fix path for event -update [SME: 11101]
|
||||
|
||||
* Tue Dec 08 2020 Jean-Philipe Pialasse <tests@pialasse.com> 1.6.0-15.sme
|
||||
- cleanup /var/service/dovecot [SME: 11101]
|
||||
close logger and service from previous runit instance before starting systemd one
|
||||
|
||||
* Mon Dec 07 2020 Jean-Philipe Pialasse <tests@pialasse.com> 1.6.0-14.sme
|
||||
- add systemd drop-in expand in bootstrap-console-save, console-save, post-install, post-upgrade [SME: 11101]
|
||||
|
||||
* Sun Dec 06 2020 Jean-Philipe Pialasse <tests@pialasse.com> 1.6.0-13.sme
|
||||
- move service to systemd [SME: 11101]
|
||||
- add imap idle notify interval setting [SME: 10947]
|
||||
|
||||
* Mon May 04 2020 Jean-Philipe Pialasse <tests@pialasse.com> 1.6.0-12.sme
|
||||
- fix typo in enabling TLSv1.2 as default [SME: 10934]
|
||||
|
||||
* Mon May 04 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 1.6.0-10.sme
|
||||
- fix typo in 35ssl template [SME: 10934]
|
||||
|
||||
* Mon May 04 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 1.6.0-9.sme
|
||||
- fix typo in createlinks [SME: 10932]
|
||||
|
||||
* Sat May 02 2020 Jean-Philipe Pialasse <tests@pialasse.com> 1.6.0-8.sme
|
||||
- revert property names with period in it [SME: 10934]
|
||||
|
||||
* Sat May 02 2020 Jean-Philipe Pialasse <tests@pialasse.com> 1.6.0-7.sme
|
||||
- add property AcceptFullEmail with enabled as default [SME: 9865]
|
||||
* this allow to login using either username or username@domain.tld
|
||||
dovecot get the username part.
|
||||
|
||||
* Fri May 01 2020 Jean-Philipe Pialasse <tests@pialasse.com> 1.6.0-5.sme
|
||||
- set TLSv1 and TLSv1.1 disabled as default [SME: 10934]
|
||||
* Amend cipher list
|
||||
* force cipher order
|
||||
* 4096 default dh parameter
|
||||
* property names without period to avoid issues
|
||||
|
||||
* Sun Apr 26 2020 Jean-Philipe Pialasse <tests@pialasse.com> 1.6.0-3.sme
|
||||
- Use Dovecot for pop3 and pop3s [SME: 7510]
|
||||
*delete /etc/pam.d/pop3 if exists
|
||||
*listen on internal and external interface instead of *
|
||||
*update the service on ip-change
|
||||
*reuse the ListenIP prop in pop3* and added to imap*
|
||||
*migrate pop3* MemLimit to pop3 ProcessMemoryLimit as per imap
|
||||
*TODO make it ipv6 ready
|
||||
- smeserver-dovecot-upgrade event for update without reboot [SME: 10932]
|
||||
|
||||
* Thu Feb 23 2017 Daniel Berteaud <daniel@firewall-services.com> 1.6.0-2.sme
|
||||
- Better default cipher suite, and honor global suite [SME: 10110]
|
||||
|
||||
* Sat Feb 06 2016 stephane de Labrusse <stephdl@de-labrusse.fr> 1.6.0-1.sme
|
||||
- Initial release to sme10
|
||||
|
||||
* Wed Jan 13 2016 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-20.sme
|
||||
- Hook into the new ssl-update event [SME: 9152]
|
||||
|
||||
* Thu Jan 7 2016 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-19.sme
|
||||
- Allow settings SSL protocols from DB (and set TLSv1 back to enabled
|
||||
on a default install) [SME: 9175]
|
||||
|
||||
* Wed Jan 6 2016 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-18.sme
|
||||
- Disable TLSv1 [SME: 9175]
|
||||
|
||||
* Wed Jan 7 2015 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-17.sme
|
||||
- Allow custom passdb args [SME: 8778]
|
||||
|
||||
* Thu Jan 23 2014 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-16.sme
|
||||
- Remove limit props from the imaps DB entry [SME: 8082]
|
||||
|
||||
* Tue Dec 24 2013 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-15.sme
|
||||
- Apply process limits [SME: 8082]
|
||||
|
||||
* Sun Jun 23 2013 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-14.sme
|
||||
- Listen on loopback if disabled [SME: 7697]
|
||||
|
||||
* Wed May 29 2013 chris burnat <devlist@burnat.com> - 1.4.0-13.sme
|
||||
- Reverse changes made in 1.4.0-12 [SME: 7597]
|
||||
|
||||
* Fri May 24 2013 chris burnat <devlist@burnat.com> - 1.4.0-12.sme
|
||||
- Fix IMAP folders dont present correctly in Outlook 2007 [SME: 7597]
|
||||
|
||||
* Sat May 18 2013 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-11.sme
|
||||
- Fix permissions on imapd.pem as it's used by pop3s [SME: 7570]
|
||||
|
||||
* Wed Apr 24 2013 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-10.sme
|
||||
- Do not obsolete bglibs, it's required for cvm [SME: 7509]
|
||||
|
||||
* Tue Apr 16 2013 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-9.sme
|
||||
- Allow plaintext (unless explicitly disabled) [SME: 7549]
|
||||
|
||||
* Wed Apr 10 2013 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-8.sme
|
||||
- Do not obsolete cvm, it's still needed for qpsmtpd [SME: 7509]
|
||||
|
||||
* Thu Feb 28 2013 Shad L. Lords <slords@mail.com> - 1.4.0-7.sme
|
||||
- Obsolete another el5 required by requires [SME: 7273]
|
||||
|
||||
* Thu Feb 28 2013 Shad L. Lords <slords@mail.com> - 1.4.0-6.sme
|
||||
- Fix Obsolete el5 mailfront version [SME: 7273]
|
||||
|
||||
* Thu Feb 28 2013 Shad L. Lords <slords@mail.com> - 1.4.0-5.sme
|
||||
- Obsolete el5 packages that were required by old requires [SME: 7273]
|
||||
|
||||
* Thu Feb 28 2013 Shad L. Lords <slords@mail.com> - 1.4.0-4.sme
|
||||
- Obsolete older requires that are no longer needed [SME: 7273]
|
||||
|
||||
* Thu Feb 28 2013 Shad L. Lords <slords@mail.com> - 1.4.0-3.sme
|
||||
- Remove requires for packages no longer needed [SME: 7405]
|
||||
|
||||
* Thu Feb 28 2013 Daniel Berteaud <daniel@firewall-services.com> - 1.4.0-2.sme
|
||||
- remove the IMAP acl and Sieve support [SME: 7405]
|
||||
- remove obsolete changelog (used in my previous buildsys)
|
||||
|
||||
* Tue Feb 26 2013 Daniel Berteaud <daniel@firewall-services.com> - 0.1.1-1
|
||||
- store sharedmailbox dict file in /home/e-smith/db/dovecot
|
||||
|
||||
* 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
|
||||
- initial release
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}
|
||||
rm -rf root/var/service
|
||||
mkdir -p root/etc/dovecot/ssl
|
||||
mkdir -p root/usr/lib/systemd/system/dovecot.service.d
|
||||
mkdir -p root/etc/e-smith/templates/usr/lib/systemd/system/dovecot.service.d/50koozali.conf
|
||||
|
||||
%build
|
||||
perl createlinks
|
||||
|
||||
%install
|
||||
/bin/rm -rf $RPM_BUILD_ROOT
|
||||
(cd root ; /usr/bin/find . -depth -print | /bin/cpio -dump $RPM_BUILD_ROOT)
|
||||
/bin/rm -f %{name}-%{version}-filelist
|
||||
/sbin/e-smith/genfilelist $RPM_BUILD_ROOT \
|
||||
--file /sbin/e-smith/systemd/dovecot-control 'attr(0554,root,root)'\
|
||||
--dir /var/log/dovecot 'attr(0750,smelog,smelog)' \
|
||||
> %{name}-%{version}-filelist
|
||||
|
||||
%files -f %{name}-%{version}-filelist
|
||||
%defattr(-,root,root)
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
|
||||
%pre
|
||||
if [ $1 -gt 1 ] ; then
|
||||
if [ -e /var/service/dovecot/run ] ; then
|
||||
/usr/bin/sv d dovecot
|
||||
/usr/bin/sv d dovecot/log
|
||||
fi
|
||||
if [ -e /var/service/dovecot ] ; then
|
||||
rm -rf /var/service/dovecot
|
||||
fi
|
||||
if [ -e /var/service/pop3 ] ; then
|
||||
rm -rf /var/service/pop3
|
||||
fi
|
||||
if [ -e /var/service/pop3s ] ; then
|
||||
rm -rf /var/service/pop3s
|
||||
fi
|
||||
|
||||
fi
|
||||
%post
|
||||
|
||||
%preun
|
||||
|
Loading…
Reference in New Issue
Block a user