diff options
Diffstat (limited to 'source/n/dovecot')
-rw-r--r-- | source/n/dovecot/doinst.sh | 45 | ||||
-rwxr-xr-x | source/n/dovecot/dovecot.SlackBuild | 188 | ||||
-rw-r--r-- | source/n/dovecot/dovecot.config.README.diff | 20 | ||||
-rw-r--r-- | source/n/dovecot/dovecot.default.shadow.auth.diff | 40 | ||||
-rw-r--r-- | source/n/dovecot/dovecot.url | 1 | ||||
-rw-r--r-- | source/n/dovecot/rc.dovecot | 46 | ||||
-rw-r--r-- | source/n/dovecot/slack-desc | 19 |
7 files changed, 359 insertions, 0 deletions
diff --git a/source/n/dovecot/doinst.sh b/source/n/dovecot/doinst.sh new file mode 100644 index 00000000..dc2d5700 --- /dev/null +++ b/source/n/dovecot/doinst.sh @@ -0,0 +1,45 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +preserve_perms() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + if [ -e $OLD ]; then + cp -a $OLD ${NEW}.incoming + cat $NEW > ${NEW}.incoming + mv ${NEW}.incoming $NEW + fi + config $NEW +} + +preserve_perms etc/rc.d/rc.dovecot.new + +for file in etc/dovecot/*.conf.new etc/dovecot/*.ext.new etc/dovecot/conf.d/*.conf.new etc/dovecot/conf.d/*.ext.new ; do + config $file +done + +# Make sure that the dovecot user/group (UID 94, GID 94), and the +# postdrop user/group (UID 65, GID 95) exist on this system: +if ! grep -q "^dovecot:" etc/passwd ; then + echo "dovecot:x:94:94:User for Dovecot processes:/dev/null:/bin/false" >> etc/passwd +fi +if ! grep -q "^dovenull:" etc/passwd ; then + echo "dovenull:x:95:95:User for Dovecot login processing:/dev/null:/bin/false" >> etc/passwd +fi +if ! grep -q "^dovecot:" etc/group ; then + echo "dovecot:x:94:" >> etc/group +fi +if ! grep -q "^dovenull:" etc/group ; then + echo "dovenull:x:95:" >> etc/group +fi + diff --git a/source/n/dovecot/dovecot.SlackBuild b/source/n/dovecot/dovecot.SlackBuild new file mode 100755 index 00000000..4a9a3572 --- /dev/null +++ b/source/n/dovecot/dovecot.SlackBuild @@ -0,0 +1,188 @@ +#!/bin/bash + +# Copyright 2006, 2010 Alan Hicks, Lizella, GA +# Copyright 2013, 2014, 2015, 2016, 2017 Mario Preksavec, Zagreb, Croatia +# Copyright 2017, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PKGNAM=dovecot +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-4} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PKGNAM-$VERSION-$ARCH-$BUILD.txz" + exit 0 +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O3 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +if [ "$(grep "^dovecot:x:94:94" /etc/passwd)" = "" -o \ + "$(grep "^dovecot:x:94:" /etc/group)" = "" -o \ + "$(grep "^dovenull:x:95:95" /etc/passwd)" = "" -o \ + "$(grep "^dovenull:x:95:" /etc/group)" = "" ]; then +cat << EOF +The dovecot and dovenull user/group do not exist on this system. +Before running this script, please add them with the following commands: + +groupadd -g 94 dovecot +useradd -d /dev/null -s /bin/false -u 94 -g 94 dovecot +groupadd -g 95 dovenull +useradd -d /dev/null -s /bin/false -u 95 -g 95 dovenull + +EOF +exit 1 +fi + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PKGNAM-ce-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.?z || exit 1 +cd $PKGNAM-$VERSION || exit 1 + +# Ship config set up for authentication from /etc/passwd and /etc/shadow. +zcat $CWD/dovecot.default.shadow.auth.diff.gz | patch -p1 --verbose || exit 1 + +# Since this package installs working config files in /etc/dovecot, there isn't +# any need to send people to /usr/doc. Also, make sure that TLS is recommended. +zcat $CWD/dovecot.config.README.diff.gz | patch -p1 --verbose || exit 1 + +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +# Add -ldl to LDFLAGS for sqlite +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="-ldl" \ +./configure \ + --prefix=/usr \ + --sysconfdir=/etc \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --localstatedir=/var \ + --docdir=/usr/doc/$PKGNAM-$VERSION \ + --mandir=/usr/man \ + --with-notify=inotify \ + --without-pam \ + --with-ldap=plugin \ + --with-lucene \ + --with-mysql \ + --with-sqlite \ + --with-libcap \ + --disable-static \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make -j1 || exit 1 +make install-strip DESTDIR=$PKG || exit 1 + +# Install sample configuration files: +mkdir -p $PKG/etc/dovecot +cp -a $PKG/usr/doc/$PKGNAM-$VERSION/example-config/* $PKG/etc/dovecot +( cd $PKG/etc/dovecot + for file in *.conf *.ext conf.d/*.conf conf.d/*.ext ; do + mv $file ${file}.new + done +) + +mkdir -p $PKG/etc/rc.d +cat $CWD/rc.dovecot > $PKG/etc/rc.d/rc.dovecot.new +chmod 0644 $PKG/etc/rc.d/rc.dovecot.new + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1 | grep -v '\.gz$') ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +cp -a \ + AUTHORS COPYING* ChangeLog NEWS README TODO \ + $PKG/usr/doc/$PKGNAM-$VERSION/ + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +# If there's a NEWS file, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r NEWS ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat NEWS | head -n 1000 > $DOCSDIR/NEWS + touch -r NEWS $DOCSDIR/NEWS +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/source/n/dovecot/dovecot.config.README.diff b/source/n/dovecot/dovecot.config.README.diff new file mode 100644 index 00000000..3ba80fb1 --- /dev/null +++ b/source/n/dovecot/dovecot.config.README.diff @@ -0,0 +1,20 @@ +--- ./doc/example-config/README.in.orig 2017-06-23 06:18:28.000000000 -0500 ++++ ./doc/example-config/README.in 2017-11-14 19:04:46.621109623 -0600 +@@ -1,2 +1,15 @@ +-Configuration files go to this directory. See example configuration files in +-@exampledir@/ ++Configuration files go to this directory. ++ ++The configuration files that are provided here should work out of the box on ++Slackware once you've installed security certificates to support SSL/TLS. ++ ++See the config file beneath this directory: conf.d/10-ssl.conf ++ ++For a script that will install self-signed certificates, see mkcert.sh in ++/usr/doc/dovecot-2.* ++ ++It is also recommended to edit conf.d/10-auth.conf and uncomment this line: ++#disable_plaintext_auth = yes ++ ++This will prevent usernames and passwords from being sent until a secure ++connection has been established. diff --git a/source/n/dovecot/dovecot.default.shadow.auth.diff b/source/n/dovecot/dovecot.default.shadow.auth.diff new file mode 100644 index 00000000..e0d8de05 --- /dev/null +++ b/source/n/dovecot/dovecot.default.shadow.auth.diff @@ -0,0 +1,40 @@ +--- ./doc/example-config/conf.d/auth-system.conf.ext.orig 2017-12-22 07:53:36.000000000 -0600 ++++ ./doc/example-config/conf.d/auth-system.conf.ext 2018-01-31 17:05:06.840878097 -0600 +@@ -7,12 +7,12 @@ + # PAM is typically used with either userdb passwd or userdb static. + # REMEMBER: You'll need /etc/pam.d/dovecot file created for PAM + # authentication to actually work. <doc/wiki/PasswordDatabase.PAM.txt> +-passdb { +- driver = pam ++#passdb { ++ #driver = pam + # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=<n>] + # [cache_key=<key>] [<service name>] + #args = dovecot +-} ++#} + + # System users (NSS, /etc/passwd, or similar). + # In many systems nowadays this uses Name Service Switch, which is +@@ -24,13 +24,17 @@ + #} + + # Shadow passwords for system users (NSS, /etc/shadow or similar). +-# Deprecated by PAM nowadays. ++# This is the default on Slackware systems. + # <doc/wiki/PasswordDatabase.Shadow.txt> +-#passdb { +- #driver = shadow ++passdb { ++ driver = shadow + # [blocking=no] + #args = +-#} ++} ++# Auth worker to authenticate shadow passwords on Slackware: ++service auth-worker { ++ group = shadow ++} + + # PAM-like authentication for OpenBSD. + # <doc/wiki/PasswordDatabase.BSDAuth.txt> diff --git a/source/n/dovecot/dovecot.url b/source/n/dovecot/dovecot.url new file mode 100644 index 00000000..20b1beff --- /dev/null +++ b/source/n/dovecot/dovecot.url @@ -0,0 +1 @@ +http://www.dovecot.org/releases/ diff --git a/source/n/dovecot/rc.dovecot b/source/n/dovecot/rc.dovecot new file mode 100644 index 00000000..c79b96e7 --- /dev/null +++ b/source/n/dovecot/rc.dovecot @@ -0,0 +1,46 @@ +#!/bin/sh + +dovecot_start() +{ + echo "Starting dovecot: /usr/sbin/dovecot" + /usr/sbin/dovecot +} + +dovecot_stop() +{ + echo "Stopping dovecot..." + /usr/bin/doveadm stop +} + +dovecot_status() +{ + /usr/bin/doveadm service status +} + +dovecot_reload() +{ + echo "Reloading dovecot..." + /usr/bin/doveadm reload +} + +case $1 in +'start') + dovecot_start + ;; +'stop') + dovecot_stop + ;; +'status') + dovecot_status + ;; +'restart') + dovecot_stop + sleep 3 + dovecot_start + ;; +'reload') + dovecot_reload + ;; +*) + echo "usage $0 start|stop|restart|reload|status" +esac diff --git a/source/n/dovecot/slack-desc b/source/n/dovecot/slack-desc new file mode 100644 index 00000000..3fc6c58b --- /dev/null +++ b/source/n/dovecot/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +dovecot: dovecot (IMAP and POP3 server) +dovecot: +dovecot: Dovecot is an open source IMAP and POP3 server for Linux/UNIX-like +dovecot: systems, written with security foremost in mind. +dovecot: +dovecot: Dovecot can work with standard mbox and Maildir formats and it is +dovecot: fully compatible with UW-IMAP and Courier IMAP servers' +dovecot: implementation of them, as well as mail clients accessing the +dovecot: mailboxes directly. +dovecot: +dovecot: |