You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/mail-filter/dspam/dspam-3.10.2-r1.ebuild

223 lines
5.8 KiB

# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
EAPI=4
inherit eutils user
DESCRIPTION="A statistical-algorithmic hybrid anti-spam filter"
HOMEPAGE="http://dspam.sourceforge.net/"
SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
LICENSE="AGPL-3"
SLOT="0"
KEYWORDS="amd64 ~arm ~ppc x86"
DRIVERS_IUSE="+hash mysql postgres sqlite"
SCALES_IUSE="small-scale +domain-scale large-scale"
IUSE="clamav daemon debug ldap static-libs syslog virtual-users user-homedirs ${DRIVERS_IUSE} ${SCALES_IUSE}"
DEPEND="
net-mail/mailbase
ldap? ( net-nds/openldap )
mysql? ( >=virtual/mysql-5.0 )
postgres? ( dev-db/postgresql )
sqlite? ( dev-db/sqlite:3 )
"
RDEPEND="
${DEPEND}
clamav? ( app-antivirus/clamav )
syslog? ( virtual/logger )
"
# Demands on sane USE flags:
# - find out what driver to use: select at least one
# - if static-libs is set, only one driver may be selected
# - find out what scale to use: select exactly one
# - user-homedirs does not work with virtual-users
REQUIRED_USE="
|| ( ${DRIVERS_IUSE//+} )
static-libs? ( ^^ ( ${DRIVERS_IUSE//+} ) )
^^ ( ${SCALES_IUSE//+} )
virtual-users? ( !user-homedirs )
"
# dspam setup defaults
DSPAM_HOME=/var/spool/dspam
DSPAM_CONF=/etc/dspam
DSPAM_LOG=/var/log/dspam
DSPAM_MODE=2510
DSPAM_DRIVERS=
DSPAM_DRIVERS_EXTRAS=
pkg_setup() {
# setup storage, this sets DSPAM_DRIVERS
dspam_setup_storage_drivers
# create dspam user and group
dspam_setup_user
}
src_configure() {
econf \
--sysconfdir=${DSPAM_CONF} \
--with-dspam-home=${DSPAM_HOME} \
--with-dspam-home-group=dspam \
--with-dspam-mode=${DSPAM_MODE} \
--with-dspam-group=dspam \
--with-logdir=${DSPAM_LOG} \
--enable-external-lookup \
--enable-long-usernames \
--enable-split-configuration \
$(use_enable clamav) \
$(use_enable daemon) \
$(use_enable debug) \
$(use_enable debug bnr-debug) \
$(use_enable debug verbose-debug) \
$(use_enable domain-scale) \
$(use_enable large-scale) \
$(use_enable static-libs static) \
$(use_enable syslog) \
$(use_enable user-homedirs homedir) \
$(use_enable virtual-users) \
--with-storage-driver=${DSPAM_DRIVERS} ${DSPAM_DRIVERS_EXTRAS} \
$(use mysql || use postgres && echo "--enable-preferences-extension") \
$(use syslog || echo "--with-logfile=${DSPAM_LOG}/dspam.log")
}
dspam_setup_user() {
# DSPAM CGI web gui (www-apps/dspam-web) needs to run as a regular user
# under suexec in apache, so DSPAM user/group need to be regular users too
local euid egid
for euid in {1000..5000} ; do
[ -z "$(egetent passwd ${euid})" ] && break
done
for egid in {1000..5000} ; do
[ -z "$(egetent group ${egid})" ] && break
done
enewgroup dspam ${egid}
enewuser dspam ${euid} -1 "${DSPAM_HOMEDIR}" dspam,mail
}
dspam_setup_storage_drivers() {
# Find out which storage drivers need to be enabled, and set some
# variables so that src_configure can pick them up
if use hash; then
DSPAM_DRIVERS+=",hash_drv"
fi
if use mysql; then
DSPAM_DRIVERS+=",mysql_drv"
DSPAM_DRIVERS_EXTRAS+="--with-mysql-includes=/usr/include/mysql "
fi
if use postgres; then
DSPAM_DRIVERS+=",pgsql_drv"
fi
if use sqlite; then
DSPAM_DRIVERS+=",sqlite3_drv"
fi
if ! use static-libs; then
# set the driver name twice to avoid a static build
DSPAM_DRIVERS+=${DSPAM_DRIVERS}
fi
# remove first comma separator
DSPAM_DRIVERS=${DSPAM_DRIVERS:1}
einfo "Building with drivers: ${DSPAM_DRIVERS}"
#echo DSPAM_DRIVERS_EXTRAS=$DSPAM_DRIVERS_EXTRAS
}
src_install() {
default
if use daemon; then
newinitd "${FILESDIR}/dspam.initd" dspam
newconfd "${FILESDIR}/dspam.confd" dspam
fi
if use mysql; then
insinto "/usr/share/${PN}/mysql"
local files="mysql_objects-4.1.sql mysql_objects-space.sql mysql_objects-speed.sql purge-4.1.sql purge.sql"
if use virtual-users; then
files+=" virtual_user_aliases.sql virtual_users.sql"
fi
for file in $files; do
doins src/tools.mysql_drv/${file}
done
fi
if use postgres; then
insinto "/usr/share/${PN}/pgsql"
local files="pgsql_objects.sql purge-pe.sql purge.sql"
if use virtual-users; then
files+=" virtual_users.sql"
fi
for file in $files; do
doins src/tools.pgsql_drv/${file}
done
fi
if use sqlite; then
insinto "/usr/share/${PN}/sqlite"
newins src/tools.sqlite_drv/purge-3.sql purge.sql
fi
insinto "${DSPAM_HOME}/txt"
doins txt/*.txt
for i in spam nonspam; do
echo "Scanned and tagged with DSPAM ${PV} on Gentoo Linux as ${i} by ISP" > "${T}/msgtag.${i}"
doins "${T}/msgtag.${i}"
done
newbin contrib/dspam_maintenance/dspam_maintenance.sh dspam_maintenance
exeinto /etc/cron.daily
newexe "${FILESDIR}/dspam.cron-r4" dspam
insinto /etc/logrotate.d
newins "${FILESDIR}/dspam.logrotate" dspam
dodoc CHANGELOG README* RELEASE.NOTES UPGRADING doc/*.txt
# stop logrotate-3.8 from complaining
dodir /var/log/dspam
fowners dspam:dspam /var/log/dspam
fperms 0750 /var/log/dspam
# Install dspamc setgid
fowners root:dspam /usr/bin/dspamc &&
fperms g+s /usr/bin/dspamc ||
die "failed to alter dspamc owner:group or mode"
}
pkg_preinst() {
# dspam-3.10.0: config dir change, should be removed at some later point
if [ -d "${ROOT}/etc/mail/dspam" ]; then
ewarn "The configuration directory of DSPAM has been relocated from /etc/mail/dspam to ${DSPAM_CONF}."
if [ -h "${ROOT}${DSPAM_CONF}" ]; then
# symlink, this is the setup in older ebuilds
ewarn "Moving contents of /etc/mail/dspam to ${DSPAM_CONF} ..."
rm "${ROOT}${DSPAM_CONF}" && mv "${ROOT}/etc/mail/dspam" "${DSPAM_CONF}"
eend $?
elif [ -d "${ROOT}${DSPAM_CONF}" ]; then
# directory and no symlink, do it manually since we cannot decide.
ewarn "You have both /etc/mail/dspam and ${DSPAM_CONF} directories, please delete the former."
else
# nothing interesting in /etc/dspam
ewarn "Moving contents of /etc/mail/dspam to ${DSPAM_CONF} ..."
mv "${ROOT}/etc/mail/dspam" "${DSPAM_CONF}"
eend $?
fi
fi
}