|
|
|
@@ -110,21 +110,16 @@ EOF
|
|
|
|
|
|
|
|
|
|
echo -n ${ACL_ANYONE} > /etc/dovecot/acl_anyone
|
|
|
|
|
|
|
|
|
|
if [[ "${FLATCURVE_EXPERIMENTAL}" =~ ^([yY][eE][sS]|[yY]) ]]; then
|
|
|
|
|
echo -e "\e[33mActivating Flatcurve as FTS Backend...\e[0m"
|
|
|
|
|
echo -e "\e[33mDepending on your previous setup a full reindex might be needed... \e[0m"
|
|
|
|
|
echo -e "\e[34mVisit https://docs.mailcow.email/manual-guides/Dovecot/u_e-dovecot-fts/#fts-related-dovecot-commands to learn how to reindex\e[0m"
|
|
|
|
|
echo -n 'quota acl zlib mail_crypt mail_crypt_acl mail_log notify fts fts_flatcurve listescape replication lazy_expunge' > /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_flatcurve listescape replication' > /etc/dovecot/mail_plugins_imap
|
|
|
|
|
echo -n 'quota sieve acl zlib mail_crypt mail_crypt_acl fts fts_flatcurve notify listescape replication' > /etc/dovecot/mail_plugins_lmtp
|
|
|
|
|
elif [[ "${SKIP_SOLR}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
|
|
|
|
if [[ "${SKIP_FTS}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
|
|
|
|
echo -e "\e[33mDetecting SKIP_FTS=y... not enabling Flatcurve (FTS) then...\e[0m"
|
|
|
|
|
echo -n 'quota acl zlib mail_crypt mail_crypt_acl mail_log notify listescape replication lazy_expunge' > /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 sieve acl zlib mail_crypt mail_crypt_acl notify listescape replication' > /etc/dovecot/mail_plugins_lmtp
|
|
|
|
|
else
|
|
|
|
|
echo -n 'quota acl zlib mail_crypt mail_crypt_acl mail_log notify fts fts_solr listescape replication lazy_expunge' > /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 sieve acl zlib mail_crypt mail_crypt_acl fts fts_solr notify listescape replication' > /etc/dovecot/mail_plugins_lmtp
|
|
|
|
|
echo -e "\e[32mDetecting SKIP_FTS=n... enabling Flatcurve (FTS)\e[0m"
|
|
|
|
|
echo -n 'quota acl zlib mail_crypt mail_crypt_acl mail_log notify fts fts_flatcurve listescape replication lazy_expunge' > /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_flatcurve listescape replication' > /etc/dovecot/mail_plugins_imap
|
|
|
|
|
echo -n 'quota sieve acl zlib mail_crypt mail_crypt_acl fts fts_flatcurve notify listescape replication' > /etc/dovecot/mail_plugins_lmtp
|
|
|
|
|
fi
|
|
|
|
|
chmod 644 /etc/dovecot/mail_plugins /etc/dovecot/mail_plugins_imap /etc/dovecot/mail_plugins_lmtp /templates/quarantine.tpl
|
|
|
|
|
|
|
|
|
@@ -137,51 +132,6 @@ iterate_query = SELECT username FROM mailbox WHERE active = '1' OR active = '2';
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Temporarily set FTS depending on user choice inside mailcow.conf. Will be removed as soon as Solr is dropped
|
|
|
|
|
if [[ "${FLATCURVE_EXPERIMENTAL}" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
|
|
|
|
cat <<EOF > /etc/dovecot/conf.d/fts.conf
|
|
|
|
|
# Autogenerated by mailcow
|
|
|
|
|
plugin {
|
|
|
|
|
fts_autoindex = yes
|
|
|
|
|
fts_autoindex_exclude = \Junk
|
|
|
|
|
fts_autoindex_exclude2 = \Trash
|
|
|
|
|
fts = flatcurve
|
|
|
|
|
|
|
|
|
|
# Maximum term length can be set via the 'maxlen' argument (maxlen is
|
|
|
|
|
# specified in bytes, not number of UTF-8 characters)
|
|
|
|
|
fts_tokenizer_email_address = maxlen=100
|
|
|
|
|
fts_tokenizer_generic = algorithm=simple maxlen=30
|
|
|
|
|
|
|
|
|
|
# These are not flatcurve settings, but required for Dovecot FTS. See
|
|
|
|
|
# Dovecot FTS Configuration link above for further information.
|
|
|
|
|
fts_languages = en es de
|
|
|
|
|
fts_tokenizers = generic email-address
|
|
|
|
|
|
|
|
|
|
# OPTIONAL: Recommended default FTS core configuration
|
|
|
|
|
fts_filters = normalizer-icu snowball stopwords
|
|
|
|
|
fts_filters_en = lowercase snowball english-possessive stopwords
|
|
|
|
|
}
|
|
|
|
|
EOF
|
|
|
|
|
elif [[ ! "${SKIP_SOLR}" =~ ^([yY][eE][sS]|[yY])$ ]]; then
|
|
|
|
|
cat <<EOF > /etc/dovecot/conf.d/fts.conf
|
|
|
|
|
# Autogenerated by mailcow
|
|
|
|
|
plugin {
|
|
|
|
|
fts = solr
|
|
|
|
|
fts_autoindex = yes
|
|
|
|
|
fts_autoindex_exclude = \Junk
|
|
|
|
|
fts_autoindex_exclude2 = \Trash
|
|
|
|
|
fts_solr = url=http://solr:8983/solr/dovecot-fts/
|
|
|
|
|
|
|
|
|
|
fts_tokenizers = generic email-address
|
|
|
|
|
fts_tokenizer_generic = algorithm=simple
|
|
|
|
|
|
|
|
|
|
fts_filters = normalizer-icu snowball stopwords
|
|
|
|
|
fts_filters_en = lowercase snowball english-possessive stopwords
|
|
|
|
|
}
|
|
|
|
|
EOF
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Migrate old sieve_after file
|
|
|
|
|
[[ -f /etc/dovecot/sieve_after ]] && mv /etc/dovecot/sieve_after /etc/dovecot/global_sieve_after
|
|
|
|
|
# Create global sieve scripts
|
|
|
|
@@ -274,6 +224,15 @@ mail_replica = tcp:${MAILCOW_REPLICA_IP}:${DOVEADM_REPLICA_PORT}
|
|
|
|
|
EOF
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Setting variables for indexer-worker inside fts.conf automatically according to mailcow.conf settings
|
|
|
|
|
if [[ "${SKIP_FTS}" =~ ^([nN][oO]|[nN])+$ ]]; then
|
|
|
|
|
echo -e "\e[94mConfiguring FTS Settings...\e[0m"
|
|
|
|
|
echo -e "\e[94mSetting FTS Memory Limit (per process) to ${FTS_HEAP} MB\e[0m"
|
|
|
|
|
sed -i "s/vsz_limit\s*=\s*[0-9]*\s*MB*/vsz_limit=${FTS_HEAP} MB/" /etc/dovecot/conf.d/fts.conf
|
|
|
|
|
echo -e "\e[94mSetting FTS Process Limit to ${FTS_PROCS}\e[0m"
|
|
|
|
|
sed -i "s/process_limit\s*=\s*[0-9]*/process_limit=${FTS_PROCS}/" /etc/dovecot/conf.d/fts.conf
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 401 is user dovecot
|
|
|
|
|
if [[ ! -s /mail_crypt/ecprivkey.pem || ! -s /mail_crypt/ecpubkey.pem ]]; then
|
|
|
|
|
openssl ecparam -name prime256v1 -genkey | openssl pkey -out /mail_crypt/ecprivkey.pem
|
|
|
|
|