diff --git a/mail/dovecot/Makefile b/mail/dovecot/Makefile index fd6c823fef69..c789da0a2294 100644 --- a/mail/dovecot/Makefile +++ b/mail/dovecot/Makefile @@ -1,166 +1,166 @@ ###################################################################### # Anytime PORTVERSION changes please bump PORTREVISION of: # # - mail/dovecot-pigeonhole. See ports/146029 for an explanation. # # - mail/dovecot-fts-flatcurve. # # - mail/dovecot-fts-xapian. # # - mail/dovecot-fts-elastic. # # - mail/dovecot-coi. # # - mail/dovecot-xaps. # ###################################################################### PORTNAME= dovecot PORTVERSION= 2.3.21 -PORTREVISION= 5 +PORTREVISION= 6 CATEGORIES= mail MASTER_SITES= https://dovecot.org/releases/2.3/ MAINTAINER= ler@FreeBSD.org COMMENT= Secure, fast and powerful IMAP and POP3 server WWW= https://www.dovecot.org/ LICENSE= LGPL21 MIT LICENSE_COMB= dual LIB_DEPENDS= libzstd.so:archivers/zstd USES= cpe iconv libtool pkgconfig ssl USE_RC_SUBR= dovecot GNU_CONFIGURE= yes GNU_CONFIGURE_MANPREFIX= ${PREFIX}/share CONFIGURE_ARGS= --localstatedir=/var \ --with-docs \ --with-ssl=openssl \ --with-statedir=/var/db/dovecot \ --with-shadow=no \ --with-systemd=no USE_LDCONFIG= ${PREFIX}/lib/dovecot INSTALL_TARGET= install-strip USERS= dovecot dovenull GROUPS= ${USERS} OPTIONS_DEFINE= LIBSODIUM LIBUNWIND LIBWRAP LUA LZ4 DOCS EXAMPLES OPTIONS_DEFAULT=GSSAPI_NONE LDAP LIBWRAP OPTIONS_SUB= yes OPTIONS_GROUP= DB FTS OPTIONS_GROUP_DB= CDB LDAP MYSQL PGSQL SQLITE OPTIONS_GROUP_FTS= ICU LUCENE SOLR TEXTCAT OPTIONS_SINGLE= GSSAPI OPTIONS_SINGLE_GSSAPI= GSSAPI_NONE GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT DB_DESC= Database support CDB_DESC= CDB database support FTS_DESC= Full text search plugins ICU_DESC= Use libicu for FTS unicode normalization LUCENE_DESC= CLucene FTS support SOLR_DESC= Solr FTS support TEXTCAT_DESC= Libexttextcat FTS support GSSAPI_NONE_DESC= Build without GSSAPI support GSSAPI_BASE_DESC= Use GSSAPI from base GSSAPI_HEIMDAL_DESC= Use Heimdal GSSAPI from security/heimdal GSSAPI_MIT_DESC= Use MIT GSSAPI from security/krb5 # General options LIBSODIUM_DESC= Support libsodium based crypts (ARGON2I/ARGON2ID) LIBSODIUM_LIB_DEPENDS= libsodium.so:security/libsodium LIBSODIUM_CONFIGURE_WITH= sodium LIBUNWIND_CONFIGURE_ON= --with-libunwind=yes LIBUNWIND_CONFIGURE_OFF= --with-libunwind=no LIBUNWIND_DESC= Get backtraces using libunwind LIBUNWIND_LIB_DEPENDS= libunwind.so:devel/libunwind LIBWRAP_CONFIGURE_WITH= libwrap LUA_CONFIGURE_WITH= lua LUA_USES= lua:51,53 LZ4_CONFIGURE_WITH= lz4 LZ4_LIB_DEPENDS= liblz4.so:archivers/liblz4 # Databases CDB_CONFIGURE_WITH= cdb CDB_LIB_DEPENDS= libcdb.so:databases/tinycdb LDAP_USES= ldap LDAP_CONFIGURE_WITH= ldap MYSQL_USES= mysql MYSQL_CONFIGURE_WITH= mysql PGSQL_USES= pgsql PGSQL_CONFIGURE_WITH= pgsql SQLITE_USES= sqlite SQLITE_CONFIGURE_WITH= sqlite # FTS ICU_CONFIGURE_WITH= icu ICU_LIB_DEPENDS= libicui18n.so:devel/icu LUCENE_CONFIGURE_WITH= lucene stemmer LUCENE_LIB_DEPENDS= libclucene-core.so:textproc/clucene SOLR_CONFIGURE_WITH= solr SOLR_LIB_DEPENDS= libcurl.so:ftp/curl \ libexpat.so:textproc/expat2 TEXTCAT_CONFIGURE_WITH= textcat TEXTCAT_LIB_DEPENDS= libexttextcat-2.0.so:textproc/libexttextcat # GSSAPI GSSAPI_NONE_CONFIGURE_ON= --without-gssapi GSSAPI_NONE_CONFIGURE_OFF= --with-gssapi ${GSSAPI_CONFIGURE_ARGS} GSSAPI_BASE_USES= gssapi GSSAPI_HEIMDAL_USES= gssapi:heimdal GSSAPI_MIT_USES= gssapi:mit DOCS= AUTHORS COPYING INSTALL NEWS TODO README PORTDOCS= * PORTEXAMPLES= * # Default requirement for dovecot rc script _REQUIRE= LOGIN LDAP_VARS= _REQUIRE+=slapd MYSQL_VARS= _REQUIRE+=mysql PGSQL_VARS= _REQUIRE+=postgresql SUB_LIST+= REQUIRE="${_REQUIRE}" SUB_FILES+= pkg-message CPPFLAGS+= -I${LOCALBASE}/include -I${OPENSSLINC} LDFLAGS+= -L${LOCALBASE}/lib -L${OPENSSLLIB} post-patch: @${REINPLACE_CMD} -e 's,/etc/dovecot,${PREFIX}/etc/dovecot,g; \ s,sysconfdir=/etc,sysconfdir=${PREFIX}/etc,g' \ ${WRKSRC}/doc/example-config/*.conf ${WRKSRC}/doc/example-config/conf.d/* \ ${WRKSRC}/doc/example-config/*.conf.ext @${REINPLACE_CMD} -e '/^LIBS =/s/$$/ @LTLIBICONV@/' \ ${WRKSRC}/src/lib-mail/Makefile.in # Install the sample config files into ETCDIR/example-config/ @${REINPLACE_CMD} -e '/^exampledir =/s|\$$(docdir)|${ETCDIR}|' \ ${WRKSRC}/doc/example-config/Makefile.in \ ${WRKSRC}/doc/example-config/conf.d/Makefile.in post-patch-LUA-on: @${REINPLACE_CMD} -e '/^libdovecot_lua_la_DEPENDENCIES =/ s|LUA_LIBS|true|' \ ${WRKSRC}/src/lib-lua/Makefile.in post-install: @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} ${MV} ${STAGEDIR}${DOCSDIR}/dovecot-openssl.cnf ${STAGEDIR}${EXAMPLESDIR} ${MV} ${STAGEDIR}${DOCSDIR}/mkcert.sh ${STAGEDIR}${EXAMPLESDIR} post-install-DOCS-on: @${MKDIR} ${STAGEDIR}${DOCSDIR} (cd ${WRKSRC} && ${INSTALL_DATA} ${DOCS} ${STAGEDIR}${DOCSDIR}) .include diff --git a/mail/dovecot/files/dovecot.in b/mail/dovecot/files/dovecot.in index 8c717b0610c8..625ce85adcc5 100644 --- a/mail/dovecot/files/dovecot.in +++ b/mail/dovecot/files/dovecot.in @@ -1,78 +1,78 @@ #!/bin/sh # PROVIDE: dovecot # REQUIRE: %%REQUIRE%% # BEFORE: mail # KEYWORD: shutdown # dovecot_enable (bool): Set it to YES to enable dovecot # Default: NO # dovecot_config (str): Path to dovecot.conf # Default: %%ETCDIR%%/dovecot.conf # Set it to a space-separated list to start # multiple dovecot instances # dovecot_flags (str): Extra flags to pass to dovecot # Default: empty # Define dovecot_* variables in one of these files: # /etc/rc.conf # /etc/rc.conf.local # /etc/rc.conf.d/dovecot . /etc/rc.subr name=dovecot rcvar=dovecot_enable # read configuration and set defaults load_rc_config ${name} : ${dovecot_enable:="NO"} : ${dovecot_config:="%%ETCDIR%%/${name}.conf"} : ${dovecot_svcj_options:="net_basic"} command="%%PREFIX%%/sbin/${name}" start_precmd="start_precmd" stop_postcmd="stop_postcmd" restart_cmd="restart_cmd" extra_commands="reload" start_precmd() { # Ensure runtime directory exists with correct permissions /usr/bin/install -o root -g wheel -m 0755 -d ${base_dir} } stop_postcmd() { # Cleanup runtime directory. The dovecot.conf link has to stay. /usr/bin/find ${base_dir} ! -type l -delete } restart_cmd() { # Overriding makes rc.subr run this once for each instance run_rc_command stop run_rc_command start } # To start multiple instances of dovecot set dovecot_config to # a space separated list of configuration files. for config in ${dovecot_config}; do required_files="${config}" command_args="-c ${config}" if [ -s ${config} ]; then - ${command} ${command_args} -a 2>&1 >/dev/null - if [ $? -ne 0 ]; then - echo "==Error==" - echo "Configuration file check failed." - # Use dovecot to print the config error. - ${command} ${command_args} -a - exit $? - fi - base_dir=$(${command} ${command_args} -a 2>/dev/null | /usr/bin/awk -F '= ' '/^base_dir =/ { print $2 }') + doveconf_settings="$(${command} ${command_args} -a 2>/dev/null)" + if [ $? -ne 0 ]; then + echo "==Error==" + echo "Configuration file check failed." + # Use dovecot to print the config error. + ${command} ${command_args} -a + exit $? + fi + base_dir="$(echo "$doveconf_settings" | /usr/bin/awk -F '= ' '/^base_dir =/ { print $2 }')" pidfile="${base_dir}/master.pid" else echo "==Error==" echo "Config file ${config} does not exist. If this is" echo "a new installation, please create the config files as outlined in" echo " # pkg info -D dovecot" fi run_rc_command "$1" done