diff options
author | Lim Swee Tat <st_lim@gentoo.org> | 2005-03-21 00:10:30 +0000 |
---|---|---|
committer | Lim Swee Tat <st_lim@gentoo.org> | 2005-03-21 00:10:30 +0000 |
commit | 86401a076612073fd7b92173f1cbc621681a79b8 (patch) | |
tree | 23699d1529e42bde2796069629c3e78d141637da /mail-filter | |
parent | version bump (diff) | |
download | historical-86401a076612073fd7b92173f1cbc621681a79b8.tar.gz historical-86401a076612073fd7b92173f1cbc621681a79b8.tar.bz2 historical-86401a076612073fd7b92173f1cbc621681a79b8.zip |
Fixed bug #85939 #81596
Package-Manager: portage-2.0.51.19
Diffstat (limited to 'mail-filter')
-rw-r--r-- | mail-filter/dspam/ChangeLog | 8 | ||||
-rw-r--r-- | mail-filter/dspam/Manifest | 7 | ||||
-rw-r--r-- | mail-filter/dspam/dspam-3.4.0-r1.ebuild | 502 | ||||
-rw-r--r-- | mail-filter/dspam/files/digest-dspam-3.4.0-r1 | 2 | ||||
-rw-r--r-- | mail-filter/dspam/files/dspam.cron | 28 | ||||
-rw-r--r-- | mail-filter/dspam/files/dspam.rc | 43 |
6 files changed, 580 insertions, 10 deletions
diff --git a/mail-filter/dspam/ChangeLog b/mail-filter/dspam/ChangeLog index d83fd8ed65fb..2de2b16c223c 100644 --- a/mail-filter/dspam/ChangeLog +++ b/mail-filter/dspam/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for mail-filter/dspam # Copyright 1999-2005 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/mail-filter/dspam/ChangeLog,v 1.47 2005/03/11 01:04:24 st_lim Exp $ +# $Header: /var/cvsroot/gentoo-x86/mail-filter/dspam/ChangeLog,v 1.48 2005/03/21 00:10:29 st_lim Exp $ + +*dspam-3.4.0-r1 (20 Mar 2005) + + 20 Mar 2005; Lim Swee Tat <st_lim@gentoo.org> files/dspam.cron, + +files/dspam.rc, +dspam-3.4.0-r1.ebuild: + Fix bug #85939 and #81596 *dspam-3.4_rc3 (11 Mar 2005) diff --git a/mail-filter/dspam/Manifest b/mail-filter/dspam/Manifest index d9426d574084..f44e8da41c73 100644 --- a/mail-filter/dspam/Manifest +++ b/mail-filter/dspam/Manifest @@ -1,5 +1,6 @@ -MD5 0d240bcaeb04b0c9abfaf8cccb7e371b ChangeLog 9443 +MD5 ad3184f48bb6dbfd3e0d1ce67cda6c58 ChangeLog 9612 MD5 e380a39924d3ab14f6b1bcffcba31030 dspam-3.2.7.ebuild 15589 +MD5 38bc389154a7b4fb417c661f7fa345cf dspam-3.4.0-r1.ebuild 19654 MD5 6556567b335a4c95782565be3fc57e3a dspam-3.4.0.ebuild 16374 MD5 53fa7ac719a55e42f5558b3f367be77e dspam-3.4_rc2.ebuild 16374 MD5 82cc2a81e351669279b735fbd67f910e dspam-3.4_rc3.ebuild 16376 @@ -8,9 +9,11 @@ MD5 c12a54112c6fec3530a7b1a368d04ac8 files/README.postfix 309 MD5 e0469b961385fda4305602dc2519d319 files/README.qmail 2317 MD5 cd1bdb75fd86304f9453741a910cb8a2 files/crontab.db4 196 MD5 f2f86e8f7ab440c8537f40fa18a0ee43 files/crontab.mysql 118 +MD5 086d49ad3a5e289bd80de810b1f52b7f files/digest-dspam-3.4.0-r1 129 MD5 38b4d6fe59c97cd8157debd9384db8ac files/digest-dspam-3.4_rc2 131 MD5 b09e3fad7343b70d40f8ff7ddeca0e81 files/digest-dspam-3.4_rc3 131 -MD5 9a2fda6789f0db17b6a32ca84e9e3884 files/dspam.cron 2501 +MD5 34841f2d2c9d6e057b9839bbe354e34a files/dspam.cron 3478 +MD5 e2850ede85e459ab5479b7d2e79eeb5a files/dspam.rc 1025 MD5 2163ca41de383f09f4d754e2d35cb158 files/logrotate.dspam 156 MD5 086d49ad3a5e289bd80de810b1f52b7f files/digest-dspam-3.4.0 129 MD5 7735956f416bd58bfcbeee99af43bea0 files/digest-dspam-3.2.7 63 diff --git a/mail-filter/dspam/dspam-3.4.0-r1.ebuild b/mail-filter/dspam/dspam-3.4.0-r1.ebuild new file mode 100644 index 000000000000..c89d4a4dae48 --- /dev/null +++ b/mail-filter/dspam/dspam-3.4.0-r1.ebuild @@ -0,0 +1,502 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/mail-filter/dspam/dspam-3.4.0-r1.ebuild,v 1.1 2005/03/21 00:10:30 st_lim Exp $ + +inherit eutils + +S=${WORKDIR}/${PN}-${PV} +DESCRIPTION="A statistical-algorithmic hybrid anti-spam filter" +SRC_URI="http://dspam.nuclearelephant.com/sources/${PN}-${PV}.tar.gz + http://dspam.nuclearelephant.com/sources/extras/dspam_sa_trainer.tar.gz" +HOMEPAGE="http://dspam.nuclearelephant.com/" +LICENSE="GPL-2" + +IUSE="cyrus debug exim mysql maildrop neural oci8 postgres procmail sqlite sqlite3 large-domain virtual-users" +DEPEND="exim? ( >=mail-mta/exim-4.34 ) + mysql? ( >=dev-db/mysql-3.23 ) || ( >=sys-libs/db-4.0 ) + maildrop? ( >=mail-filter/maildrop-1.5.3 ) + sqlite? ( <dev-db/sqlite-3 ) + sqlite3? ( >=dev-db/sqlite-3 ) + postgres? ( >=dev-db/postgresql-7.4.3 ) + procmail? ( >=mail-filter/procmail-3.22 ) + x86? ( cyrus? ( >=net-mail/cyrus-imapd-2.1.15 ) ) + >=sys-libs/db-4.0 + " +RDEPEND="sys-process/cronbase + app-admin/logrotate" +KEYWORDS="~x86 ~ppc ~alpha" +SLOT="0" + +# some FHS-like structure +HOMEDIR="/etc/mail/dspam" +DATADIR="/var/spool/dspam" +LOGDIR="/var/log/dspam" + +pkg_setup() { + local multiple_dbs="0" + local supported_dbs="mysql postgres oci8 sqlite sqlite3" + for foo in ${supported_dbs}; do + if use ${foo}; then + let multiple_dbs="((multiple_dbs + 1 ))" + einfo " ${foo} database support in your USE flags." + fi + done + if [ "${multiple_dbs}" -ge "2" ]; then + echo + ewarn "You have multiple database backends active in your USE flags." + ewarn "Will default to MySQL as your dspam database backend." + ewarn "If you want to build with another database backend; hit Control-C now." + ewarn "Change your USE flag -mysql and emerge again." + echo + has_version ">=sys-apps/portage-2.0.50" && ( + einfo "It would be best practice to add the set of USE flags that you use for this" + einfo "package to the file: /etc/portage/package.use. Example:" + einfo "\`echo \"mail-filter/dspam -mysql postgres -oci8 -sqlite\" >> /etc/portage/package.use\`" + einfo "to build dspam with Postgres database as your dspam backend." + ) + echo + ewarn "Waiting 30 seconds before starting..." + ewarn "(Control-C to abort)..." + epause 30 + elif [ "${multiple_dbs}" -eq "0" ]; then + echo + ewarn "You need to select at least one database backend in your USE flags." + ewarn "Please enable one of the following USE flags:" + ewarn " ${supported_dbs}" + echo + die "Database support missing" + fi + has_version sys-kernel/linux26-headers || ( + einfo "To use the new DSPAM deamon mode, you need to emerge" + einfo "sys-kernel/linux26-headers and rebuild glibc to support NPTL" + echo + ewarn "Waiting 30 seconds before starting..." + ewarn "(Control-C to abort)..." + epause 30 + ) + id dspam 2>/dev/null || enewgroup dspam 26 + id dspam 2>/dev/null || enewuser dspam 26 /bin/bash ${HOMEDIR} dspam +} + +src_compile() { + local myconf + + myconf="${myconf} --enable-long-username" + use large-domain && myconf="${myconf} --enable-large-scale" ||\ + myconf="${myconf} --enable-domain-scale" + + myconf="${myconf} --with-dspam-mode=4755" + myconf="${myconf} --with-dspam-owner=dspam" + myconf="${myconf} --with-dspam-group=dspam" + myconf="${myconf} --sysconfdir=${HOMEDIR}" + myconf="${myconf} --with-logdir=${LOGDIR}" + use virtual-users || myconf="${myconf} --with-dspam-home=${HOMEDIR}" + + # enables support for debugging (touch /etc/dspam/.debug to turn on) + # optional: even MORE debugging output, use with extreme caution! + use debug && myconf="${myconf} --enable-debug --enable-verbose-debug" + + # select storage driver + if use mysql; then + myconf="${myconf} --with-storage-driver=mysql_drv" + myconf="${myconf} --with-mysql-includes=/usr/include/mysql" + myconf="${myconf} --with-mysql-libraries=/usr/lib/mysql" + myconf="${myconf} --enable-preferences-extension" + + if has_version sys-kernel/linux26-headers; then + myconf="${myconf} --enable-daemon" + fi + + use virtual-users && myconf="${myconf} --enable-virtual-users-users" + # an experimental feature available with MySQL and PgSQL backend + use neural && myconf="${myconf} --enable-neural-networking" + elif use postgres ; then + myconf="${myconf} --with-storage-driver=pgsql_drv" + myconf="${myconf} --with-pgsql-includes=/usr/include/postgresql" + myconf="${myconf} --with-pgsql-libraries=/usr/lib/postgresql" + myconf="${myconf} --enable-preferences-extension" + + if has_version sys-kernel/linux26-headers; then + myconf="${myconf} --enable-daemon" + fi + + use virtual-users && myconf="${myconf} --enable-virtual-users-users" + # an experimental feature available with MySQL and PgSQL backend + use neural && myconf="${myconf} --enable-neural-networking" + elif use oci8 ; then + myconf="${myconf} --with-storage-driver=ora_drv" + myconf="${myconf} --with-oracle-home=${ORACLE_HOME}" + myconf="${myconf} --enable-virtual-users-users" + + # I am in no way a Oracle specialist. If someone knows + # how to query the version of Oracle, then let me know. + if (expr ${ORACLE_HOME/*\/} : 10 1>/dev/null 2>&1); then + myconf="${myconf} --with-oracle-version=10" + fi + elif use sqlite3 ; then + myconf="${myconf} --with-storage-driver=sqlite3_drv" + myconf="${myconf} --enable-virtual-users-users" + elif use sqlite ; then + myconf="${myconf} --with-storage-driver=sqlite_drv" + myconf="${myconf} --enable-virtual-users-users" + else + myconf="${myconf} --with-storage-driver=libdb4_drv" + fi + + econf ${myconf} || die + emake || die + +} + +src_install () { + + # Fix issues with older dspam configuration + CONFIG_PROTECT="${CONFIG_PROTECT} ${DATADIR} /var/run/dspam" + CONFIG_PROTECT_MASK="${CONFIG_PROTECTMASK/${HOMEDIR}/}" + CONFIG_PROTECT_MASK="${CONFIG_PROTECTMASK/${DATADIR}/}" + + # open up perms on /etc/mail/dspam + diropts -m0775 -o dspam -g dspam + dodir ${HOMEDIR} + keepdir ${HOMEDIR} + + # keeps dspam data in /var + diropts -m0775 -o dspam -g dspam + dodir ${DATADIR} + keepdir ${DATADIR} + + # keeps dspam log in /var/log + diropts -m0775 -o dspam -g dspam + dodir ${LOGDIR} + keepdir ${LOGDIR} + touch ${T}/empty.file + newins ${T}/empty.file system.log + dosym ${LOGDIR}/system.log ${HOMEDIR}/system.log + + # ${HOMEDIR}/data is a symlink to ${DATADIR} + dosym ${DATADIR} ${HOMEDIR}/data + + # make install + sed -e 's/rm -f ..mandir.\(.*\)/rm -f ${D}${mandir}\1/g' \ + -e 's/ln -s ..mandir.\(.*\) ..mandir.\(.*3\)/ln -s ${mandir}\1.gz ${D}${mandir}\2.gz/g' \ + -i Makefile + make DESTDIR=${D} install || die + chmod 4755 ${D}/usr/bin/dspam + chmod 4755 ${D}/usr/bin/dspam_stats + + # documentation + dodoc CHANGELOG LICENSE README* RELEASE.NOTES UPGRADING + dodoc ${FILESDIR}/README.postfix ${FILESDIR}/README.qmail + if use mysql; then + dodoc src/tools.mysql_drv/README + elif use postgres ; then + dodoc src/tools.pgsql_drv/README + elif use oci8 ; then + dodoc src/tools.ora_drv/README + elif use sqlite || sqlite3 ; then + dodoc src/tools.sqlite_drv/README + fi + doman man/dspam* + dodoc ${DISTDIR}/dspam_sa_trainer.tar.gz + + # build some initial configuration data + cp src/dspam.conf ${T}/dspam.conf + if use cyrus; then + sed -i 's:^#*\(UntrustedDeliveryAgent\)[\t ]*.*:\1 \"/usr/lib/cyrus/deliver %u\":gI' ${T}/dspam.conf + sed -i 's:^\(TrustedDeliveryAgent\)[\t ]*.*:\1 \"/usr/lib/cyrus/deliver\":gI' ${T}/dspam.conf + elif use exim; then + sed -i 's:^#*\(UntrustedDeliveryAgent\)[\t ]*.*:\1 \"/usr/sbin/exim -oMr spam-scanned %u\":gI' ${T}/dspam.conf + sed -i 's:^\(TrustedDeliveryAgent\)[\t ]*.*:\1 \"/usr/sbin/exim -oMr spam-scanned %u\":gI' ${T}/dspam.conf + elif use maildrop; then + sed -i 's:^#*\(UntrustedDeliveryAgent\)[\t ]*.*:\1 \"/usr/bin/maildrop -d %u\":gI' ${T}/dspam.conf + sed -i 's:^\(TrustedDeliveryAgent\)[\t ]*.*:\1 \"/usr/bin/maildrop\":gI' ${T}/dspam.conf + elif use procmail; then + sed -i 's:^#*\(UntrustedDeliveryAgent\)[\t ]*.*:\1 \"/usr/bin/procmail -d %u\":gI' ${T}/dspam.conf + sed -i 's:^\(TrustedDeliveryAgent\)[\t ]*.*:\1 \"/usr/bin/procmail":gI' ${T}/dspam.conf + else + sed -i 's:^#*\(UntrustedDeliveryAgent\)[\t ]*.*:\1 \"/usr/sbin/sendmail\":gI' ${T}/dspam.conf + sed -i 's:^\(TrustedDeliveryAgent\)[\t ]*.*:\1 \"/usr/sbin/sendmail\":gI' ${T}/dspam.conf + fi + if use mysql || use postgres; then + if has_version sys-kernel/linux26-headers; then + # keeps dspam socket for deamon in /var/run/dspam + diropts -m0775 -o dspam -g dspam + dodir /var/run/dspam + keepdir /var/run/dspam + + # We use sockets for the deamon instead of tcp port 24 + sed -i 's:^#*\(ServerDomainSocketPath[\t ]\{1,\}\).*:\1\"/var/run/dspam/dspam.sock\":gI' ${T}/dspam.conf + sed -i 's:^#*\(ServerPID[\t ]\{1,\}\).*:\1/var/run/dspam/dspam.pid:gI' ${T}/dspam.conf + + # dspam init script + exeinto /etc/init.d + exeopts -m0755 -o root -g root + newexe ${FILESDIR}/dspam.rc dspam + fi + fi + + # generate random password + local PASSWORD="${RANDOM}${RANDOM}${RANDOM}${RANDOM}" + + # database related configuration and scripts + if use mysql; then + # Use existing configuration if possible + if [[ -f ${ROOT}${HOMEDIR}/mysql.data ]]; then + DSPAM_DB_DATA=( $(sed "s:^[\t ]*$:###:gI" "${ROOT}${HOMEDIR}/mysql.data") ) + for DB_DATA_INDEX in $(seq 0 $((${#DSPAM_DB_DATA[@]} - 1))); do + [[ "${DSPAM_DB_DATA[$DB_DATA_INDEX]}" = "###" ]] && DSPAM_DB_DATA[$DB_DATA_INDEX]="" + done + else + DSPAM_DB_DATA[0]="/var/run/mysqld/mysqld.sock" + DSPAM_DB_DATA[1]="" + DSPAM_DB_DATA[2]="dspam" + DSPAM_DB_DATA[3]="${PASSWORD}" + DSPAM_DB_DATA[4]="dspam" + DSPAM_DB_DATA[5]="true" + fi + + # Modify configuration and create mysql.data file + sed -e "s:^#*\(MySQLServer[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[0]}:gI" \ + -e "s:^#*\(MySQLPort[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[1]}:gI" \ + -e "s:^#*\(MySQLUser[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[2]}:gI" \ + -e "s:^#*\(MySQLPass[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[3]}:gI" \ + -e "s:^#*\(MySQLDb[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[4]}:gI" \ + -e "s:^#*\(MySQLCompress[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[5]}:gI" \ + ${T}/dspam.conf + for DB_DATA_INDEX in $(seq 0 $((${#DSPAM_DB_DATA[@]} - 1))); do + echo "${DSPAM_DB_DATA[$DB_DATA_INDEX]}" >> ${T}/mysql.data + done + insinto ${HOMEDIR} + insopts -m644 -o dspam -g dspam + doins ${T}/mysql.data + newins src/tools.mysql_drv/mysql_objects-space.sql mysql_objects-space.sql + newins src/tools.mysql_drv/mysql_objects-speed.sql mysql_objects-speed.sql + newins src/tools.mysql_drv/mysql_objects-4.1.sql mysql_objects-4.1.sql + newins src/tools.mysql_drv/virtual-users_users.sql mysql_virtual-users_users.sql + newins src/tools.mysql_drv/neural.sql mysql_neural.sql + newins src/tools.mysql_drv/purge.sql mysql_purge.sql + newins src/tools.mysql_drv/purge-4.1.sql mysql_purge-4.1.sql + + elif use postgres ; then + # Use existing configuration if possible + if [ -f ${ROOT}${HOMEDIR}/pgsql.data ]; then + DSPAM_DB_DATA=( $(cat "${ROOT}${HOMEDIR}/pgsql.data") ) + for DB_DATA_INDEX in $(seq 0 $((${#DSPAM_DB_DATA[@]} - 1))); do + [[ "${DSPAM_DB_DATA[$DB_DATA_INDEX]}" = "###" ]] && DSPAM_DB_DATA[$DB_DATA_INDEX]="" + done + else + DSPAM_DB_DATA[0]="127.0.0.1" + DSPAM_DB_DATA[1]="5432" + DSPAM_DB_DATA[2]="dspam" + DSPAM_DB_DATA[3]="${PASSWORD}" + DSPAM_DB_DATA[4]="dspam" + fi + + # Modify configuration and create pgsql.data file + sed -e "s:^#*\(PgSQLServer[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[0]}:gI" \ + -e "s:^#*\(PgSQLPort[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[1]}:gI" \ + -e "s:^#*\(PgSQLUser[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[2]}:gI" \ + -e "s:^#*\(PgSQLPass[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[3]}:gI" \ + -e "s:^#*\(PgSQLDb[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[4]}:gI" \ + -e "s:^#*\(PgSQLConnectionCache[\t ]*.\):\1:gI" \ + -i ${T}/dspam.conf + for DB_DATA_INDEX in $(seq 0 $((${#DSPAM_DB_DATA[@]} - 1))); do + echo "${DSPAM_DB_DATA[$DB_DATA_INDEX]}" >> ${T}/pgsql.data + done + + insinto ${HOMEDIR} + insopts -m644 -o dspam -g dspam + doins ${T}/pgsql.data + newins src/tools.pgsql_drv/pgsql_objects.sql pgsql_objects.sql + newins src/tools.pgsql_drv/virtual-users_users.sql pgsql_virtual-users_users.sql + newins src/tools.pgsql_drv/purge.sql pgsql_purge.sql + + elif use oci8 ; then + # Use existing configuration if possible + if [ -f ${ROOT}${HOMEDIR}/oracle.data ]; then + DSPAM_DB_DATA=( $(cat "${ROOT}${HOMEDIR}/oracle.data") ) + for DB_DATA_INDEX in $(seq 0 $((${#DSPAM_DB_DATA[@]} - 1))); do + [[ "${DSPAM_DB_DATA[$DB_DATA_INDEX]}" = "###" ]] && DSPAM_DB_DATA[$DB_DATA_INDEX]="" + done + else + DSPAM_DB_DATA[0]="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SID=PROD)))" + DSPAM_DB_DATA[1]="dspam" + DSPAM_DB_DATA[2]="${PASSWORD}" + DSPAM_DB_DATA[3]="dspam" + fi + + # Modify configuration and create oracle.data file + sed -e "s:^#*\(OraServer[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[0]}:gI" \ + -e "s:^\(OraUser[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[1]}:gI" \ + -e "s:^\(OraPass[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[2]}:gI" \ + -e "s:^\(OraSchema[\t ]\{1,\}\).*:\1${DSPAM_DB_DATA[3]}:gI"\ + -i ${T}/dspam.conf + for DB_DATA_INDEX in $(seq 0 $((${#DSPAM_DB_DATA[@]} - 1))); do + echo "${DSPAM_DB_DATA[$DB_DATA_INDEX]}" >> ${T}/oracle.data + done + + insinto ${HOMEDIR} + insopts -m644 -o dspam -g dspam + doins ${T}/oracle.data + newins src/tools.ora_drv/oral_objects.sql ora_objects.sql + newins src/tools.ora_drv/virtual-users_users.sql ora_virtual-users_users.sql + newins src/tools.ora_drv/purge.sql ora_purge.sql + elif use sqlite || sqlite3 ; then + insinto ${HOMEDIR} + insopts -m644 -o dspam -g dspam + newins src/tools.sqlite_drv/purge.sql sqlite_purge.sql + fi + + sed -i "s:^\(Purge.*\):###\1:g" ${T}/dspam.conf + sed -i "s:^#\(Purge.*\):\1:g" ${T}/dspam.conf + sed -i "s:^###\(Purge.*\):#\1:g" ${T}/dspam.conf + insinto ${HOMEDIR} + insopts -m644 -o dspam -g dspam + doins ${T}/dspam.conf + + # installs the notification messages + # -> The documentation is wrong! The files need to be in ./txt + diropts -m0775 -o dspam -g dspam + dodir ${HOMEDIR}/txt + keepdir ${HOMEDIR}/txt + insinto ${HOMEDIR}/txt + insopts -m644 -o dspam -g dspam + doins ${S}/txt/*.txt + + # Create the opt-in / opt-out directories + diropts -m0775 -o dspam -g dspam + dodir ${HOMEDIR}/opt-in + keepdir ${HOMEDIR}/opt-in + dodir ${HOMEDIR}/opt-out + keepdir ${HOMEDIR}/opt-out + + # logrotation scripts + diropts -m0755 -o dspam -g dspam + dodir /etc/logrotate.d + keepdir /etc/logrotate.d + insinto /etc/logrotate.d + insopts -m0755 -o dspam -g dspam + newins ${FILESDIR}/logrotate.dspam dspam + + # dspam cron job + diropts -m0755 -o dspam -g dspam + dodir /etc/cron.daily + keepdir /etc/cron.daily + exeinto /etc/cron.daily + exeopts -m0755 -o dspam -g dspam + doexe ${FILESDIR}/dspam.cron + + # dspam enviroment + echo -ne "CONFIG_PROTECT=\"${DATADIR} /var/run/dspam\"\n\n" > ${T}/40dspam + doenvd ${T}/40dspam || die +} + +pkg_postinst() { + env-update + if use mysql || use postgres || use oci8; then + echo + einfo "To setup DSPAM to run out-of-the-box on your system with a MySQL," + einfo "PostgreSQL or Oracle database, run:" + einfo "ebuild /var/db/pkg/${CATEGORY}/${PF}/${PF}.ebuild config" + fi + if use mysql || use postgres; then + if has_version sys-kernel/linux26-headers; then + einfo "If you want to run DSPAM in the new deamon mode. Remember" + einfo "to make the DSPAM daemon start durig boot:" + einfo " rc-update add dspam default" + fi + fi + if use exim ; then + echo + einfo "To use dspam in conjunction with your exim system, you should read the README" + fi +} + +pkg_config () { + if use mysql ; then + [[ -f ${HOMEDIR}/mysql.data ]] && mv -f ${HOMEDIR}/mysql.data ${HOMEDIR} + + DSPAM_DB_DATA=( $(sed "s:^[\t ]*$:###:gI" "${ROOT}${HOMEDIR}/mysql.data") ) + for DB_DATA_INDEX in $(seq 0 $((${#DSPAM_DB_DATA[@]} - 1))); do + [[ "${DSPAM_DB_DATA[$DB_DATA_INDEX]}" = "###" ]] && DSPAM_DB_DATA[$DB_DATA_INDEX]="" + done + DSPAM_MySQL_USER="$DSPAM_DB_DATA[2]" + DSPAM_MySQL_PWD="$DSPAM_DB_DATA[3]" + DSPAM_MySQL_DB="$DSPAM_DB_DATA[4]" + + ewarn "When prompted for a password, please enter your MySQL root password" + ewarn "" + + einfo "Creating DSPAM MySQL database \"${DSPAM_MySQL_DB}\"" + /usr/bin/mysqladmin -u root -p create ${DSPAM_MySQL_DB} + + einfo "Creating DSPAM MySQL tables for data objects" + einfo " Please select what kind of object database you like to use." + einfo " [1] Space optimized database" + einfo " [2] Speed optimized database" + einfo + while true + do + read -n 1 -s -p " Press 1 or 2 on the keyboard to select database" DSPAM_MySQL_DB_Type + [[ "${DSPAM_MySQL_DB_Type}" == "1" || "${DSPAM_MySQL_DB_Type}" == "2" ]] && echo && break + done + + if [ "${DSPAM_MySQL_DB_Type}" == "1" ] + then + /usr/bin/mysql -u root -p ${DSPAM_MySQL_DB} < ${HOMEDIR}/mysql_objects-space.sql + else + /usr/bin/mysql -u root -p ${DSPAM_MySQL_DB} < ${HOMEDIR}/mysql_objects-speed.sql + fi + + einfo "Creating DSPAM MySQL database for virtual-users users" + /usr/bin/mysql -u root -p ${DSPAM_MySQL_DB} < ${HOMEDIR}/mysql_virtual-users_users.sql + + if use neural ; then + /usr/bin/mysql -u root -p ${DSPAM_MySQL_DB} < ${HOMEDIR}/mysql_neural.sql + fi + + einfo "Creating DSPAM MySQL user \"${DSPAM_MySQL_USER}\"" + /usr/bin/mysql -u root -p -e "GRANT SELECT,INSERT,UPDATE,DELETE ON ${DSPAM_MySQL_DB}.* TO ${DSPAM_MySQL_USER}@localhost IDENTIFIED BY '${DSPAM_MySQL_PWD}';FLUSH PRIVILEGES;" -D mysql + elif use postgres ; then + [[ -f ${HOMEDIR}/pgsql.data ]] && mv -f ${HOMEDIR}/pgsql.data ${HOMEDIR} + + DSPAM_DB_DATA=( $(sed "s:^[\t ]*$:###:gI" "${ROOT}${HOMEDIR}/pgsql.data") ) + for DB_DATA_INDEX in $(seq 0 $((${#DSPAM_DB_DATA[@]} - 1))); do + [[ "${DSPAM_DB_DATA[$DB_DATA_INDEX]}" = "###" ]] && DSPAM_DB_DATA[$DB_DATA_INDEX]="" + done + DSPAM_PgSQL_USER="${DSPAM_DB_DATA[2]}" + DSPAM_PgSQL_PWD="${DSPAM_DB_DATA[3]}" + DSPAM_PgSQL_DB="${DSPAM_DB_DATA[4]}" + + ewarn "When prompted for a password, please enter your PgSQL postgres password" + ewarn "" + + einfo "Creating DSPAM PostgreSQL database \"${DSPAM_PgSQL_DB}\" and user \"${DSPAM_PgSQL_USER}\"" + /usr/bin/psql -h localhost -d template1 -U postgres -c "CREATE USER ${DSPAM_PgSQL_USER} WITH PASSWORD '${DSPAM_PgSQL_PWD}' NOCREATEDB NOCREATEUSER; CREATE DATABASE ${DSPAM_PgSQL_DB}; GRANT ALL PRIVILEGES ON DATABASE ${DSPAM_PgSQL_DB} TO ${DSPAM_PgSQL_USER}; GRANT ALL PRIVILEGES ON SCHEMA public TO ${DSPAM_PgSQL_USER}; UPDATE pg_database SET datdba=(SELECT usesysid FROM pg_shadow WHERE usename='${DSPAM_PgSQL_USER}') WHERE datname='${DSPAM_PgSQL_DB}';" + + einfo "Creating DSPAM PostgreSQL tables" + PGUSER=${DSPAM_PgSQL_USER} PGPASSWORD=${DSPAM_PgSQL_PWD} /usr/bin/psql -d ${DSPAM_PgSQL_DB} -U ${DSPAM_PgSQL_USER} -f ${HOMEDIR}/pgsql_objects.sql 1>/dev/null 2>&1 + PGUSER=${DSPAM_PgSQL_USER} PGPASSWORD=${DSPAM_PgSQL_PWD} /usr/bin/psql -d ${DSPAM_PgSQL_DB} -U ${DSPAM_PgSQL_USER} -f ${HOMEDIR}/pgsql_virtual-users_users.sql 1>/dev/null 2>&1 + + elif use oci8 ; then + [[ -f ${HOMEDIR}/oracle.data ]] && mv -f ${HOMEDIR}/oracle.data ${HOMEDIR} + einfo "We have not enought Oracle knowledge to configure Oracle" + einfo "automatically. If you know how, please post a message in" + einfo "Gentoo Bugzilla." + einfo "" + einfo "You need manually to create the Oracle user for DSPAM and" + einfo "the necessary database." + einfo "But the DSPAM configuration file dspam.conf and oracle.data" + einfo "was already configured with the necessary information to" + einfo "access the database." + einfo "Pleae read your dspam.conf, oracle.data and the README for" + einfo "more info on how to setup DSPAM with Oracle." + elif use sqlite3 ; then + einfo "sqlite3_drv will automatically create the necessary database" + einfo "objects for each user upon first use of DSPAM by that user." + elif use sqlite ; then + einfo "sqlite_drv will automatically create the necessary database" + einfo "objects for each user upon first use of DSPAM by that user." + fi + +} diff --git a/mail-filter/dspam/files/digest-dspam-3.4.0-r1 b/mail-filter/dspam/files/digest-dspam-3.4.0-r1 new file mode 100644 index 000000000000..ad81d86d6511 --- /dev/null +++ b/mail-filter/dspam/files/digest-dspam-3.4.0-r1 @@ -0,0 +1,2 @@ +MD5 eafb06cc4beda7686b77720e9841537a dspam-3.4.0.tar.gz 687132 +MD5 8ffe9d41e6104a4c6d19067528193145 dspam_sa_trainer.tar.gz 1230 diff --git a/mail-filter/dspam/files/dspam.cron b/mail-filter/dspam/files/dspam.cron index 9a89e51beba8..7651c018b7b2 100644 --- a/mail-filter/dspam/files/dspam.cron +++ b/mail-filter/dspam/files/dspam.cron @@ -16,35 +16,49 @@ DSPAM_HOMEDIR="$(grep ^dspam /etc/passwd|awk -F : '{print $6}')" if [[ -f "${DSPAM_HOMEDIR}/mysql.data" ]] then - [[ ! -f "${DSPAM_HOMEDIR}/config/mysql_purge.sql" ]] && exit 3 + DSPAM_MySQL_PURGE_SQL="" + [[ -f "${DSPAM_HOMEDIR}/config/mysql_purge.sql" ]] && DSPAM_MySQL_PURGE_SQL="${DSPAM_HOMEDIR}/config/mysql_purge.sql" + [[ -f "${DSPAM_HOMEDIR}/mysql_purge.sql" ]] && DSPAM_MySQL_PURGE_SQL="${DSPAM_HOMEDIR}/mysql_purge.sql" + [[ "${DSPAM_MySQL_PURGE_SQL}" == "" ]] && exit 3 [[ ! -f "/usr/bin/mysql" ]] && exit 4 DSPAM_MySQL_HOST="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 1|tail -n 1)" DSPAM_MySQL_PORT="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 2|tail -n 1)" DSPAM_MySQL_USER="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 3|tail -n 1)" DSPAM_MySQL_PWD="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 4|tail -n 1)" DSPAM_MySQL_DB="$(cat ${DSPAM_HOMEDIR}/mysql.data|head -n 5|tail -n 1)" - (/usr/bin/mysql -u ${DSPAM_MySQL_USER} -p"${DSPAM_MySQL_PWD}" ${DSPAM_MySQL_DB} < ${DSPAM_HOMEDIR}/config/mysql_purge.sql) 1>/dev/null 2>&1 - exit $? + (/usr/bin/mysql -u ${DSPAM_MySQL_USER} -p"${DSPAM_MySQL_PWD}" ${DSPAM_MySQL_DB} < ${DSPAM_MySQL_PURGE_SQL}) 1>/dev/null 2>&1 + MYRC="$?" + for foo in $(/usr/bin/mysql -u ${DSPAM_MySQL_USER} -p"${DSPAM_MySQL_PWD}" ${DSPAM_MySQL_DB} -e 'SHOW TABLES;' 2>&1 | grep -v "^+\|^Tables_in_${DSPAM_MySQL_DB}") + do + (/usr/bin/mysql -u ${DSPAM_MySQL_USER} -p"${DSPAM_MySQL_PWD}" ${DSPAM_MySQL_DB} -e "OPTIMIZE TABLE ${foo};") 1>/dev/null 2>&1 + done + exit ${MYRC} elif [[ -f "${DSPAM_HOMEDIR}/pgsql.data" ]] then - [[ ! -f "${DSPAM_HOMEDIR}/config/pgsql_purge.sql" ]] && exit 3 + DSPAM_PgSQL_PURGE_SQL="" + [[ -f "${DSPAM_HOMEDIR}/config/pgsql_purge.sql" ]] && DSPAM_PgSQL_PURGE_SQL="${DSPAM_HOMEDIR}/config/pgsql_purge.sql" + [[ -f "${DSPAM_HOMEDIR}/pgsql_purge.sql" ]] && DSPAM_PgSQL_PURGE_SQL="${DSPAM_HOMEDIR}/pgsql_purge.sql" + [[ "${DSPAM_PgSQL_PURGE_SQL}" == "" ]] && exit 3 [[ ! -f "/usr/bin/psql" ]] && exit 4 DSPAM_PgSQL_HOST="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 1|tail -n 1)" DSPAM_PgSQL_PORT="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 2|tail -n 1)" DSPAM_PgSQL_USER="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 3|tail -n 1)" DSPAM_PgSQL_PWD="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 4|tail -n 1)" DSPAM_PgSQL_DB="$(cat ${DSPAM_HOMEDIR}/pgsql.data|head -n 5|tail -n 1)" - (PGUSER=${DSPAM_PgSQL_USER} PGPASSWORD=${DSPAM_PgSQL_PWD} /usr/bin/psql -U ${DSPAM_PgSQL_USER} -d ${DSPAM_PgSQL_DB} -p ${DSPAM_PgSQL_PORT} -h ${DSPAM_PgSQL_HOST} -f ${DSPAM_HOMEDIR}/config/pgsql_purge.sql) 1>/dev/null 2>&1 + (PGUSER=${DSPAM_PgSQL_USER} PGPASSWORD=${DSPAM_PgSQL_PWD} /usr/bin/psql -U ${DSPAM_PgSQL_USER} -d ${DSPAM_PgSQL_DB} -p ${DSPAM_PgSQL_PORT} -h ${DSPAM_PgSQL_HOST} -f ${DSPAM_PgSQL_PURGE_SQL}) 1>/dev/null 2>&1 exit $? elif [[ -f "${DSPAM_HOMEDIR}/oracle.data" ]] then - [[ ! -f "${DSPAM_HOMEDIR}/config/oracle_purge.sql" ]] && exit 3 + DSPAM_Oracle_PURGE_SQL="" + [[ -f "${DSPAM_HOMEDIR}/config/ora_purge.sql" ]] && DSPAM_Oracle_PURGE_SQL="${DSPAM_HOMEDIR}/config/ora_purge.sql" + [[ -f "${DSPAM_HOMEDIR}/ora_purge.sql" ]] && DSPAM_Oracle_PURGE_SQL="${DSPAM_HOMEDIR}/ora_purge.sql" + [[ "${DSPAM_Oracle_PURGE_SQL}" == "" ]] && exit 3 [[ ! -f "/usr/bin/sqlplus" ]] && exit 4 DSPAM_Oracle_DBLINK="$(cat ${DSPAM_HOMEDIR}/oracle.data|head -n 1|tail -n 1)" DSPAM_Oracle_USER="$(cat ${DSPAM_HOMEDIR}/oracle.data|head -n 2|tail -n 1)" DSPAM_Oracle_PWD="$(cat ${DSPAM_HOMEDIR}/oracle.data|head -n 3|tail -n 1)" DSPAM_Oracle_SCHEMA="$(cat ${DSPAM_HOMEDIR}/oracle.data|head -n 4|tail -n 1)" - (/usr/bin/sqlplus -s ${DSPAM_Oracle_USER}/${DSPAM_Oracle_PWD} @${DSPAM_HOMEDIR}/config/ora_purge.sql) 1>/dev/null 2>&1 + (/usr/bin/sqlplus -s ${DSPAM_Oracle_USER}/${DSPAM_Oracle_PWD} @${DSPAM_Oracle_PURGE_SQL}) 1>/dev/null 2>&1 exit $? else [[ ! -f "/usr/bin/dspam_clean" ]] && exit 4 diff --git a/mail-filter/dspam/files/dspam.rc b/mail-filter/dspam/files/dspam.rc new file mode 100644 index 000000000000..e0eeefd82eb2 --- /dev/null +++ b/mail-filter/dspam/files/dspam.rc @@ -0,0 +1,43 @@ +#!/sbin/runscript +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/mail-filter/dspam/files/dspam.rc,v 1.1 2005/03/21 00:10:30 st_lim Exp $ + +depend() { + use logger + need net + before mta + after pg_autovacuum postgresql mysql +} + +checkconfig() { + if [ ! -f "/etc/mail/dspam/dspam.conf" ] + then + eerror "You need a DSPAM configuration in /etc/mail/dspam/dspam.conf" + return 1 + fi + if (! grep -q "^ServerPID" /etc/mail/dspam/dspam.conf); then + eerror "ServerPID missing in DSPAM configuration /etc/mail/dspam/dspam.conf" + return 1 + fi +} + +start() { + checkconfig || return 1 + + ebegin "Starting DSPAM" + start-stop-daemon --start --quiet --background \ + --exec /usr/bin/dspam -- --daemon + eend ${?} +} + +stop() { + checkconfig || return 1 + + local DSPAM_PID="$(grep "^ServerPID" /etc/mail/dspam/dspam.conf)" + DSPAM_PID="${DSPAM_PID/ServerPID/}" + + ebegin "Stopping DSPAM" + start-stop-daemon --stop --quiet --pidfile ${DSPAM_PID} + eend ${?} +} |