diff options
author | Tim Harder <radhermit@gentoo.org> | 2012-03-04 22:52:19 +0000 |
---|---|---|
committer | Tim Harder <radhermit@gentoo.org> | 2012-03-04 22:52:19 +0000 |
commit | a187e79d82575a0434b0828e3a5eea9617a57ced (patch) | |
tree | 9317b49a5b60a1b0c50b5dfeca57d76b349ade1e /mail-filter | |
parent | Remove old. (diff) | |
download | gentoo-2-a187e79d82575a0434b0828e3a5eea9617a57ced.tar.gz gentoo-2-a187e79d82575a0434b0828e3a5eea9617a57ced.tar.bz2 gentoo-2-a187e79d82575a0434b0828e3a5eea9617a57ced.zip |
Remove old.
(Portage version: 2.2.0_alpha89/cvs/Linux x86_64)
Diffstat (limited to 'mail-filter')
-rw-r--r-- | mail-filter/dspam/ChangeLog | 8 | ||||
-rw-r--r-- | mail-filter/dspam/dspam-3.8.0-r15.ebuild | 524 | ||||
-rw-r--r-- | mail-filter/dspam/files/README.postfix | 7 | ||||
-rw-r--r-- | mail-filter/dspam/files/README.qmail | 69 | ||||
-rw-r--r-- | mail-filter/dspam/files/dspam.cron-r3 | 362 | ||||
-rw-r--r-- | mail-filter/dspam/files/dspam.rc | 43 | ||||
-rw-r--r-- | mail-filter/dspam/files/logrotate.dspam | 6 | ||||
-rw-r--r-- | mail-filter/dspam/files/pgsql_createdb.py | 115 | ||||
-rw-r--r-- | mail-filter/dspam/files/pgsql_purge.py | 41 | ||||
-rw-r--r-- | mail-filter/dspam/metadata.xml | 12 |
10 files changed, 8 insertions, 1179 deletions
diff --git a/mail-filter/dspam/ChangeLog b/mail-filter/dspam/ChangeLog index 71b4e5146554..ad58a94295c3 100644 --- a/mail-filter/dspam/ChangeLog +++ b/mail-filter/dspam/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for mail-filter/dspam # Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/mail-filter/dspam/ChangeLog,v 1.144 2012/02/05 12:16:29 armin76 Exp $ +# $Header: /var/cvsroot/gentoo-x86/mail-filter/dspam/ChangeLog,v 1.145 2012/03/04 22:52:19 radhermit Exp $ + + 04 Mar 2012; Tim Harder <radhermit@gentoo.org> -dspam-3.8.0-r15.ebuild, + -files/README.postfix, -files/README.qmail, -files/dspam.cron-r3, + -files/dspam.rc, -files/logrotate.dspam, -files/pgsql_createdb.py, + -files/pgsql_purge.py, metadata.xml: + Remove old. 05 Feb 2012; Raúl Porcel <armin76@gentoo.org> dspam-3.8.0-r15.ebuild, dspam-3.10.1-r1.ebuild: diff --git a/mail-filter/dspam/dspam-3.8.0-r15.ebuild b/mail-filter/dspam/dspam-3.8.0-r15.ebuild deleted file mode 100644 index 5d6dbd73e44d..000000000000 --- a/mail-filter/dspam/dspam-3.8.0-r15.ebuild +++ /dev/null @@ -1,524 +0,0 @@ -# Copyright 1999-2012 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/mail-filter/dspam/dspam-3.8.0-r15.ebuild,v 1.9 2012/02/05 12:16:29 armin76 Exp $ - -EAPI="2" - -inherit eutils autotools multilib - -DESCRIPTION="A statistical-algorithmic hybrid anti-spam filter" -HOMEPAGE="http://dspam.nuclearelephant.com/" -SRC_URI="http://dspam.nuclearelephant.com/sources/${P}.tar.gz - mirror://gentoo/${P}-patches-20091202.tar.gz - http://dspam.nuclearelephant.com/sources/extras/dspam_sa_trainer.tar.gz" - -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="amd64 ~ppc x86" -IUSE="clamav daemon ldap mysql postgres sqlite syslog \ - large-domain virtual-users user-homedirs \ - debug debug-bnr debug-verbose" - -COMMON_DEPEND="clamav? ( >=app-antivirus/clamav-0.90.2 ) - ldap? ( >=net-nds/openldap-2.2 ) - mysql? ( virtual/mysql ) - sqlite? ( =dev-db/sqlite-3* )" -DEPEND="${COMMON_DEPEND} - postgres? ( >=dev-db/postgresql-base-8 )" -RDEPEND="${COMMON_DEPEND} - postgres? ( || ( dev-python/psycopg >=dev-db/postgresql-server-8 ) ) - sys-process/cronbase - virtual/logger" - -# some FHS-like structure -DSPAM_HOMEDIR="/var/spool/dspam" -DSPAM_CONFDIR="/etc/mail/dspam" -DSPAM_LOGDIR="/var/log/dspam" -DSPAM_MODE=2511 - -pkg_setup() { - # Delete these lines some time after -r6 removal - if has_version "<=mail-filter/dspam-3.8.0-r6" && - built_with_use "<=mail-filter/dspam-3.8.0-r6" sqlite && - grep -q "^StorageDriver.*libsqlite_drv.so" "${ROOT}${DSPAM_CONFDIR}"/dspam.conf; then - eerror "Sqlite2 support has been removed. Please upgrade your database to sqlite3" - eerror "and select libsqlite3_drv.so in dspam.conf before proceeding with update." - die "sqlite-2 no longer supported" - fi - - local egid euid - # Need a UID and GID >= 1000, for being able to use suexec in apache - for euid in $(seq 1000 5000 ) ; do - [[ -z $(egetent passwd ${euid}) ]] && break - done - for egid in $(seq 1000 5000 ) ; do - [[ -z $(egetent group ${egid}) ]] && break - done - - enewgroup dspam ${egid} - enewuser dspam ${euid} -1 "${DSPAM_HOMEDIR}" dspam,mail -} - -src_prepare() { - EPATCH_SUFFIX="patch" - epatch "${WORKDIR}"/patches - - AT_M4DIR="${S}/m4" - eautoreconf -} - -src_configure() { - local myconf="" - - if use mysql || use postgres; then - myconf="${myconf} $(use_enable virtual-users) --enable-preferences-extension" - if use virtual-users; then - myconf="${myconf} --disable-homedir" - use user-homedirs && ewarn "user-homedirs support has been disabled (not compatible with --enable-virtual-users)" - else - myconf="${myconf} $(use_enable user-homedirs homedir)" - fi - else - myconf="${myconf} --disable-virtual-users --disable-preferences-extension \ - $(use_enable user-homedirs homedir)" - use virtual-users && ewarn "virtual-users support has been disabled (available only for mysql and postgres storage drivers)" - fi - - if ! use syslog; then - myconf="${myconf} --with-logfile=${DSPAM_LOGDIR}/dspam.log" - fi - - local STORAGE="hash_drv" - # select storage driver - if use sqlite ; then - STORAGE="${STORAGE},sqlite3_drv" - fi - if use mysql; then - STORAGE="${STORAGE},mysql_drv" - myconf="${myconf} --with-mysql-includes=/usr/include/mysql" - myconf="${myconf} --with-mysql-libraries=/usr/$(get_libdir)/mysql" - fi - if use postgres ; then - STORAGE="${STORAGE},pgsql_drv" - myconf="${myconf} --with-pgsql-includes=/usr/include/postgresql" - myconf="${myconf} --with-pgsql-libraries=/usr/$(get_libdir)" - fi - - econf --with-storage-driver=${STORAGE} \ - --with-dspam-home="${DSPAM_HOMEDIR}" \ - --sysconfdir="${DSPAM_CONFDIR}" \ - $(use_enable daemon) \ - $(use_enable ldap) \ - $(use_enable clamav) \ - $(use_enable large-domain large-scale) \ - $(use_enable !large-domain domain-scale) \ - $(use_enable syslog) \ - $(use_enable debug) \ - $(use_enable debug-bnr bnr-debug) \ - $(use_enable debug-verbose verbose-debug) \ - --enable-long-usernames \ - --with-dspam-group=dspam \ - --with-dspam-home-group=dspam \ - --with-dspam-mode=${DSPAM_MODE} \ - --with-logdir="${DSPAM_LOGDIR}" \ - ${myconf} || die "econf failed" -} - -src_install () { - diropts -m0770 -o dspam -g dspam - dodir "${DSPAM_CONFDIR}" - insinto "${DSPAM_CONFDIR}" - insopts -m640 -o dspam -g dspam - dosym /etc/mail/dspam /etc/dspam - - # make install - emake DESTDIR="${D}" install || die "emake install failed" - - # necessary for dovecot-dspam - insopts -m644 - insinto /usr/include/dspam && doins src/pref.h - - diropts -m0755 -o dspam -g dspam - dodir /var/run/dspam - - # create logdir (used only when syslog support has been disabled or build with --enable-debug) - if ! use syslog || use debug ; then - diropts -m0770 -o dspam -g dspam - dodir "${DSPAM_LOGDIR}" - diropts -m0755 - insinto /etc/logrotate.d - newins "${FILESDIR}/logrotate.dspam" dspam || die "failed to install logrotate.d file" - fi - - if use daemon; then - # We use sockets for the daemon instead of tcp port 24 - sed -e 's:^#*\(ServerDomainSocketPath[\t ]\{1,\}\).*:\1\"/var/run/dspam/dspam.sock\":gI' \ - -e 's:^#*\(ServerPID[\t ]\{1,\}\).*:\1/var/run/dspam/dspam.pid:gI' \ - -e 's:^#*\(ClientHost[\t ]\{1,\}\)/.*:\1\"/var/run/dspam/dspam.sock\":gI' \ - -i "${D}/${DSPAM_CONFDIR}/dspam.conf" - - newinitd "${FILESDIR}/dspam.rc" dspam || die "failed to install init script" - - fowners root:dspam /usr/bin/dspamc && - fperms u=rx,g=xs,o=x /usr/bin/dspamc || - die "failed to alter dspamc owner:group or mode" - fi - - # database related configuration and scripts - local PASSWORD="${RANDOM}${RANDOM}${RANDOM}${RANDOM}" DSPAM_DB_DATA=() - if use sqlite; then - insinto "${DSPAM_CONFDIR}" - newins src/tools.sqlite_drv/purge-3.sql sqlite3_purge.sql || die "failed to install sqlite3_purge.sql script" - fi - if use mysql; then - 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]="false" - - # Activate mysql database configuration - 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" \ - -i "${D}/${DSPAM_CONFDIR}/dspam.conf" - - insinto "${DSPAM_CONFDIR}" - 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/purge.sql mysql_purge.sql && - newins src/tools.mysql_drv/purge-4.1.sql mysql_purge-4.1.sql || - die "failed to install mysql*.sql scripts" - if use virtual-users ; then - newins src/tools.mysql_drv/virtual_users.sql mysql_virtual_users.sql && - newins src/tools.mysql_drv/virtual_user_aliases.sql mysql_virtual_user_aliases.sql || - die "failed to install mysql_virtual_user*.sql scripts" - fi - fi - if use postgres ; then - 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" - - # Activate pgsql database configuration - 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 "${D}/${DSPAM_CONFDIR}"/dspam.conf - - insinto "${DSPAM_CONFDIR}" - newins src/tools.pgsql_drv/pgsql_objects.sql pgsql_objects.sql && - newins src/tools.pgsql_drv/purge.sql pgsql_purge.sql || - die "failed to install pgsql*.sql scripts" - if use virtual-users ; then - newins src/tools.pgsql_drv/virtual_users.sql pgsql_virtual_users.sql || - die "failed to install pgsql_virtual_users.sql scripts" - fi - - # Install psycopg scripts needed when postgresql is not installed - exeinto "${DSPAM_CONFDIR}" - doexe "${FILESDIR}"/pgsql_{createdb,purge}.py || die "failed to install psycopg scripts" - fi - - # Set default storage - local DEFAULT_STORAGE - if use sqlite ; then - DEFAULT_STORAGE=sqlite3 - elif use mysql ; then - DEFAULT_STORAGE=mysql - elif use postgres ; then - DEFAULT_STORAGE=pgsql - fi - if [[ -z "${DEFAULT_STORAGE}" ]]; then - # When only one storage driver is compiled, it is linked statically with dspam - # thus you should not set the StorageDriver at all - # Also, hash_drv requires certain tokenizer and PValue (see bug #185718) - sed -e "s:^\(StorageDriver[\t ].*\)$:#\1:" \ - -e "s:^Tokenizer .*$:Tokenizer sbph:" \ - -e "/^#PValue/d" \ - -e "s:^PValue .*$:PValue markov:" \ - -i "${D}/${DSPAM_CONFDIR}"/dspam.conf - else - # Set the storage driver and use purge configuration for SQL-based installations - sed -e "s:^\(Purge.*\):###\1:g" \ - -e "s:^#\(Purge.*\):\1:g" \ - -e "s:^###\(Purge.*\):#\1:g" \ - -e "s:^\(StorageDriver[\t ].*\)libhash_drv.so:\1lib${DEFAULT_STORAGE}_drv.so:" \ - -i "${D}/${DSPAM_CONFDIR}"/dspam.conf - fi - - # installs the notification messages - # -> The documentation is wrong! The files need to be in ./txt - echo "Scanned and tagged as SPAM with DSPAM ${PV} by Your ISP.com">"${T}"/msgtag.spam - echo "Scanned and tagged as non-SPAM with DSPAM ${PV} by Your ISP.com">"${T}"/msgtag.nonspam - insinto "${DSPAM_CONFDIR}"/txt - doins "${S}"/txt/*.txt - doins "${T}"/msgtag.* - - # Create the opt-in / opt-out directories - diropts -m0770 -o dspam -g dspam - dodir "${DSPAM_HOMEDIR}" - keepdir "${DSPAM_HOMEDIR}"/opt-in - keepdir "${DSPAM_HOMEDIR}"/opt-out - diropts -m0755 - - # dspam cron job - exeinto /etc/cron.daily - newexe "${FILESDIR}/dspam.cron-r3" dspam.cron || die "failed to install cron script" - - # documentation - dodoc CHANGELOG README* RELEASE.NOTES UPGRADING - docinto doc - dodoc doc/*.txt - docinto gentoo - dodoc "${FILESDIR}"/README.{postfix,qmail} - docinto sa_train - dodoc "${WORKDIR}"/dspam_sa_trainer/* - doman man/dspam* -} - -pkg_preinst() { - # Delete these lines some time after -r6 removal - if has_version "<=mail-filter/dspam-3.8.0-r6" ; then - # Remove obsolete *.data files - local f - for f in "${ROOT}${DSPAM_CONFDIR}"/{mysql,pgsql}.data ; do - f=${f/\/\//\/} - if [[ -f "${f}" ]]; then - rm "${f}" && - elog "Obsolete ${f} has been removed" || - eerror "Failed to remove ${f}" - fi - done - fi -} - -pkg_postinst() { - ewarn "The hash_drv storage backend has the following requirements:" - ewarn " - PValue must be set to 'markov'; Do not use this pvalue with any other storage backend!" - ewarn " - Tokenizer must be either 'sbph' or 'osb'" - ewarn "See markov.txt for more info." - - if use mysql || use postgres; then - elog - elog "To setup DSPAM to run out-of-the-box on your system with a MySQL" - elog "or PostgreSQL database, run:" - elog "emerge --config =${PF}" - fi - - if use daemon; then - elog - elog "If you want to run DSPAM in the new daemon mode remember" - elog "to make the DSPAM daemon start during boot:" - elog " rc-update add dspam default" - elog - elog "To use the DSPAM daemon mode, the used storage driver must be thread-safe." - fi - - elog - elog "See http://dspamwiki.expass.de/Installation for more info" -} - -# Edits interactively one or more parameters from "${ROOT}${DSPAM_CONFDIR}/dspam.conf" -# Usage: edit_dspam_params param_name1 [param_name2 ..] -edit_dspam_params() { - local PARAMETER OLD_VALUE VALUE - for PARAMETER in $@ ; do - OLD_VALUE=$(awk "BEGIN { IGNORECASE=1; } \$1==\"${PARAMETER}\" { print \$2; exit; }" "${ROOT}${DSPAM_CONFDIR}/dspam.conf") - [[ $? == 0 ]] || return 1 - if [[ "${PARAMETER}" == *"Pass" ]]; then - read -r -p "${PARAMETER} (default ${OLD_VALUE:-none}; enter random for generating a new random password): " VALUE - [[ "${VALUE}" == "random" ]] && VALUE="${RANDOM}${RANDOM}${RANDOM}${RANDOM}" - else - read -r -p "${PARAMETER} (default ${OLD_VALUE:-none}): " VALUE - fi - - if [[ -z "${VALUE}" ]] ; then - VALUE=${OLD_VALUE} - else - sed -e "s:^#*${PARAMETER}\([\t ].*\)\?\$:${PARAMETER} ${VALUE}:gI" \ - -i "${ROOT}${DSPAM_CONFDIR}/dspam.conf" - [[ $? == 0 ]] || return 2 - fi - eval $PARAMETER=\"${VALUE}\" - done - return 0 -} - -# Selects the storage driver in "${ROOT}${DSPAM_CONFDIR}/dspam.conf" -# usage: set_storage_driver { hash | sqlite3 | mysql | pgsql } -set_storage_driver() { - sed -e "s:^[#\t ]*\(StorageDriver[\t ].*\)lib[a-z1-9]\+_drv.so:\1lib${1}_drv.so:" \ - -i "${ROOT}${DSPAM_CONFDIR}"/dspam.conf && - einfo "Storage driver lib${1}_drv.so has been selected" -} - -pkg_config () { - local AVAIL_BACKENDS=( hash ) - use sqlite && AVAIL_BACKENDS=( ${AVAIL_BACKENDS[*]} sqlite ) - use mysql && AVAIL_BACKENDS=( ${AVAIL_BACKENDS[*]} mysql ) - use postgres && AVAIL_BACKENDS=( ${AVAIL_BACKENDS[*]} postgres ) - local USE_BACKEND - read -p "Which backend do you want to configure? (available backends are ${AVAIL_BACKENDS[*]}): " USE_BACKEND - if [[ " ${AVAIL_BACKENDS[*]} " != *" ${USE_BACKEND} "* ]]; then - eerror "The '${USE_BACKEND}' backend is not available." - return 1 - fi - - case "${USE_BACKEND}" in - - hash) - einfo "hash driver will automatically create the necessary databases" - set_storage_driver hash - ;; - - sqlite) - einfo "sqlite driver will automatically create the necessary databases" - set_storage_driver sqlite3 - ;; - - mysql) - local MySQLServer MySQLPort MySQLUser MySQLPass MySQLDb MySQLCompress - edit_dspam_params MySQLServer MySQLPort MySQLUser MySQLPass MySQLDb MySQLCompress || return $? - if [[ -z "${MySQLServer}" || -z "${MySQLUser}" || -z "${MySQLPass}" || -z "${MySQLDb}" ]]; then - eerror "Following parameters are required: MySQLServer MySQLUser MySQLPass MySQLDb" - return 1 - fi - - local MySQL_DB_Type MySQL_Virtuser_Type - einfo " Please select what kind of database you like to create:" - einfo " [0] Don't create the database, I will do it myself" - einfo " [1] Database will be hosted on a mysql-4.1 server or above" - einfo " [2] Space optimized database on a mysql-4.0 server or below" - einfo " [3] Speed optimized database on a mysql-4.0 server or below" - einfo - while read -n 1 -s -p " Press 0, 1, 2 or 3 on the keyboard to select database " MySQL_DB_Type; do - if [[ "${MySQL_DB_Type}" == "0" ]] ; then - echo - set_storage_driver mysql - return 0 - fi - [[ "${MySQL_DB_Type}" == "1" || "${MySQL_DB_Type}" == "2" || "${MySQL_DB_Type}" == "3" ]] && echo && break - done - if use virtual-users ; then - einfo " Please select what kind of virtual_uids table you like to use:" - einfo " [1] Virtual users added automatically (use it if this server is the primary MX)" - einfo " [2] Virtual users added manually (use it if this server is a secondary MX)" - einfo - while read -n 1 -s -p " Press 1 or 2 on the keyboard to select table type " MySQL_Virtuser_Type; do - [[ "${MySQL_Virtuser_Type}" == "1" || "${MySQL_Virtuser_Type}" == "2" ]] && echo && break - done - fi - - local MYSQL_ROOT_USER - read -r -p "Your administrative MySQL account (default root): " MYSQL_ROOT_USER - if [[ -z "${MYSQL_ROOT_USER}" ]]; then - MYSQL_ROOT_USER="root" - fi - einfo "When prompted for a password, please enter your MySQL ${MYSQL_ROOT_USER} password" - - local MYSQL_CMD_LINE="/usr/bin/mysql -u ${MYSQL_ROOT_USER} -p" - [[ "${MySQLServer}" != "/"* ]] && MYSQL_CMD_LINE="${MYSQL_CMD_LINE} -h ${MySQLServer}" - [[ -n "${MySQLPort}" ]] && MYSQL_CMD_LINE="${MYSQL_CMD_LINE} -P ${MySQLPort}" - { - echo "CREATE DATABASE ${MySQLDb};" - echo "USE ${MySQLDb};" - case ${MySQL_DB_Type} in - 1) cat "${ROOT}${DSPAM_CONFDIR}"/mysql_objects-4.1.sql ;; - 2) cat "${ROOT}${DSPAM_CONFDIR}"/mysql_objects-space.sql ;; - 3) cat "${ROOT}${DSPAM_CONFDIR}"/mysql_objects-speed.sql ;; - esac - if use virtual-users ; then - case ${MySQL_Virtuser_Type} in - 1) cat "${ROOT}${DSPAM_CONFDIR}"/mysql_virtual_users.sql ;; - 2) cat "${ROOT}${DSPAM_CONFDIR}"/mysql_virtual_user_aliases.sql ;; - esac - fi - echo "GRANT SELECT,INSERT,UPDATE,DELETE ON ${MySQLDb}.* TO '${MySQLUser}'@'%' IDENTIFIED BY '${MySQLPass}';" - echo "FLUSH PRIVILEGES;" - } | ${MYSQL_CMD_LINE} - [[ ${PIPESTATUS[1]} == 0 ]] || return ${PIPESTATUS[1]} - - einfo "MySQL database created successfully" - set_storage_driver mysql - ;; - - postgres) - local PgSQLServer PgSQLPort PgSQLUser PgSQLPass PgSQLDb - edit_dspam_params PgSQLServer PgSQLPort PgSQLUser PgSQLPass PgSQLDb || return $? - if [[ -z "${PgSQLServer}" || -z "${PgSQLUser}" || -z "${PgSQLPass}" || -z "${PgSQLDb}" ]]; then - eerror "Following parameters are required: PgSQLServer PgSQLUser PgSQLPass PgSQLDb" - return 1 - fi - - local PgSQL_DB_Create - einfo " Do you want PgSQL database be automatically created for you?" - while read -n 1 -s -p " Press y or n " PgSQL_DB_Create; do - if [[ "${PgSQL_DB_Create}" == "n" || "${PgSQL_DB_Create}" == "N" ]] ; then - echo - set_storage_driver pgsql - return 0 - fi - [[ "${PgSQL_DB_Create}" == "y" || "${PgSQL_DB_Create}" == "Y" ]] && echo && break - done - - local PGSQL_ROOT_USER - read -r -p "Your administrative PgSQL account (default postgres): " PGSQL_ROOT_USER - if [[ -z "${PGSQL_ROOT_USER}" ]]; then - PGSQL_ROOT_USER="postgres" - fi - einfo "When prompted for a password, please enter your PgSQL ${PGSQL_ROOT_USER} password" - - if [[ -x /usr/bin/psql ]]; then - # Create database using psql - local PGSQL_CMD_LINE="/usr/bin/psql -h ${PgSQLServer}" - [[ -n "${PgSQLPort}" ]] && PGSQL_CMD_LINE="${PGSQL_CMD_LINE} -p ${PgSQLPort}" - - { - echo "\\set ON_ERROR_STOP = on;" - echo "CREATE USER ${PgSQLUser} WITH PASSWORD '${PgSQLPass}' NOCREATEDB NOCREATEUSER;" - echo "CREATE DATABASE ${PgSQLDb};" - echo "GRANT ALL PRIVILEGES ON DATABASE ${PgSQLDb} TO ${PgSQLUser};" - echo "GRANT ALL PRIVILEGES ON SCHEMA public TO ${PgSQLUser};" - echo "UPDATE pg_database SET datdba=(SELECT usesysid FROM pg_shadow WHERE usename='${PgSQLUser}') WHERE datname='${PgSQLDb}';" - echo "\\c ${PgSQLDb};" - echo "CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler AS '\$libdir/plpgsql', 'plpgsql_call_handler' LANGUAGE c;" - echo "CREATE FUNCTION plpgsql_validator(oid) RETURNS void AS '\$libdir/plpgsql', 'plpgsql_validator' LANGUAGE c;" - echo "CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler VALIDATOR plpgsql_validator;" - } | ${PGSQL_CMD_LINE} -d template1 -U ${PGSQL_ROOT_USER} - [[ ${PIPESTATUS[1]} == 0 ]] || return ${PIPESTATUS[1]} - - { - echo "\\set ON_ERROR_STOP = on;" - cat "${ROOT}${DSPAM_CONFDIR}"/pgsql_objects.sql - use virtual-users && cat "${ROOT}${DSPAM_CONFDIR}"/pgsql_virtual_users.sql - } | PGUSER="${PgSQLUser}" PGPASSWORD="${PgSQLPass}" ${PGSQL_CMD_LINE} -d "${PgSQLDb}" -U ${PgSQLUser} - [[ ${PIPESTATUS[1]} == 0 ]] || return ${PIPESTATUS[1]} - else - # Create database using psycopg script - if use virtual-users ; then - DSPAM_PgSQLPass="${PgSQLPass}" "${ROOT}${DSPAM_CONFDIR}"/pgsql_createdb.py "${PgSQLServer}" "${PgSQLPort}" "${PGSQL_ROOT_USER}" \ - "${PgSQLUser}" "${PgSQLDb}" "${ROOT}${DSPAM_CONFDIR}"/pgsql_objects.sql "${ROOT}${DSPAM_CONFDIR}"/pgsql_virtual_users.sql - else - DSPAM_PgSQLPass="${PgSQLPass}" "${ROOT}${DSPAM_CONFDIR}"/pgsql_createdb.py "${PgSQLServer}" "${PgSQLPort}" "${PGSQL_ROOT_USER}" \ - "${PgSQLUser}" "${PgSQLDb}" "${ROOT}${DSPAM_CONFDIR}"/pgsql_objects.sql - fi - [[ $? == 0 ]] || return $? - fi - - einfo "PgSQL database created successfully" - set_storage_driver pgsql - ;; - - esac -} diff --git a/mail-filter/dspam/files/README.postfix b/mail-filter/dspam/files/README.postfix deleted file mode 100644 index fa3badbd388f..000000000000 --- a/mail-filter/dspam/files/README.postfix +++ /dev/null @@ -1,7 +0,0 @@ -Postfix will deliver to mailbox_transport as user 'nobody'. -This is set by the option 'default_privs'. - -Postfix is installed setuid root setgid dspam. -Add 'nobody' to /etc/mail/dspam/trusted.users - -mailbox_transport = /usr/bin/dspam --user %u --deliver=innocent --mode=teft --feature=chained,noise,whitelist diff --git a/mail-filter/dspam/files/README.qmail b/mail-filter/dspam/files/README.qmail deleted file mode 100644 index ab4b12c25a47..000000000000 --- a/mail-filter/dspam/files/README.qmail +++ /dev/null @@ -1,69 +0,0 @@ -DSPAM for Gentoo qmail -Author - $Author: st_lim $ -Version - $Id: README.qmail,v 1.1 2004/06/26 16:45:28 st_lim Exp $ - -These are some steps I took to use dspam with qmail. If you have a better -method of using qmail with DSPAM, do send a message to me at -<st_lim@gentoo.org> to share your ideas. - -My set up includes: -a. qmail -b. qmail-scanner -c. Mail-SpamAssassin -d. f-prot (I'm not using it at the moment, coz mails do get stuck in the queue -when I use f-prot) -e. dspam (of course) - -For setting up spamassassin, I think I shall not go into details with it. I -think an excellent tutorial can be found at -http://cmisip.home.insightbb.com/Qmail.htm. - -So once you have spamassassin set up, you will want to use dspam without -procmail. And since you have .qmail, here is what you do: - -1. add your user and qmailq to /etc/mail/dspam/trusted.users -$ cat /etc/mail/dspam/trusted.users -apache -nobody -root -qmailq -alias -st_lim -spteo - -2. type the following into your /home/<user>/.qmail file - -| /usr/bin/dspam --user <user> --deliver=innocent --mode=teft --feature=chained,noise,whitelist -[your normal delivery options] - -3. When you get spam, you have either of 2 options: - a. Run the dspam command on the mail via your email client: - -========================================================================================== -/usr/bin/dspam --user <user> --mode=teft --class=spam --source=error < [spam-mail] -========================================================================================== - - b. Or run the dspam command on a set of emails in a directory via a cron job, - my suggested script is below: - -========================================================================================== -#!/bin/sh -JUNK_DIR=/home/<user>/Maildir/Junk -JUNK_MAILS=$JUNK_DIR/cur/[0-9]* - -QMAIL_SPAMASSASSIN=/var/qmail/.spamassassin - -sa-learn --spam $JUNK_MAILS -for i in $JUNK_MAILS; do - cat $i | /usr/bin/dspam --user qmailq --mode=teft --class=spam --source=error -done -cp $ROOT_SPAMASSASSIN/bayes* $QMAIL_SPAMASSASSIN -chown -R qmailq:qmail $QMAIL_SPAMASSASSIN -rm -rf $JUNK_MAILS -========================================================================================== - -If you have any problems with the abovementioned setup, pls share it via -bugs.gentoo.org. I'll try to help you resolve the issues. - -Regards -Lim Swee Tat diff --git a/mail-filter/dspam/files/dspam.cron-r3 b/mail-filter/dspam/files/dspam.cron-r3 deleted file mode 100644 index 944ab0339bc9..000000000000 --- a/mail-filter/dspam/files/dspam.cron-r3 +++ /dev/null @@ -1,362 +0,0 @@ -#!/bin/sh -# Copyright 1999-2007 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# -# Remove old signatures and unimportant tokens from the DSPAM database. -# Purge old log entries in user logs. -# - -# -# Parse optional command line parameters -# -for foo in $@ -do - case "${foo}" in - --logdays=*) LOGROTATE_AGE="${foo#--logdays=}";; - --sigdays=*) SIGNATURE_AGE="${foo#--sigdays=}";; - --without-sql-purge) USE_SQL_PURGE=false;; - *) - echo "usage: $0 [--logdays=no_of_days] [--sigdays=no_of_days] [--without-sql-purge]" - exit 1 - ;; - esac -done - -# -# Parameters -# -[ -z "${LOGROTATE_AGE}" ] && LOGROTATE_AGE=30 # Delete log entries older than $LOGROTATE_AGE days -[ -z "${SIGNATURE_AGE}" ] && SIGNATURE_AGE=30 # Delete signatures older than $SIGNATURE_AGE days -[ -z "${USE_SQL_PURGE}" ] && USE_SQL_PURGE=true # Run sql purge scripts - -# -# Function to run dspam_clean -# -run_dspam_clean() { - if [ ! -e "/usr/bin/dspam_clean" ] - then - echo "Can not run DSPAM clean application:" - echo " /usr/bin/dspam_clean does not exist" - return 1 - else - /usr/bin/dspam_clean -s${SIGNATURE_AGE} -p${SIGNATURE_AGE} -u${SIGNATURE_AGE},${SIGNATURE_AGE},${SIGNATURE_AGE},${SIGNATURE_AGE} >/dev/null 2>&1 - return $? - fi -} - - -# -# Function to check if we have all needed tools -# -check_for_tools() { - local myrc=0 - for foo in awk cut sed - do - if ! which ${foo} >/dev/null 2>&1 - then - echo "Command ${foo} not found!" - myrc=1 - fi - done - return ${myrc} -} - - -# -# Function to read dspam.conf parameters -# -read_dspam_params() { - local PARAMETER VALUE - for PARAMETER in $@ ; do - VALUE=$(awk "BEGIN { IGNORECASE=1; } \$1==\"${PARAMETER}\" { print \$2; exit; }" "${DSPAM_CONFIGDIR}/dspam.conf") - [[ $? == 0 ]] || return 1 - eval ${PARAMETER}=\"${VALUE}\" - done - return 0 -} - - -# -# Function to clean DSPAM MySQL data -# -clean_mysql_drv() { - # - # MySQL - # - if ${USE_SQL_PURGE} && \ - read_dspam_params MySQLServer MySQLPort MySQLUser MySQLPass MySQLDb MySQLCompress && \ - [ -n "${MySQLServer}" -a -n "${MySQLUser}" -a -n "${MySQLDb}" ] - then - if [ ! -e "/usr/bin/mysql_config" ] - then - echo "Can not run MySQL purge script:" - echo " /usr/bin/mysql_config does not exist" - return 1 - fi - DSPAM_MySQL_PURGE_SQL= - DSPAM_MySQL_VER=$(/usr/bin/mysql_config --version | sed "s:[^0-9.]*::g") - DSPAM_MySQL_MAJOR=$(echo "${DSPAM_MySQL_VER}" | cut -d. -f1) - DSPAM_MySQL_MINOR=$(echo "${DSPAM_MySQL_VER}" | cut -d. -f2) - DSPAM_MySQL_MICRO=$(echo "${DSPAM_MySQL_VER}" | cut -d. -f3) - DSPAM_MySQL_INT=$(($DSPAM_MySQL_MAJOR * 65536 + $DSPAM_MySQL_MINOR * 256 + $DSPAM_MySQL_MICRO)) - - # For MySQL >= 4.1 use the new purge script - if [ "${DSPAM_MySQL_INT}" -ge "262400" ] - then - if [ -f "${DSPAM_CONFIGDIR}/config/mysql_purge-4.1-optimized.sql" -o -f "${DSPAM_CONFIGDIR}/mysql_purge-4.1-optimized.sql" ] - then - # See: http://securitydot.net/txt/id/32/type/articles/ - [ -f "${DSPAM_CONFIGDIR}/config/mysql_purge-4.1-optimized.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/config/mysql_purge-4.1-optimized.sql" - [ -f "${DSPAM_CONFIGDIR}/mysql_purge-4.1-optimized.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/mysql_purge-4.1-optimized.sql" - else - [ -f "${DSPAM_CONFIGDIR}/config/mysql_purge-4.1.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/config/mysql_purge-4.1.sql" - [ -f "${DSPAM_CONFIGDIR}/mysql_purge-4.1.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/mysql_purge-4.1.sql" - fi - else - [ -f "${DSPAM_CONFIGDIR}/config/mysql_purge.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/config/mysql_purge.sql" - [ -f "${DSPAM_CONFIGDIR}/mysql_purge.sql" ] && DSPAM_MySQL_PURGE_SQL="${DSPAM_CONFIGDIR}/mysql_purge.sql" - fi - - if [ -z "${DSPAM_MySQL_PURGE_SQL}" ] - then - echo "Can not run MySQL purge script:" - echo " No mysql_purge SQL script found" - return 1 - fi - - if [ ! -e "/usr/bin/mysql" ] - then - echo "Can not run MySQL purge script:" - echo " /usr/bin/mysql does not exist" - return 1 - fi - - # Construct mysql command line - DSPAM_MySQL_CMD="/usr/bin/mysql --silent --user=${MySQLUser}" - [ -S "${MySQLServer}" ] && - DSPAM_MySQL_CMD="${DSPAM_MySQL_CMD} --socket=${MySQLServer}" || - DSPAM_MySQL_CMD="${DSPAM_MySQL_CMD} --host=${MySQLServer}" - [ -n "${MySQLPort}" ] && - DSPAM_MySQL_CMD="${DSPAM_MySQL_CMD} --port=${MySQLPort}" - [ "${MySQLCompress}" == "true" ] && - DSPAM_MySQL_CMD="${DSPAM_MySQL_CMD} --compress" - - # Run the MySQL purge script - MYSQL_PWD="${MySQLPass}" ${DSPAM_MySQL_CMD} ${MySQLDb} < ${DSPAM_MySQL_PURGE_SQL} >/dev/null - _RC=$? - if [ ${_RC} != 0 ] - then - echo "MySQL purge script returned error code ${_RC}" - fi - - return 0 - fi -} - - -# -# Function to clean DSPAM PostgreSQL data -# -clean_pgsql_drv() { - # - # PostgreSQL - # - if ${USE_SQL_PURGE} && \ - read_dspam_params PgSQLServer PgSQLPort PgSQLUser PgSQLPass PgSQLDb && \ - [ -n "${PgSQLServer}" -a -n "${PgSQLUser}" -a -n "${PgSQLDb}" ] - then - DSPAM_PgSQL_PURGE_SQL="" - [ -f "${DSPAM_CONFIGDIR}/config/pgsql_purge.sql" ] && DSPAM_PgSQL_PURGE_SQL="${DSPAM_CONFIGDIR}/config/pgsql_purge.sql" - [ -f "${DSPAM_CONFIGDIR}/pgsql_purge.sql" ] && DSPAM_PgSQL_PURGE_SQL="${DSPAM_CONFIGDIR}/pgsql_purge.sql" - - if [ -z "${DSPAM_PgSQL_PURGE_SQL}" ] - then - echo "Can not run PostgreSQL purge script:" - echo " No pgsql_purge SQL script found" - return 1 - fi - - if [ -e "/usr/bin/psql" ] - then - # Construct psql command line - DSPAM_PgSQL_CMD="/usr/bin/psql -q -U ${PgSQLUser} -h ${PgSQLServer} -d ${PgSQLDb}" - [ -n "${PgSQLPort}" ] && - DSPAM_PgSQL_CMD="${DSPAM_PgSQL_CMD} -p ${PgSQLPort}" - - # Run the PostgreSQL purge script - PGUSER="${PgSQLUser}" PGPASSWORD="${PgSQLPass}" ${DSPAM_PgSQL_CMD} -f "${DSPAM_PgSQL_PURGE_SQL}" >/dev/null - else - # Run the pgsql_purge.py script - PGUSER="${PgSQLUser}" PGPASSWORD="${PgSQLPass}" "${DSPAM_CONFIGDIR}/pgsql_purge.py" "${PgSQLServer}" "${PgSQLPort}" "${PgSQLDb}" "${DSPAM_PgSQL_PURGE_SQL}" - fi - - _RC=$? - if [ ${_RC} != 0 ] - then - echo "PostgreSQL purge script returned error code ${_RC}" - fi - - return 0 - fi -} - - -# -# Function to clean DSPAM Hash data -# -clean_hash_drv() { - # - # Hash - # - if [ -d "${DSPAM_HOMEDIR}/data" ] - then - find ${DSPAM_HOMEDIR}/data/ -maxdepth 4 -mindepth 1 -type f -name "*.css" | while read name - do - /usr/bin/cssclean "${name}" 1>/dev/null 2>&1 - done - find ${DSPAM_HOMEDIR}/data/ -maxdepth 4 -mindepth 1 -type d -name "*.sig" | while read name - do - find "${name}" -maxdepth 1 -mindepth 1 -type f -mtime +${SIGNATURE_AGE} -name "*.sig" -exec /bin/rm "{}" ";" - done - return 0 - else - return 1 - fi -} - - -# -# Function to clean DSPAM SQLite3 data -# -clean_sqlite3_drv() { - # - # SQLite3 - # - if ${USE_SQL_PURGE} - then - DSPAM_SQLite3_PURGE_SQL="" - [ -f "${DSPAM_CONFIGDIR}/config/sqlite3_purge.sql" ] && DSPAM_SQLite3_PURGE_SQL="${DSPAM_CONFIGDIR}/config/sqlite3_purge.sql" - [ -f "${DSPAM_CONFIGDIR}/sqlite3_purge.sql" ] && DSPAM_SQLite3_PURGE_SQL="${DSPAM_CONFIGDIR}/sqlite3_purge.sql" - - if [ -z "${DSPAM_SQLite3_PURGE_SQL}" ] - then - echo "Can not run SQLite3 purge script:" - echo " No sqlite_purge SQL script found" - return 1 - fi - - if [ ! -e "/usr/bin/sqlite3" ] - then - echo "Can not run SQLite3 purge script:" - echo " /usr/bin/sqlite3 does not exist" - return 1 - fi - - # Run the SQLite3 purge script - find "${DSPAM_HOMEDIR}" -name "*.sdb" -print | while read name - do - /usr/bin/sqlite3 "$name" < "${DSPAM_SQLite3_PURGE_SQL}" >/dev/null - done 1>/dev/null 2>&1 - - return 0 - fi - -} - - -# -# Acquire lock file and start processing -# -DSPAM_CRON_LOCKFILE="/var/run/$(basename $0 .sh).pid" -if ( set -o noclobber; echo "$$" > "${DSPAM_CRON_LOCKFILE}") 2> /dev/null; then - - trap 'rm -f "${DSPAM_CRON_LOCKFILE}"; exit $?' INT TERM EXIT - - # - # Check for needed tools - # - if ! check_for_tools - then - # We have not all needed tools installed. Run just the dspam_clean part. - run_dspam_clean - exit $? - fi - - # - # Try to get DSPAM config directory - # - if [ -f /etc/mail/dspam/dspam.conf ] - then - DSPAM_CONFIGDIR="/etc/mail/dspam" - else - echo "Configuration directory not found!" - exit 2 - fi - - # - # Try to get DSPAM data home directory - # - if read_dspam_params Home && [ -d "${Home}" ] - then - DSPAM_HOMEDIR=${Home} - else - # Something is wrong in dspam.conf! Check if /var/spool/dspam exists instead. - if [ -d /var/spool/dspam ] - then - DSPAM_HOMEDIR="/var/spool/dspam" - fi - fi - if [ ! -d "${DSPAM_HOMEDIR}" ] - then - echo "Home directory not found! Please fix your dspam.conf." - exit 2 - fi - - # - # System and user log purging - # - dspam_logrotate -a ${LOGROTATE_AGE} -d "${DSPAM_HOMEDIR}" >/dev/null # 2>&1 - - if [ ! -e "/usr/bin/dspam" ] - then - echo "Can not run DSPAM application:" - echo " /usr/bin/dspam does not exist" - return 1 - fi - - # - # Process all available storage drivers - # - for foo in $(/usr/bin/dspam --version 2>&1 | sed -n "s:,: :g;s:^.*\-\-with\-storage\-driver=\([^\'\]*\).*:\1:gIp") - do - case "${foo}" in - hash_drv) - clean_hash_drv - ;; - mysql_drv) - clean_mysql_drv - ;; - pgsql_drv) - clean_pgsql_drv - ;; - sqlite3_drv) - clean_sqlite3_drv - ;; - *) - echo "Unknown storage ${foo} driver" - ;; - esac - done - - # - # Run the dspam_clean command - # - run_dspam_clean - - - # - # Release lock - # - /bin/rm -f "${DSPAM_CRON_LOCKFILE}" - trap - INT TERM EXIT -fi diff --git a/mail-filter/dspam/files/dspam.rc b/mail-filter/dspam/files/dspam.rc deleted file mode 100644 index e0eeefd82eb2..000000000000 --- a/mail-filter/dspam/files/dspam.rc +++ /dev/null @@ -1,43 +0,0 @@ -#!/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 ${?} -} diff --git a/mail-filter/dspam/files/logrotate.dspam b/mail-filter/dspam/files/logrotate.dspam deleted file mode 100644 index 1fb3e04ccbe2..000000000000 --- a/mail-filter/dspam/files/logrotate.dspam +++ /dev/null @@ -1,6 +0,0 @@ -/var/log/dspam/sql.errors /var/log/dspam/dspam.log /var/log/dspam/dspam.debug /var/log/dspam/dspam.messages { - weekly - compress - missingok - copytruncate -} diff --git a/mail-filter/dspam/files/pgsql_createdb.py b/mail-filter/dspam/files/pgsql_createdb.py deleted file mode 100644 index fe933efb775e..000000000000 --- a/mail-filter/dspam/files/pgsql_createdb.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/bin/env python - -import sys, os -import psycopg2 -from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT - -adminuser = '' -adminpass = '' - -def inputStuff(title, default = None, empty = True): - if default is not None: - uinput = raw_input("%s [DEFAULT %s]: " %(title, default)) - else: - uinput = raw_input("%s: " %(title)) - if default: - if uinput == '': - return default - if uinput == '' and not empty: - print "Error: Zero length input not allowed!" - return inputStuff(title, default, empty) - return uinput - -def main(): - global adminuser - if len(sys.argv) == 7: - thiscript, serverhost, serverport, adminuser, dspamuser, dspamdb, createscript = sys.argv - elif len(sys.argv) == 8: - thiscript, serverhost, serverport, adminuser, dspamuser, dspamdb, createscript, vuserscript = sys.argv - else: - print "Usage: %s server_host server_port admin_user dspam_user dspam_dbname setup_DB_script [setup_virtual_user_script]" %(sys.argv[0]) - sys.exit(1) - env = os.environ - dspampass = env['DSPAM_PgSQLPass'] - con = connectasadmin(serverhost, serverport, 'template1') - con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # CREATE DATABASE needs this - cur = con.cursor() - createDbAndUser(cur, dspamuser, dspampass, dspamdb) - con.close() - con = connectasadmin(serverhost, serverport, dspamdb) - con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # CREATE LANGUAGE probably needs this - cur = con.cursor() - createLanguage(cur) - con.close() - executeScript(serverhost, serverport, dspamuser, dspampass, dspamdb, createscript) - if len(sys.argv) == 8: - executeScript(serverhost, serverport, dspamuser, dspampass, dspamdb, vuserscript) - -def createDbAndUser(cur, dspamuser, dspampass, dspamdb): - try: - cur.execute("""CREATE USER %s WITH PASSWORD '%s' NOCREATEDB NOCREATEUSER;""" %(dspamuser, dspampass)) - cur.execute("""CREATE DATABASE %s;""" %(dspamdb)) - cur.execute("""GRANT ALL PRIVILEGES ON DATABASE %s TO %s;""" %(dspamdb, dspamuser)) - cur.execute("""GRANT ALL PRIVILEGES ON SCHEMA public TO %s;""" %(dspamuser)) - cur.execute("""UPDATE pg_database SET datdba=(SELECT usesysid FROM pg_shadow WHERE usename='%s') WHERE datname='%s';""" %(dspamuser, dspamdb)) - except Exception, e: - print "ERROR:", e - sys.exit(2) - -def createLanguage(cur): - try: - cur.execute("CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler AS '$libdir/plpgsql', 'plpgsql_call_handler' LANGUAGE c;") - cur.execute("CREATE FUNCTION plpgsql_validator(oid) RETURNS void AS '$libdir/plpgsql', 'plpgsql_validator' LANGUAGE c;") - cur.execute("CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler VALIDATOR plpgsql_validator;") - except Exception, e: - print "ERROR:", e - sys.exit(2) - -def executeScript(serverhost, serverport, dspamuser, dspampass, dspamdb, script): - try: - if len(serverport) > 0: - con = psycopg2.connect(host=serverhost, port=int(serverport), database=dspamdb, user=dspamuser, password=dspampass) - else: - con = psycopg2.connect(host=serverhost, database=dspamdb, user=dspamuser, password=dspampass) - con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # Needed for plpgsql - cur = con.cursor() - except Exception, e: - print "ERROR: ",e - sys.exit(3) - try: - f = open(script, 'r') - script = f.read() - f.close() - except Exception, e: - print "ERROR: ",e - sys.exit(4) - try: - cur.execute(script) - except Exception, e: - print "ERROR: ",e - sys.exit(5) - con.close() - -def connectasadmin(serverhost, serverport, db): - global adminuser, adminpass - notconnected = 1 - while(notconnected): - try: - if len(serverport) > 0: - con = psycopg2.connect(host=serverhost, port=int(serverport), database=db, user=adminuser, password=adminpass) - else: - con = psycopg2.connect(host=serverhost, database=db, user=adminuser, password=adminpass) - notconnected = 0 - except psycopg2.OperationalError, e: - if 'no password' in e[0]: - adminpass = inputStuff('Password') - else: - print e - sys.exit(2) - except Exception, e: - print e - sys.exit(2) - return con - -if __name__ == '__main__': - main() diff --git a/mail-filter/dspam/files/pgsql_purge.py b/mail-filter/dspam/files/pgsql_purge.py deleted file mode 100644 index f24266aaf6fc..000000000000 --- a/mail-filter/dspam/files/pgsql_purge.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/env python - -import sys, os -import psycopg2 -from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT - -def main(): - if len(sys.argv) == 5: - thiscript, serverhost, serverport, dspamdb, purgescript = sys.argv - else: - print "Usage: %s server_host server_port dspam_dbname purge_script" %(sys.argv[0]) - sys.exit(1) - try: - env = os.environ - dspamuser = env['PGUSER'] - dspampass = env['PGPASSWORD'] - if len(serverport) > 0: - con = psycopg2.connect(host=serverhost, port=int(serverport), database=dspamdb, user=dspamuser, password=dspampass) - else: - con = psycopg2.connect(host=serverhost, database=dspamdb, user=dspamuser, password=dspampass) - con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # Needed for plpgsql - cur = con.cursor() - except Exception, e: - print "ERROR: ",e - sys.exit(2) - try: - f = open(purgescript, 'r') - script = f.read() - f.close() - except Exception, e: - print "ERROR: ",e - sys.exit(3) - try: - cur.execute(script) - except Exception, e: - print "ERROR: ",e - sys.exit(4) - con.close() - -if __name__ == '__main__': - main() diff --git a/mail-filter/dspam/metadata.xml b/mail-filter/dspam/metadata.xml index 28501bf25eb0..b4a4fda61854 100644 --- a/mail-filter/dspam/metadata.xml +++ b/mail-filter/dspam/metadata.xml @@ -14,18 +14,8 @@ <flag name='debug'> Enable debugging support (don't enable this unless something needs testing!) </flag> - <flag name='debug-bnr'> - Activates debugging output for Bayesian Noise Reduction - </flag> - <flag name='debug-verbose'> - Cause DSPAM produce verbose debug output and write them into LOGDIR/dspam.debug file. - Never enable this for production builds! - </flag> - <flag name='large-domain'> - Builds for large domain rather than for domain scale - </flag> <flag name='user-homedirs'> - uild with user homedir support + Build with user homedir support </flag> <flag name='virtual-users'> Build with virtual-users support |