Compare commits
42 Commits
master
...
feature/ft
Author | SHA1 | Date |
---|---|---|
|
f09c8534f5 | |
|
0408bbf57f | |
|
eb4a33dc27 | |
|
a0ae59f8bf | |
|
60871fa7d0 | |
|
59a4031e24 | |
|
04f55fc748 | |
|
3ba3f1c2bd | |
|
b0fd9787b5 | |
|
df3de09050 | |
|
86079429b3 | |
|
ed476aae6b | |
|
f0e27312f9 | |
|
3425bcfbf0 | |
|
bfa81b318d | |
|
8dba0ca7dd | |
|
5bd3394ed9 | |
|
c0e66254b9 | |
|
aec2dd1252 | |
|
d86e9a22f4 | |
|
db73f83c4e | |
|
28582c5842 | |
|
3d637aca25 | |
|
d079ff49c6 | |
|
2d6ce926e1 | |
|
60ddfe3be2 | |
|
30e2d944cd | |
|
99ea569288 | |
|
c98ef0d0c5 | |
|
f09ca0a36a | |
|
cdce97bd59 | |
|
ed8941440a | |
|
570170a5b1 | |
|
df2c33d323 | |
|
f2e0e50f87 | |
|
26c5ed73e2 | |
|
148b511f9d | |
|
311007700b | |
|
3a9177bd4c | |
|
bca09e3afa | |
|
cfba96f7e0 | |
|
c82f38a025 |
|
@ -13,6 +13,7 @@ data/conf/dovecot/acl_anyone
|
||||||
data/conf/dovecot/dovecot-master.passwd
|
data/conf/dovecot/dovecot-master.passwd
|
||||||
data/conf/dovecot/dovecot-master.userdb
|
data/conf/dovecot/dovecot-master.userdb
|
||||||
data/conf/dovecot/extra.conf
|
data/conf/dovecot/extra.conf
|
||||||
|
data/conf/dovecot/dovecot-fts-flatcurve.conf
|
||||||
data/conf/dovecot/global_sieve_*
|
data/conf/dovecot/global_sieve_*
|
||||||
data/conf/dovecot/last_login
|
data/conf/dovecot/last_login
|
||||||
data/conf/dovecot/lua
|
data/conf/dovecot/lua
|
||||||
|
|
|
@ -1,24 +1,15 @@
|
||||||
FROM debian:bullseye-slim
|
FROM debian:bullseye-slim as build
|
||||||
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
LABEL maintainer "Andre Peters <andre.peters@servercow.de>"
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
# renovate: datasource=github-tags depName=dovecot/core versioning=semver-coerced
|
ARG DOVECOT=2.3.19.1
|
||||||
ARG DOVECOT=2.3.20
|
ARG FLATCURVE=v0.3.2
|
||||||
# renovate: datasource=github-releases depName=tianon/gosu versioning=semver-coerced
|
ARG XAPIAN=1.4.21
|
||||||
ARG GOSU_VERSION=1.16
|
|
||||||
ENV LC_ALL C
|
ENV LC_ALL C
|
||||||
|
|
||||||
|
|
||||||
# Add groups and users before installing Dovecot to not break compatibility
|
# Add groups and users before installing Dovecot to not break compatibility
|
||||||
RUN groupadd -g 5000 vmail \
|
RUN touch /etc/default/locale \
|
||||||
&& groupadd -g 401 dovecot \
|
|
||||||
&& groupadd -g 402 dovenull \
|
|
||||||
&& groupadd -g 999 sogo \
|
|
||||||
&& usermod -a -G sogo nobody \
|
|
||||||
&& useradd -g vmail -u 5000 vmail -d /var/vmail \
|
|
||||||
&& useradd -c "Dovecot unprivileged user" -d /dev/null -u 401 -g dovecot -s /bin/false dovecot \
|
|
||||||
&& useradd -c "Dovecot login user" -d /dev/null -u 402 -g dovenull -s /bin/false dovenull \
|
|
||||||
&& touch /etc/default/locale \
|
|
||||||
&& apt-get update \
|
&& apt-get update \
|
||||||
&& apt-get -y --no-install-recommends install \
|
&& apt-get -y --no-install-recommends install \
|
||||||
apt-transport-https \
|
apt-transport-https \
|
||||||
|
@ -76,7 +67,13 @@ RUN groupadd -g 5000 vmail \
|
||||||
libunicode-string-perl \
|
libunicode-string-perl \
|
||||||
liburi-perl \
|
liburi-perl \
|
||||||
libwww-perl \
|
libwww-perl \
|
||||||
|
libstemmer-dev \
|
||||||
|
libexttextcat-dev \
|
||||||
|
libldap-dev \
|
||||||
|
libghc-bzlib-dev \
|
||||||
lua-sql-mysql \
|
lua-sql-mysql \
|
||||||
|
liblz4-dev \
|
||||||
|
libzstd-dev \
|
||||||
lua-socket \
|
lua-socket \
|
||||||
mariadb-client \
|
mariadb-client \
|
||||||
procps \
|
procps \
|
||||||
|
@ -87,30 +84,152 @@ RUN groupadd -g 5000 vmail \
|
||||||
syslog-ng-core \
|
syslog-ng-core \
|
||||||
syslog-ng-mod-redis \
|
syslog-ng-mod-redis \
|
||||||
wget \
|
wget \
|
||||||
|
git \
|
||||||
|
bison \
|
||||||
|
flex \
|
||||||
|
build-essential \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
libtool \
|
||||||
|
make \
|
||||||
|
libxapian-dev \
|
||||||
|
default-libmysqlclient-dev \
|
||||||
|
libicu-dev \
|
||||||
|
zlib1g-dev \
|
||||||
|
pkg-config \
|
||||||
|
libsqlite3-dev \
|
||||||
|
liblua5.3-dev \
|
||||||
&& dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')" \
|
&& dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')" \
|
||||||
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \
|
&& wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \
|
||||||
&& chmod +x /usr/local/bin/gosu \
|
&& chmod +x /usr/local/bin/gosu \
|
||||||
&& gosu nobody true \
|
&& gosu nobody true
|
||||||
&& apt-key adv --fetch-keys https://repo.dovecot.org/DOVECOT-REPO-GPG \
|
# && apt-key adv --fetch-keys https://repo.dovecot.org/DOVECOT-REPO-GPG \
|
||||||
&& echo "deb https://repo.dovecot.org/ce-${DOVECOT}/debian/bullseye bullseye main" > /etc/apt/sources.list.d/dovecot.list \
|
# && echo "deb https://repo.dovecot.org/ce-${DOVECOT}/debian/bullseye bullseye main" > /etc/apt/sources.list.d/dovecot.list \
|
||||||
&& apt-get update \
|
# && apt-get update \
|
||||||
&& apt-get -y --no-install-recommends install \
|
# && apt-get -y --no-install-recommends install \
|
||||||
dovecot-lua \
|
# dovecot-lua \
|
||||||
dovecot-managesieved \
|
# dovecot-managesieved \
|
||||||
dovecot-sieve \
|
# dovecot-sieve \
|
||||||
dovecot-lmtpd \
|
# dovecot-lmtpd \
|
||||||
dovecot-ldap \
|
# dovecot-ldap \
|
||||||
dovecot-mysql \
|
# dovecot-mysql \
|
||||||
dovecot-core \
|
# dovecot-core \
|
||||||
dovecot-pop3d \
|
# dovecot-pop3d \
|
||||||
dovecot-imapd \
|
# dovecot-imapd \
|
||||||
dovecot-solr \
|
# dovecot-dev
|
||||||
&& pip3 install mysql-connector-python html2text jinja2 redis \
|
|
||||||
&& apt-get autoremove --purge -y \
|
|
||||||
&& apt-get autoclean \
|
|
||||||
&& rm -rf /var/lib/apt/lists/* \
|
|
||||||
&& rm -rf /tmp/* /var/tmp/* /root/.cache/
|
|
||||||
|
|
||||||
|
RUN cd /tmp && git clone --depth 1 --branch ${DOVECOT} https://github.com/dovecot/core.git dovecot/core && cd dovecot/core \
|
||||||
|
&& ./autogen.sh \
|
||||||
|
&& PANDOC=false ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-ssldir=/etc/ssl --enable-maintainer-mode --with-sql=yes --with-lua=yes --with-mysql --with-ldap --with-zstd --with-lz4 --with-ssl=openssl --with-notify=inotify --with-bzlib --with-zlib --enable-hardening --with-stemmer --with-textcat --with-icu \
|
||||||
|
&& make -j6 \
|
||||||
|
&& make install \
|
||||||
|
&& make clean
|
||||||
|
|
||||||
|
RUN cd /tmp && git clone --depth 1 --branch release-0.5 https://github.com/dovecot/pigeonhole dovecot/pigeonhole && cd dovecot/pigeonhole \
|
||||||
|
&& ./autogen.sh \
|
||||||
|
&& ./configure --with-dovecot=/usr/lib/dovecot --with-managesieve\
|
||||||
|
&& make -j6 \
|
||||||
|
&& make install \
|
||||||
|
&& make clean
|
||||||
|
|
||||||
|
RUN cd /tmp && wget https://oligarchy.co.uk/xapian/${XAPIAN}/xapian-core-${XAPIAN}.tar.xz && tar xf xapian-core-${XAPIAN}.tar.xz && cd xapian-core-${XAPIAN} \
|
||||||
|
&& ./configure --prefix=/usr/local/xapian \
|
||||||
|
&& make -j6 \
|
||||||
|
&& make install \
|
||||||
|
&& make clean
|
||||||
|
|
||||||
|
RUN cd /tmp && git clone --depth 1 --branch ${FLATCURVE} https://github.com/slusarz/dovecot-fts-flatcurve.git dovecot/flatcurve && cd dovecot/flatcurve \
|
||||||
|
&& ./autogen.sh \
|
||||||
|
&& ./configure --with-dovecot=/usr/lib/dovecot \
|
||||||
|
&& make -j6 \
|
||||||
|
&& make install \
|
||||||
|
&& make clean
|
||||||
|
|
||||||
|
FROM debian:bullseye-slim
|
||||||
|
RUN groupadd -g 5000 vmail \
|
||||||
|
&& groupadd -g 401 dovecot \
|
||||||
|
&& groupadd -g 402 dovenull \
|
||||||
|
&& groupadd -g 999 sogo \
|
||||||
|
&& usermod -a -G sogo nobody \
|
||||||
|
&& useradd -g vmail -u 5000 vmail -d /var/vmail \
|
||||||
|
&& useradd -c "Dovecot unprivileged user" -d /dev/null -u 401 -g dovecot -s /bin/false dovecot \
|
||||||
|
&& useradd -c "Dovecot login user" -d /dev/null -u 402 -g dovenull -s /bin/false dovenull \
|
||||||
|
&& apt update && apt install lua-socket \
|
||||||
|
mariadb-client \
|
||||||
|
libstemmer-dev \
|
||||||
|
libexttextcat-dev \
|
||||||
|
libicu-dev \
|
||||||
|
libxapian-dev \
|
||||||
|
libsqlite3-dev \
|
||||||
|
liblua5.3-dev \
|
||||||
|
lua-sql-mysql \
|
||||||
|
libldap-dev \
|
||||||
|
procps \
|
||||||
|
python3-pip \
|
||||||
|
redis-server \
|
||||||
|
supervisor \
|
||||||
|
syslog-ng \
|
||||||
|
syslog-ng-core \
|
||||||
|
syslog-ng-mod-redis \
|
||||||
|
cpanminus \
|
||||||
|
curl \
|
||||||
|
libauthen-ntlm-perl \
|
||||||
|
libcgi-pm-perl \
|
||||||
|
libcrypt-openssl-rsa-perl \
|
||||||
|
libcrypt-ssleay-perl \
|
||||||
|
libdata-uniqid-perl \
|
||||||
|
libdbd-mysql-perl \
|
||||||
|
libdbi-perl \
|
||||||
|
libdigest-hmac-perl \
|
||||||
|
libdist-checkconflicts-perl \
|
||||||
|
libencode-imaputf7-perl \
|
||||||
|
libfile-copy-recursive-perl \
|
||||||
|
libfile-tail-perl \
|
||||||
|
libhtml-parser-perl \
|
||||||
|
libio-compress-perl \
|
||||||
|
libio-socket-inet6-perl \
|
||||||
|
libio-socket-ssl-perl \
|
||||||
|
libio-tee-perl \
|
||||||
|
libipc-run-perl \
|
||||||
|
libjson-webtoken-perl \
|
||||||
|
liblockfile-simple-perl \
|
||||||
|
libmail-imapclient-perl \
|
||||||
|
libmodule-implementation-perl \
|
||||||
|
libmodule-scandeps-perl \
|
||||||
|
libnet-ssleay-perl \
|
||||||
|
libpackage-stash-perl \
|
||||||
|
libpackage-stash-xs-perl \
|
||||||
|
libpar-packer-perl \
|
||||||
|
libparse-recdescent-perl \
|
||||||
|
libproc-processtable-perl \
|
||||||
|
libreadonly-perl \
|
||||||
|
libregexp-common-perl \
|
||||||
|
libsys-meminfo-perl \
|
||||||
|
libterm-readkey-perl \
|
||||||
|
libtest-deep-perl \
|
||||||
|
libtest-fatal-perl \
|
||||||
|
libtest-mock-guard-perl \
|
||||||
|
libtest-mockobject-perl \
|
||||||
|
libtest-nowarnings-perl \
|
||||||
|
libtest-pod-perl \
|
||||||
|
libtest-requires-perl \
|
||||||
|
libtest-simple-perl \
|
||||||
|
libtest-warn-perl \
|
||||||
|
libtry-tiny-perl \
|
||||||
|
libunicode-string-perl \
|
||||||
|
liburi-perl \
|
||||||
|
libwww-perl \
|
||||||
|
dnsutils \
|
||||||
|
gettext-base -y --no-install-recommends \
|
||||||
|
&& pip3 install mysql-connector-python html2text jinja2 redis
|
||||||
|
COPY --from=build /usr/lib/dovecot /usr/lib/dovecot
|
||||||
|
COPY --from=build /usr/bin/doveconf /usr/bin/doveconf
|
||||||
|
COPY --from=build /usr/bin/doveadm /usr/bin/doveadm
|
||||||
|
COPY --from=build /usr/bin/dovecot-sysreport /usr/bin/dovecot-sysreport
|
||||||
|
COPY --from=build /usr/sbin/dovecot /usr/sbin/dovecot
|
||||||
|
COPY --from=build /usr/libexec/dovecot/ /usr/libexec/dovecot/
|
||||||
|
COPY --from=build /usr/local/bin /usr/local/bin
|
||||||
|
COPY --from=build /usr/local/xapian/ /usr/local/xapian
|
||||||
COPY trim_logs.sh /usr/local/bin/trim_logs.sh
|
COPY trim_logs.sh /usr/local/bin/trim_logs.sh
|
||||||
COPY clean_q_aged.sh /usr/local/bin/clean_q_aged.sh
|
COPY clean_q_aged.sh /usr/local/bin/clean_q_aged.sh
|
||||||
COPY syslog-ng.conf /etc/syslog-ng/syslog-ng.conf
|
COPY syslog-ng.conf /etc/syslog-ng/syslog-ng.conf
|
||||||
|
|
|
@ -109,17 +109,19 @@ EOF
|
||||||
|
|
||||||
echo -n ${ACL_ANYONE} > /etc/dovecot/acl_anyone
|
echo -n ${ACL_ANYONE} > /etc/dovecot/acl_anyone
|
||||||
|
|
||||||
if [[ "${SKIP_SOLR}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
if [[ "${SKIP_XAPIAN}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||||
echo -n 'quota acl zlib mail_crypt mail_crypt_acl mail_log notify listescape replication' > /etc/dovecot/mail_plugins
|
echo -n 'quota acl zlib mail_crypt mail_crypt_acl mail_log notify listescape replication' > /etc/dovecot/mail_plugins
|
||||||
echo -n 'quota imap_quota imap_acl acl zlib imap_zlib imap_sieve mail_crypt mail_crypt_acl notify listescape replication mail_log' > /etc/dovecot/mail_plugins_imap
|
echo -n 'quota imap_quota imap_acl acl zlib imap_zlib imap_sieve mail_crypt mail_crypt_acl notify listescape replication mail_log' > /etc/dovecot/mail_plugins_imap
|
||||||
echo -n 'quota sieve acl zlib mail_crypt mail_crypt_acl notify listescape replication' > /etc/dovecot/mail_plugins_lmtp
|
echo -n 'quota sieve acl zlib mail_crypt mail_crypt_acl notify listescape replication' > /etc/dovecot/mail_plugins_lmtp
|
||||||
else
|
else
|
||||||
echo -n 'quota acl zlib mail_crypt mail_crypt_acl mail_log notify fts fts_solr listescape replication' > /etc/dovecot/mail_plugins
|
echo -n 'quota acl zlib mail_crypt mail_crypt_acl mail_log notify fts fts_flatcurve listescape replication' > /etc/dovecot/mail_plugins
|
||||||
echo -n 'quota imap_quota imap_acl acl zlib imap_zlib imap_sieve mail_crypt mail_crypt_acl notify mail_log fts fts_solr listescape replication' > /etc/dovecot/mail_plugins_imap
|
echo -n 'quota imap_quota imap_acl acl zlib imap_zlib imap_sieve mail_crypt mail_crypt_acl notify mail_log fts fts_flatcurve listescape replication' > /etc/dovecot/mail_plugins_imap
|
||||||
echo -n 'quota sieve acl zlib mail_crypt mail_crypt_acl fts fts_solr notify listescape replication' > /etc/dovecot/mail_plugins_lmtp
|
echo -n 'quota sieve acl zlib mail_crypt mail_crypt_acl fts fts_flatcurve notify listescape replication' > /etc/dovecot/mail_plugins_lmtp
|
||||||
fi
|
fi
|
||||||
chmod 644 /etc/dovecot/mail_plugins /etc/dovecot/mail_plugins_imap /etc/dovecot/mail_plugins_lmtp /templates/quarantine.tpl
|
chmod 644 /etc/dovecot/mail_plugins /etc/dovecot/mail_plugins_imap /etc/dovecot/mail_plugins_lmtp /templates/quarantine.tpl
|
||||||
|
|
||||||
|
sed -i 's/vsz_limit.*/vsz_limit = '${XAPIAN_HEAP}m/g /etc/dovecot/dovecot-fts-flatcurve.conf
|
||||||
|
|
||||||
cat <<EOF > /etc/dovecot/sql/dovecot-dict-sql-userdb.conf
|
cat <<EOF > /etc/dovecot/sql/dovecot-dict-sql-userdb.conf
|
||||||
# Autogenerated by mailcow
|
# Autogenerated by mailcow
|
||||||
driver = mysql
|
driver = mysql
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
plugin {
|
||||||
|
fts = flatcurve
|
||||||
|
fts_autoindex = yes
|
||||||
|
|
||||||
|
fts_languages = en de
|
||||||
|
|
||||||
|
fts_tokenizers = generic email-address
|
||||||
|
fts_tokenizer_generic = algorithm=simple
|
||||||
|
# All of these are optional, and indicate the default values.
|
||||||
|
# They are listed here for documentation purposes; most people should
|
||||||
|
# not need to define/override in their config.
|
||||||
|
fts_flatcurve_commit_limit = 500
|
||||||
|
fts_flatcurve_max_term_size = 30
|
||||||
|
fts_flatcurve_min_term_size = 2
|
||||||
|
fts_flatcurve_optimize_limit = 10
|
||||||
|
fts_flatcurve_rotate_size = 5000
|
||||||
|
fts_flatcurve_rotate_time = 5000
|
||||||
|
fts_flatcurve_substring_search = yes
|
||||||
|
}
|
||||||
|
|
||||||
|
service indexer-worker {
|
||||||
|
vsz_limit = 1024m
|
||||||
|
}
|
|
@ -11,6 +11,7 @@ auth_mechanisms = plain login
|
||||||
#mail_debug = yes
|
#mail_debug = yes
|
||||||
#auth_debug = yes
|
#auth_debug = yes
|
||||||
log_path = syslog
|
log_path = syslog
|
||||||
|
log_debug = category=fts-flatcurve
|
||||||
disable_plaintext_auth = yes
|
disable_plaintext_auth = yes
|
||||||
# Uncomment on NFS share
|
# Uncomment on NFS share
|
||||||
#mmap_disable = yes
|
#mmap_disable = yes
|
||||||
|
@ -189,9 +190,6 @@ plugin {
|
||||||
acl_shared_dict = file:/var/vmail/shared-mailboxes.db
|
acl_shared_dict = file:/var/vmail/shared-mailboxes.db
|
||||||
acl = vfile
|
acl = vfile
|
||||||
acl_user = %u
|
acl_user = %u
|
||||||
fts = solr
|
|
||||||
fts_autoindex = yes
|
|
||||||
fts_solr = url=http://solr:8983/solr/dovecot-fts/
|
|
||||||
quota = dict:Userquota::proxy::sqlquota
|
quota = dict:Userquota::proxy::sqlquota
|
||||||
quota_rule2 = Trash:storage=+100%%
|
quota_rule2 = Trash:storage=+100%%
|
||||||
sieve = /var/vmail/sieve/%u.sieve
|
sieve = /var/vmail/sieve/%u.sieve
|
||||||
|
@ -242,6 +240,7 @@ plugin {
|
||||||
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
|
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
|
||||||
mail_log_fields = uid box msgid size
|
mail_log_fields = uid box msgid size
|
||||||
mail_log_cached_only = yes
|
mail_log_cached_only = yes
|
||||||
|
|
||||||
}
|
}
|
||||||
service quota-warning {
|
service quota-warning {
|
||||||
executable = script /usr/local/bin/quota_notify.py
|
executable = script /usr/local/bin/quota_notify.py
|
||||||
|
@ -297,6 +296,7 @@ replication_dsync_parameters = -d -l 30 -U -n INBOX
|
||||||
!include_try /etc/dovecot/extra.conf
|
!include_try /etc/dovecot/extra.conf
|
||||||
!include_try /etc/dovecot/sogo-sso.conf
|
!include_try /etc/dovecot/sogo-sso.conf
|
||||||
!include_try /etc/dovecot/shared_namespace.conf
|
!include_try /etc/dovecot/shared_namespace.conf
|
||||||
|
!include_try /etc/dovecot/dovecot-fts-flatcurve.conf
|
||||||
# </Includes>
|
# </Includes>
|
||||||
default_client_limit = 10400
|
default_client_limit = 10400
|
||||||
default_vsz_limit = 1024 M
|
default_vsz_limit = 1024 M
|
||||||
|
|
|
@ -154,7 +154,7 @@ services:
|
||||||
- API_KEY_READ_ONLY=${API_KEY_READ_ONLY:-invalid}
|
- API_KEY_READ_ONLY=${API_KEY_READ_ONLY:-invalid}
|
||||||
- API_ALLOW_FROM=${API_ALLOW_FROM:-invalid}
|
- API_ALLOW_FROM=${API_ALLOW_FROM:-invalid}
|
||||||
- COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
|
- COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-mailcow-dockerized}
|
||||||
- SKIP_SOLR=${SKIP_SOLR:-y}
|
- SKIP_XAPIAN=${SKIP_XAPIAN:-y}
|
||||||
- SKIP_CLAMD=${SKIP_CLAMD:-n}
|
- SKIP_CLAMD=${SKIP_CLAMD:-n}
|
||||||
- SKIP_SOGO=${SKIP_SOGO:-n}
|
- SKIP_SOGO=${SKIP_SOGO:-n}
|
||||||
- ALLOW_ADMIN_EMAIL_LOGIN=${ALLOW_ADMIN_EMAIL_LOGIN:-n}
|
- ALLOW_ADMIN_EMAIL_LOGIN=${ALLOW_ADMIN_EMAIL_LOGIN:-n}
|
||||||
|
@ -216,7 +216,7 @@ services:
|
||||||
- sogo
|
- sogo
|
||||||
|
|
||||||
dovecot-mailcow:
|
dovecot-mailcow:
|
||||||
image: mailcow/dovecot:1.22
|
image: mailcow/dovecot:1.20-xapian
|
||||||
depends_on:
|
depends_on:
|
||||||
- mysql-mailcow
|
- mysql-mailcow
|
||||||
dns:
|
dns:
|
||||||
|
@ -250,7 +250,8 @@ services:
|
||||||
- ALLOW_ADMIN_EMAIL_LOGIN=${ALLOW_ADMIN_EMAIL_LOGIN:-n}
|
- ALLOW_ADMIN_EMAIL_LOGIN=${ALLOW_ADMIN_EMAIL_LOGIN:-n}
|
||||||
- MAILDIR_GC_TIME=${MAILDIR_GC_TIME:-7200}
|
- MAILDIR_GC_TIME=${MAILDIR_GC_TIME:-7200}
|
||||||
- ACL_ANYONE=${ACL_ANYONE:-disallow}
|
- ACL_ANYONE=${ACL_ANYONE:-disallow}
|
||||||
- SKIP_SOLR=${SKIP_SOLR:-y}
|
- SKIP_XAPIAN=${SKIP_XAPIAN:-y}
|
||||||
|
- XAPIAN_HEAP=${XAPIAN_HEAP:-1024}
|
||||||
- MAILDIR_SUB=${MAILDIR_SUB:-}
|
- MAILDIR_SUB=${MAILDIR_SUB:-}
|
||||||
- MASTER=${MASTER:-y}
|
- MASTER=${MASTER:-y}
|
||||||
- REDIS_SLAVEOF_IP=${REDIS_SLAVEOF_IP:-}
|
- REDIS_SLAVEOF_IP=${REDIS_SLAVEOF_IP:-}
|
||||||
|
@ -281,7 +282,7 @@ services:
|
||||||
ofelia.job-exec.dovecot_sarules.schedule: "@every 24h"
|
ofelia.job-exec.dovecot_sarules.schedule: "@every 24h"
|
||||||
ofelia.job-exec.dovecot_sarules.command: "/bin/bash -c \"/usr/local/bin/sa-rules.sh\""
|
ofelia.job-exec.dovecot_sarules.command: "/bin/bash -c \"/usr/local/bin/sa-rules.sh\""
|
||||||
ofelia.job-exec.dovecot_fts.schedule: "@every 24h"
|
ofelia.job-exec.dovecot_fts.schedule: "@every 24h"
|
||||||
ofelia.job-exec.dovecot_fts.command: "/usr/bin/curl http://solr:8983/solr/dovecot-fts/update?optimize=true"
|
ofelia.job-exec.dovecot_fts.command: "doveadm fts optimize -A"
|
||||||
ofelia.job-exec.dovecot_repl_health.schedule: "@every 5m"
|
ofelia.job-exec.dovecot_repl_health.schedule: "@every 5m"
|
||||||
ofelia.job-exec.dovecot_repl_health.command: "/bin/bash -c \"/usr/local/bin/gosu vmail /usr/local/bin/repl_health.sh\""
|
ofelia.job-exec.dovecot_repl_health.command: "/bin/bash -c \"/usr/local/bin/gosu vmail /usr/local/bin/repl_health.sh\""
|
||||||
ulimits:
|
ulimits:
|
||||||
|
@ -528,22 +529,6 @@ services:
|
||||||
aliases:
|
aliases:
|
||||||
- dockerapi
|
- dockerapi
|
||||||
|
|
||||||
solr-mailcow:
|
|
||||||
image: mailcow/solr:1.8.1
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- solr-vol-1:/opt/solr/server/solr/dovecot-fts/data
|
|
||||||
ports:
|
|
||||||
- "${SOLR_PORT:-127.0.0.1:18983}:8983"
|
|
||||||
environment:
|
|
||||||
- TZ=${TZ}
|
|
||||||
- SOLR_HEAP=${SOLR_HEAP:-1024}
|
|
||||||
- SKIP_SOLR=${SKIP_SOLR:-y}
|
|
||||||
networks:
|
|
||||||
mailcow-network:
|
|
||||||
aliases:
|
|
||||||
- solr
|
|
||||||
|
|
||||||
olefy-mailcow:
|
olefy-mailcow:
|
||||||
image: mailcow/olefy:1.11
|
image: mailcow/olefy:1.11
|
||||||
restart: always
|
restart: always
|
||||||
|
@ -599,7 +584,6 @@ services:
|
||||||
- netfilter-mailcow
|
- netfilter-mailcow
|
||||||
- watchdog-mailcow
|
- watchdog-mailcow
|
||||||
- dockerapi-mailcow
|
- dockerapi-mailcow
|
||||||
- solr-mailcow
|
|
||||||
environment:
|
environment:
|
||||||
- TZ=${TZ}
|
- TZ=${TZ}
|
||||||
image: robbertkl/ipv6nat
|
image: robbertkl/ipv6nat
|
||||||
|
@ -631,7 +615,6 @@ volumes:
|
||||||
mysql-socket-vol-1:
|
mysql-socket-vol-1:
|
||||||
redis-vol-1:
|
redis-vol-1:
|
||||||
rspamd-vol-1:
|
rspamd-vol-1:
|
||||||
solr-vol-1:
|
|
||||||
postfix-vol-1:
|
postfix-vol-1:
|
||||||
crypt-vol-1:
|
crypt-vol-1:
|
||||||
sogo-web-vol-1:
|
sogo-web-vol-1:
|
||||||
|
|
|
@ -122,23 +122,23 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ${MEM_TOTAL} -le "2097152" ]; then
|
if [ ${MEM_TOTAL} -le "2097152" ]; then
|
||||||
echo "Disabling Solr on low-memory system."
|
echo "Disabling Xapian (full text search, build in Dovecot) on low-memory system."
|
||||||
SKIP_SOLR=y
|
SKIP_XAPIAN=y
|
||||||
elif [ ${MEM_TOTAL} -le "3670016" ]; then
|
elif [ ${MEM_TOTAL} -le "3670016" ]; then
|
||||||
echo "Installed memory is <= 3.5 GiB. It is recommended to disable Solr to prevent out-of-memory situations."
|
echo "Installed memory is <= 3.5 GiB. We suggest you to disable Xapian (full text search, build in Dovecot) to prevent out-of-memory situations."
|
||||||
echo "Solr is a prone to run OOM and should be monitored. The default Solr heap size is 1024 MiB and should be set in mailcow.conf according to your expected load."
|
echo "The default Xapian heap size is 1024 MiB and should be set in mailcow.conf according to your expected load."
|
||||||
echo "Solr can be re-enabled by setting SKIP_SOLR=n in mailcow.conf but will refuse to start with less than 2 GB total memory."
|
echo "Xapian can be re-enabled by setting SKIP_XAPIAN=n in mailcow.conf but will refuse to start with less than 2 GB total memory."
|
||||||
read -r -p "Do you want to disable Solr now? [Y/n] " response
|
read -r -p "Do you want to disable the FTS Xapian now? [Y/n] " response
|
||||||
case $response in
|
case $response in
|
||||||
[nN][oO]|[nN])
|
[nN][oO]|[nN])
|
||||||
SKIP_SOLR=n
|
SKIP_XAPIAN=n
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
SKIP_SOLR=y
|
SKIP_XAPIAN=y
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
SKIP_SOLR=n
|
SKIP_XAPIAN=n
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ${SKIP_BRANCH} != y ]]; then
|
if [[ ${SKIP_BRANCH} != y ]]; then
|
||||||
|
@ -243,7 +243,6 @@ POPS_PORT=995
|
||||||
SIEVE_PORT=4190
|
SIEVE_PORT=4190
|
||||||
DOVEADM_PORT=127.0.0.1:19991
|
DOVEADM_PORT=127.0.0.1:19991
|
||||||
SQL_PORT=127.0.0.1:13306
|
SQL_PORT=127.0.0.1:13306
|
||||||
SOLR_PORT=127.0.0.1:18983
|
|
||||||
REDIS_PORT=127.0.0.1:7654
|
REDIS_PORT=127.0.0.1:7654
|
||||||
|
|
||||||
# Your timezone
|
# Your timezone
|
||||||
|
@ -329,14 +328,14 @@ SKIP_CLAMD=${SKIP_CLAMD}
|
||||||
|
|
||||||
SKIP_SOGO=n
|
SKIP_SOGO=n
|
||||||
|
|
||||||
# Skip Solr on low-memory systems or if you do not want to store a readable index of your mails in solr-vol-1.
|
# Skip Xapian (FTS) on low-memory systems or if you do not want to store a readable index of your mails in vmail-index-vol-1.
|
||||||
|
|
||||||
SKIP_SOLR=${SKIP_SOLR}
|
SKIP_XAPIAN=${SKIP_XAPIAN}
|
||||||
|
|
||||||
# Solr heap size in MB, there is no recommendation, please see Solr docs.
|
# Xapian heap size in MB, there is no recommendation, please see Xapians docs.
|
||||||
# Solr is a prone to run OOM and should be monitored. Unmonitored Solr setups are not recommended.
|
# Xapian is replacing solr completely. It is supposed to be much more efficient in CPU and RAM consumption.
|
||||||
|
|
||||||
SOLR_HEAP=1024
|
XAPIAN_HEAP=1024
|
||||||
|
|
||||||
# Allow admins to log into SOGo as email user (without any password)
|
# Allow admins to log into SOGo as email user (without any password)
|
||||||
|
|
||||||
|
|
26
update.sh
26
update.sh
|
@ -388,8 +388,8 @@ CONFIG_ARRAY=(
|
||||||
"MAILDIR_GC_TIME"
|
"MAILDIR_GC_TIME"
|
||||||
"MAILDIR_SUB"
|
"MAILDIR_SUB"
|
||||||
"ACL_ANYONE"
|
"ACL_ANYONE"
|
||||||
"SOLR_HEAP"
|
"XAPIAN_HEAP"
|
||||||
"SKIP_SOLR"
|
"SKIP_XAPIAN"
|
||||||
"ENABLE_SSL_SNI"
|
"ENABLE_SSL_SNI"
|
||||||
"ALLOW_ADMIN_EMAIL_LOGIN"
|
"ALLOW_ADMIN_EMAIL_LOGIN"
|
||||||
"SKIP_HTTP_VERIFICATION"
|
"SKIP_HTTP_VERIFICATION"
|
||||||
|
@ -510,20 +510,20 @@ for option in ${CONFIG_ARRAY[@]}; do
|
||||||
echo '# Otherwise a user might share data with too many other users.' >> mailcow.conf
|
echo '# Otherwise a user might share data with too many other users.' >> mailcow.conf
|
||||||
echo 'ACL_ANYONE=disallow' >> mailcow.conf
|
echo 'ACL_ANYONE=disallow' >> mailcow.conf
|
||||||
fi
|
fi
|
||||||
elif [[ ${option} == "SOLR_HEAP" ]]; then
|
elif [[ ${option} == "XAPIAN_HEAP" ]]; then
|
||||||
if ! grep -q ${option} mailcow.conf; then
|
if ! grep -q ${option} mailcow.conf; then
|
||||||
echo "Adding new option \"${option}\" to mailcow.conf"
|
echo "Replacing SOLR_HEAP with \"${option}\" in mailcow.conf"
|
||||||
echo '# Solr heap size, there is no recommendation, please see Solr docs.' >> mailcow.conf
|
sed -i '/# Solr heap size in MB, there is no recommendation, please see Solr docs./c\# Xapian heap size in MB, there is no recommendation, please see Xapians docs.' mailcow.conf
|
||||||
echo '# Solr is a prone to run OOM on large systems and should be monitored. Unmonitored Solr setups are not recommended.' >> mailcow.conf
|
sed -i '/# Solr is a prone to run OOM on large systems and should be monitored. Unmonitored Solr setups are not recommended./c\# Xapian is replacing solr completely. It is supposed to be much more efficient in CPU and RAM consumption.' mailcow.conf
|
||||||
echo '# Solr will refuse to start with total system memory below or equal to 2 GB.' >> mailcow.conf
|
sed -i '/SOLR_HEAP=/c\XAPIAN_HEAP=' mailcow.conf
|
||||||
echo "SOLR_HEAP=1024" >> mailcow.conf
|
|
||||||
fi
|
fi
|
||||||
elif [[ ${option} == "SKIP_SOLR" ]]; then
|
elif [[ ${option} == "SKIP_XAPIAN" ]]; then
|
||||||
if ! grep -q ${option} mailcow.conf; then
|
if ! grep -q ${option} mailcow.conf; then
|
||||||
echo "Adding new option \"${option}\" to mailcow.conf"
|
echo "Replacing SKIP_SOLR with \"${option}\" in mailcow.conf"
|
||||||
echo '# Solr is disabled by default after upgrading from non-Solr to Solr-enabled mailcows.' >> mailcow.conf
|
sed -i '/# Skip Solr on low-memory systems or if you do not want to store a readable index of your mails in solr-vol-1./c\# Skip Xapian (FTS) on low-memory systems or if you do not want to store a readable index of your mails in vmail-index-vol-1.' mailcow.conf
|
||||||
echo '# Disable Solr or if you do not want to store a readable index of your mails in solr-vol-1.' >> mailcow.conf
|
sed -i '/SKIP_SOLR=/c\SKIP_XAPIAN=' mailcow.conf
|
||||||
echo "SKIP_SOLR=y" >> mailcow.conf
|
echo "Removing Solr-Port Binding from mailcow.conf"
|
||||||
|
sed -i '/SOLR_PORT=/d' mailcow.conf
|
||||||
fi
|
fi
|
||||||
elif [[ ${option} == "ENABLE_SSL_SNI" ]]; then
|
elif [[ ${option} == "ENABLE_SSL_SNI" ]]; then
|
||||||
if ! grep -q ${option} mailcow.conf; then
|
if ! grep -q ${option} mailcow.conf; then
|
||||||
|
|
Loading…
Reference in New Issue