debian/0000755000000000000000000000000011431760002007160 5ustar debian/TODO0000644000000000000000000000044411376773177007703 0ustar * Provide a default config for people not chosing dbconfig-common. * Provide debconf warning for non dbconfig-common installs. * Sure up ucf management of config files. * Add ssl support to config * Add better checking of sanity for SQLite db's (i.e existance and writability of directory debian/postfix-cluebringer.docs0000644000000000000000000000002611357365007014040 0ustar TODO WISHLIST AUTHORS debian/postfix-cluebringer-pgsql.substvars0000644000000000000000000000001611431567203016262 0ustar misc:Depends= debian/copyright0000644000000000000000000000202711360354757011135 0ustar This package was debianized by Nikolai Lusan on Tue, 16 Feb 2010 06:54:37 +1000. It was downloaded from http://policyd.sourceforge.net/ Upstream Authors: Nigel Kukard Copyright (c) 2007-2009 AllWorldIT License: This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 dated June, 1991. This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-2'. debian/source.lintian-overrides0000644000000000000000000000101411431746150014044 0ustar postfix-cluebringer source: maintainer-script-lacks-debhelper-token debian/postfix-cluebringer.postinst postfix-cluebringer source: maintainer-script-lacks-debhelper-token debian/postfix-cluebringer.postrm postfix-cluebringer source: maintainer-script-lacks-debhelper-token debian/postfix-cluebringer.prerm postfix-cluebringer source: maintainer-script-lacks-debhelper-token debian/postfix-cluebringer-webui.postinst postfix-cluebringer source: maintainer-script-lacks-debhelper-token debian/postfix-cluebringer-webui.prerm debian/source/0000755000000000000000000000000011431574265010476 5ustar debian/source/format0000644000000000000000000000001411427335544011704 0ustar 3.0 (quilt) debian/postfix-cluebringer-webui.preinst0000644000000000000000000000175411366744024015716 0ustar #!/bin/sh -e NAME=cluebringer case "$1" in install) # Check that the system user and group exist, if not create them. if ! getent group $NAME >/dev/null ; then echo "Adding system group $NAME ... " addgroup --system --quiet $NAME || { if ! getent group $NAME >/dev/null ; then echo "Could not create system group $NAME." >&2 exit 1; fi } fi if ! getent passwd $NAME >/dev/null ; then echo "Adding system user $NAME ... " adduser --system --home "/etc/$NAME" --ingroup "$NAME" \ --no-create-home --disabled-login --shell "/usr/sbin/nologin" \ --quiet $NAME >/dev/null 2>&1 || { if ! getent passwd $NAME >/dev/null ; then echo "Could not create system user $NAME." >&2 exit 1; fi } fi if [ ! -f $LOGFILE ]; then touch $LOGFILE chown $NAME:adm $LOGFILE fi ;; configure) ;; upgrade|abort-upgrade) ;; *) echo "preinst called with unknown argument $1" >&2 exit 1 ;; esac exit 0 #DEBHELPER# debian/postfix-cluebringer.README.Debian0000644000000000000000000000247111431737505015233 0ustar All instances of directories named 'policyd-2.0' are replaced by 'postfix-cluebringer' to match Debian conventions. I ripped out all dbconfig-common stuff because I couldn't get the package to install and de-install cleanly with it. You therefore have to manage your databases completely on your own for now, which means installing an appropriate database scheme from eg. /usr/share/doc/postfix-cluebringer/templates, and to set appropriate DSNs in the configuration file(s). -- Toni Mueller Sun, 15 Aug 2010 12:25:43 +0200 If you choose not to use dbconfig-common to manage the database and configs for you then you will need create the database for yourself. The SQL for PostgreSQL, MySQL and SQLite3 is in the "databases" directory. You will also have to create your own config file from the file "cluebringer.conf-debian" in the "templates" directory. To get a basic config up and running just replace the line "DSN=DBI:_DBC_DBTYPE_:dname=_DBC_DBNAME_;host=_DBC_DBSERVER_" with one that works (examples are provided). The finished file should be placed in the '/etc/cluebringer' directory as 'cluebringer.conf', it should be readable by the user 'cluebringer' and, as it will contain database passwords, be appropriately secured. -- Nikolai Lusan , Fri, 09 Apr 2010 00:43:27 +1000 debian/postfix-cluebringer-webui.debhelper.log0000644000000000000000000001271311431756446016745 0ustar dh_auto_clean dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb debian/cbpadmin.80000644000000000000000000000151111431740763011040 0ustar .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1. .TH POLICYD "8" "April 2010" "Copyright (c) 2007-2009 AllWorldIT" "System Administration Utilities" .SH NAME cbpadmin - Policyd v2 (Clurbringer) Postfix policy server administration tool. .SH SYNOPSIS .B cbpadmin [\fIargs\fR] .SH DESCRIPTION .B cbpadmin is a commandline tool for administering the Cluebringer postfix policy server. .SH OPTIONS .TP \fB\-\-config=\fR Configuration file .TP \fB\-\-debug\fR Put into debug mode .TP \fB\-\-cleanup\fR Cleanup database records .SH FILES .BR /etc/cluebringer/cluebringer.conf, .BR /usr/lib/postfix-cluebringer, .SH SEE ALSO .BR cbpolicyd(8) /usr/share/doc/postfix-cluerbigner/* .br .SH AUTHOR This manual page was written by Nikolai Lusan , for the Debian GNU/Linux system (but may be used by others). debian/postfix-cluebringer.prerm.debhelper0000644000000000000000000001604011431756441016170 0ustar # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer stop || exit $? else /etc/init.d/postfix-cluebringer stop || exit $? fi fi # End automatically added section debian/postfix-cluebringer.install0000644000000000000000000000011211431737235014551 0ustar usr/share/doc/postfix-cluebringer/ usr/sbin/ usr/lib/postfix-cluebringer/ debian/postfix-cluebringer-webui.install0000644000000000000000000000011411431743122015654 0ustar usr/share/postfix-cluebringer-webui usr/share/doc/postfix-cluebringer-webui debian/postfix-cluebringer.postinst0000644000000000000000000000371611431607504014776 0ustar #!/bin/sh -e CONFIG_DIR="/etc/cluebringer" CONFIG_FILE="/etc/cluebringer/cluebringer.conf" LOG_FILE="/var/log/cbpolicyd.log" RUN_DIR="/var/run/cluebringer" LIB_DIR="/var/lib/cluebringer" NAME="cluebringer" INIT_FILE="/etc/init.d/postfix-cluebringer" DAEMON="postfix-cluebringer" . /usr/share/debconf/confmodule case "$1" in configure) # If the logfile doesn't exist create it if [ ! -f $LOG_FILE ]; then touch $LOG_FILE > /dev/null || true chown $NAME:adm $LOG_FILE > /dev/null || true chmod 660 $LOG_FILE > /dev/null || true fi # If the directory for the PID file doesn't exist create it. if [ ! -d $RUN_DIR ]; then mkdir -p $RUN_DIR > /dev/null || true fi # If the directory for the default SQLite db doesn't exist create it. if [ ! -d $LIB_DIR ]; then mkdir -p $LIB_DIR > /dev/null || true fi # Fix perms on config directory #chown $NAME:$NAME $CONFIG_DIR > /dev/null || true #Fix Permissions on /var sub dirs. chown $NAME:root $RUN_DIR > /dev/null || true chown $NAME:root $LIB_DIR > /dev/null || true chmod 770 $RUN_DIR > /dev/null || true chmod 770 $LIB_DIR > /dev/null || true update-rc.d postfix-cluebringer defaults >/dev/null || exit $? #ucf --debconf-ok /usr/share/doc/postfix-cluebringer/examples /etc/cluebringer #ucfr --debconf-ok /usr/share/doc/postfix-cluebringer/examples /etc/cluebringer # Verify Config is there if [ ! -f $CONFIG_FILE ]; then echo "Config file $CONFIG_FILE not found. Not attemting start of service." >&2 exit 0; fi res=$? if [ $res -eq 0 ]; then echo "You may need to configure the database before attempting" echo "to start or restart the daemon. Please look into" echo "/usr/share/doc/postfix-cluebringer/database for" echo "appropriate files, and into ${CONFIG_FILE} to set" echo "a suitable DSN." fi exit $? ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument '$1'" >&2 exit 1 ;; esac exit 0 debian/changelog0000644000000000000000000000074411431744742011054 0ustar postfix-cluebringer (2.0.10-1) unstable; urgency=low [Nikolai Lusan ] * Initial release (Closes: #577270). * Add system user and group 'cluebringer'. * Add Readme.Debian for webui package. * Switch to dpkg-source 3.0 (quilt) format. [Toni Mueller ] * Updated to current standards version * ripped out all dbconfig-common stuff * added some upstream patches -- Toni Mueller Sun, 15 Aug 2010 13:05:15 +0200 debian/postfix-cluebringer.preinst0000644000000000000000000000227411366763734014614 0ustar #!/bin/sh -e NAME=cluebringer LOGFILE="/var/log/cbpolicyd.log" RUN_DIR="/var/run/cluebringer" if [ "$2" ]; then if [ -x "/etc/init.d/postfix-cluebringer" ]; then if [ -x /usr/sbin/invoke-rc.d ]; then invoke-rc.d postfix-cluebringer stop || true else /etc/init.d/postfix-cluebringer stop || true fi fi fi case "$1" in install) # Check that the system user and group exist, if not create them. if ! getent group $NAME >/dev/null ; then echo "Adding system group $NAME ... " addgroup --system --quiet $NAME || { if ! getent group $NAME >/dev/null ; then echo "Could not create system group $NAME." >&2 exit 1; fi } fi if ! getent passwd $NAME >/dev/null ; then echo "Adding system user $NAME ... " adduser --system --home "/etc/$NAME" --ingroup "$NAME" \ --no-create-home --disabled-login --shell "/usr/sbin/nologin" \ --quiet $NAME >/dev/null 2>&1 || { if ! getent passwd $NAME >/dev/null ; then echo "Could not create system user $NAME." >&2 exit 1; fi } fi ;; configure) ;; upgrade|abort-upgrade) ;; *) echo "preinst called with unknown argument $1" >&2 exit 1 ;; esac exit 0 #DEBHELPER# debian/postfix-cluebringer-webui.README.Debian0000644000000000000000000000373311431751400016334 0ustar Cluebringer webui for debian ---------------------------- All instances of directories named 'policyd-2.0' are replaced by 'postfix-cluebringer' to match Debian conventions. I ripped out all dbconfig-common stuff because I couldn't get the package to install and de-install cleanly with it. You therefore have to manage your databases completely on your own for now, which means installing an appropriate database scheme from eg. /usr/share/doc/postfix-cluebringer/templates, and to set appropriate DSNs in the configuration file(s). Without setting a valid DSN, the package _WILL_NOT_WORK_. You also need to point your webserver to include the path to this package. A sample configuration snippet for Apache is included under /usr/share/doc/postfix-cluebringer-webui/examples/httpd/cluebringer-httpd.conf Please make sure to have your web server correctly configured for PHP operation. Since there is a plethora of ways to set this up, I refrain from trying to overdo it right now and configure all kinds of servers automatically, but leave it to you. -- Toni Mueller Sun, 15 Aug 2010 13:45:43 +0200 The config file 'cluebringer-webui.db.conf', in the /etc/cluebringer directory, contains the database configuration for the webui and is required and included in the approppriate parts of the code. Should you choose to not use the dbconfig-common method of maintaining these files you will need to create your own from the file 'cluebringer-webui.conf' in the 'templates' directory. The file should be placed in '/etc/cluebringer' as 'cluebringer-webui.db.conf' You should also look at the example apache config in the directory /usr/shar/doc/postfix-cluebringer-webui to give you guidance on how to make the webui available on your webserver. Once you have configured your webserver with in the appropriate manner you can browse to http:///webui and configure postfix-cluebringer apropriately. -- Nikolai Lusan , Fri, 09 Apr 2010 00:43:27 +1000 debian/compat0000644000000000000000000000000211355377511010374 0ustar 7 debian/postfix-cluebringer.postrm.debhelper0000644000000000000000000000752511431756441016377 0ustar # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section # Automatically added by dh_installinit if [ "$1" = "purge" ] ; then update-rc.d postfix-cluebringer remove >/dev/null fi # End automatically added section debian/postfix-cluebringer.manpages0000644000000000000000000000004511361121132014664 0ustar debian/cbpadmin.8 debian/cbpolicyd.8 debian/postfix-cluebringer.init0000644000000000000000000000625511431726426014064 0ustar #!/bin/sh ### BEGIN INIT INFO # Provides: postfix-cluebringer # Required-Start: $local_fs $remote_fs $syslog $named $network # Required-Stop: $local_fs $remote_fs $syslog $named $network # Should-Start: mysql postgresql-8.3 postgresql-8.4 # Should-Stop: mysql postgresql-8.3 postgresql-8.4 # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Starting postfix policy daemon # Description: cluebringer is the postfix policy daemon v2.0 ### END INIT INFO NAME="cbpolicyd" DAEMON=/usr/sbin/cbpolicyd LIB=/usr/lib/postfix-cluebringer PIDDIR=/var/run/cluebringer PIDFILE=${PIDDIR}/$NAME.pid RUN_CLUEBRINGER="NO" CONFIG_FILE="" [ ! -r /etc/default/postfix-cluebringer ] || . /etc/default/postfix-cluebringer . /lib/lsb/init-functions PATH=/bin:/usr/bin:/sbin:/usr/sbin if [ "$CHUID" = "" ]; then CHUID="root" fi # Check for the existence of the configuration file if [ ! -f $CONFIG_FILE ]; then log_failure_msg "No config file found." exit 0; fi # Check that the default has been changed if [ "$RUN_CLUEBRINGER" = "NO" ]; then log_failure_msg "Please edit /etc/default/cluebringer to run postfix-cluebringer." exit 0; fi [ -x $DAEMON ] || exit 0 start() { if [ "$DAEMON_OPTIONS" = "" ]; then DAEMON_OPTIONS="--config=$CONFIG_FILE" fi # create run dirs: if [ ! -d ${PIDDIR} ]; then mkdir ${PIDDIR} fi chown -R ${CHUID}:www-data ${PIDDIR} chmod -R u+rwx,g-w,o= ${PIDDIR} # Test if we are already running the daemon start-stop-daemon --start --quiet \ --pidfile $PIDFILE \ --chuid $CHUID \ --test \ --exec $DAEMON -- $DAEMON_OPTIONS > /dev/null || return 1 # If all is well we start start-stop-daemon --quiet --start \ --pidfile $PIDFILE \ --chuid $CHUID \ --exec $DAEMON -- $DAEMON_OPTIONS || return 2 } stop() { start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. if [ -f $PIDFILE ]; then rm -f $PIDFILE || true fi return "$RETVAL" } case "$1" in start) log_daemon_msg "Starting postfix policy daemon" "cluebringer" start case "$?" in 0|1) log_end_msg 0 ;; 2) log_end_msg 1 ;; esac ;; stop) log_daemon_msg "Stopping postfix policy daemon" "cluebringer" stop case "$?" in 0|1) log_end_msg 0 ;; 2) log_failure_msg "Failed" log_end_msg 1 ;; esac ;; restart|reload|force-reload) log_action_begin_msg "Restarting postfix policy daemon cluebringer" log_action_cont_msg "Stopping" stop case "$?" in 0|1) log_action_cont_msg "Starting" start case "$?" in 0|1) log_action_end_msg 0 ;; 2) log_failure_msg "Failed" log_action_end_msg 1 ;; esac ;; *) log_failure_msg "Failed" log_action_end_msg 1 ;; esac ;; status) status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? ;; *) echo 'Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|status}' exit 3 ;; esac exit 0 debian/cluebringer.conf-debian0000644000000000000000000001066211377627317013601 0ustar # # Server configuration # [server] # Protocols to load protocols=< Description: No description. --- a/cbp/config.pm +++ b/cbp/config.pm @@ -40,13 +40,81 @@ sub Init { my $server = shift; - + my $db_conf_type; + my $db_host; + my $db_port; + my $db_name; + my $db_driver; + my $final_dsn; # Setup configuration $config = $server->{'inifile'}; + $db_conf_type = $config->{'database'}{'db_type'}; + $db_host = $config->{'database'}{'db_host'}; + $db_name = $config->{'database'}{'db_name'}; + $db_port = $config->{'database'}{'db_port'}; + + + ## Create DSN + + # Select Driver + DRIVER_SWITCH: { + $db_driver = "Pg", last DRIVER_SWITCH if lc $db_conf_type eq "pgsql"; + $db_driver = "mysql", last DRIVER_SWITCH if lc $db_conf_type eq "mysql"; + $db_driver = "SQLite", last DRIVER_SWITCH if lc $db_conf_type eq "sqlite3"; + $db_driver = "SQLite"; + } + + # Consturct DSN checking values are valid + DSN_SWITCH: { + + if ( $db_driver eq "Pg" || $db_driver eq "mysql" ) { + + # Set default database name if not set + if ( $db_name eq '' ) { + $db_name = "cluebringer" + } + + # Set Commonly used section + $final_dsn="DBI:$db_driver:dbname=$db_name"; + + if ( $db_driver eq "mysql" ) { + + # Set default hostname if not set + if ( $db_host eq '' ) { + $db_host="localhost" + } + + # Use UNIX Sockets + $final_dsn = "$final_dsn;host=$db_host", last DSN_SWITCH, if ( $db_host eq "localhost" ); + + # TCP/IP connections + $final_dsn = "$final_dsn;host=$db_host", last DSN_SWITCH, if ( $db_port eq '' ); + $final_dsn = "$final_dsn;host=$db_host;port=$db_port" + + } else { + $final_dsn = "$final_dsn", last DSN_SWITCH, if ( $db_host eq '' ); + $final_dsn = "$final_dsn;host=$db_host", last DSN_SWITCH, if ( $db_port eq '' ); + $final_dsn = "$final_dsn;host=$db_host;port=$db_port" + } + + } else { + + ## SQLite + + # Set default database name if not set or check we can access the one we are told about. + if ( $db_name eq '' ) { + $db_name = "/var/local/cluebringer/cluebringer.db" + } + + $final_dsn = "DBI:$db_driver:dbname=$db_name"; + } + } + my $db; - $db->{'DSN'} = $config->{'database'}{'dsn'}; +# $db->{'DSN'} = $config->{'database'}{'dsn'}; + $db->{'DSN'} = $final_dsn; $db->{'Username'} = $config->{'database'}{'username'}; $db->{'Password'} = $config->{'database'}{'password'}; debian/patches/03_fix_db_queries.patch0000644000000000000000000005751511431603472015146 0ustar --- a/cbp/modules/AccessControl.pm +++ b/cbp/modules/AccessControl.pm @@ -100,14 +100,14 @@ $server->log(LOG_ERR,"Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - my $row = $sth->fetchrow_hashref(); + my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( Verdict Data )); DBFreeRes($sth); # If no result, next next if (!$row); # Setup result - if (!defined($row->{'verdict'})) { + if (!defined($row->{'Verdict'})) { $server->maillog("module=AccessControl, action=none, host=%s, helo=%s, from=%s, to=%s, reason=no_verdict", $sessionData->{'ClientAddress'}, $sessionData->{'Helo'}, @@ -115,56 +115,56 @@ $sessionData->{'Recipient'}); next; # No verdict - } elsif ($row->{'verdict'} =~ /^hold$/i) { + } elsif ($row->{'Verdict'} =~ /^hold$/i) { $server->maillog("module=AccessControl, action=hold, host=%s, helo=%s, from=%s, to=%s, reason=verdict", $sessionData->{'ClientAddress'}, $sessionData->{'Helo'}, $sessionData->{'Sender'}, $sessionData->{'Recipient'}); - return $server->protocol_response(PROTO_HOLD,$row->{'data'}); + return $server->protocol_response(PROTO_HOLD,$row->{'Data'}); - } elsif ($row->{'verdict'} =~ /^reject$/i) { + } elsif ($row->{'Verdict'} =~ /^reject$/i) { $server->maillog("module=AccessControl, action=reject, host=%s, helo=%s, from=%s, to=%s, reason=verdict", $sessionData->{'ClientAddress'}, $sessionData->{'Helo'}, $sessionData->{'Sender'}, $sessionData->{'Recipient'}); - return $server->protocol_response(PROTO_REJECT,$row->{'data'}); + return $server->protocol_response(PROTO_REJECT,$row->{'Data'}); - } elsif ($row->{'verdict'} =~ /^discard$/i) { + } elsif ($row->{'Verdict'} =~ /^discard$/i) { $server->maillog("module=AccessControl, action=discard, host=%s, helo=%s, from=%s, to=%s, reason=verdict", $sessionData->{'ClientAddress'}, $sessionData->{'Helo'}, $sessionData->{'Sender'}, $sessionData->{'Recipient'}); - return $server->protocol_response(PROTO_DISCARD,$row->{'data'}); + return $server->protocol_response(PROTO_DISCARD,$row->{'Data'}); - } elsif ($row->{'verdict'} =~ /^filter$/i) { + } elsif ($row->{'Verdict'} =~ /^filter$/i) { $server->maillog("module=AccessControl, action=filter, host=%s, helo=%s, from=%s, to=%s, reason=verdict", $sessionData->{'ClientAddress'}, $sessionData->{'Helo'}, $sessionData->{'Sender'}, $sessionData->{'Recipient'}); - return $server->protocol_response(PROTO_FILTER,$row->{'data'}); + return $server->protocol_response(PROTO_FILTER,$row->{'Data'}); - } elsif ($row->{'verdict'} =~ /^redirect$/i) { + } elsif ($row->{'Verdict'} =~ /^redirect$/i) { $server->maillog("module=AccessControl, action=redirect, host=%s, helo=%s, from=%s, to=%s, reason=verdict", $sessionData->{'ClientAddress'}, $sessionData->{'Helo'}, $sessionData->{'Sender'}, $sessionData->{'Recipient'}); - return $server->protocol_response(PROTO_REDIRECT,$row->{'data'}); + return $server->protocol_response(PROTO_REDIRECT,$row->{'Data'}); - } elsif ($row->{'verdict'} =~ /^ok$/i) { + } elsif ($row->{'Verdict'} =~ /^ok$/i) { $server->maillog("module=AccessControl, action=ok, host=%s, helo=%s, from=%s, to=%s, reason=verdict", $sessionData->{'ClientAddress'}, $sessionData->{'Helo'}, $sessionData->{'Sender'}, $sessionData->{'Recipient'}); - return $server->protocol_response(PROTO_OK,$row->{'data'}); + return $server->protocol_response(PROTO_OK,$row->{'Data'}); } else { - $server->log(LOG_ERR,"[ACCESSCONTROL] Unknown Verdict specification in access control '".$row->{'verdict'}."'"); + $server->log(LOG_ERR,"[ACCESSCONTROL] Unknown Verdict specification in access control '".$row->{'Verdict'}."'"); $server->maillog("module=AccessControl, action=none, host=%s, helo=%s, from=%s, to=%s, reason=invalid_verdict", $sessionData->{'ClientAddress'}, $sessionData->{'Helo'}, --- a/cbp/modules/CheckHelo.pm +++ b/cbp/modules/CheckHelo.pm @@ -112,33 +112,36 @@ $server->log(LOG_ERR,"[CHECKHELO] Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - while (my $row = $sth->fetchrow_hashref()) { + while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), + qw( UseBlacklist BlacklistPeriod UseHRP HRPPeriod HRPLimit RejectInvalid RejectIP RejectUnresolvable ) + )) { + # If defined, its to override - if (defined($row->{'useblacklist'})) { - $policy{'UseBlacklist'} = $row->{'useblacklist'}; + if (defined($row->{'UseBlacklist'})) { + $policy{'UseBlacklist'} = $row->{'UseBlacklist'}; } - if (defined($row->{'blacklistperiod'})) { - $policy{'BlacklistPeriod'} = $row->{'blacklistperiod'}; + if (defined($row->{'BlacklistPeriod'})) { + $policy{'BlacklistPeriod'} = $row->{'BlacklistPeriod'}; } - if (defined($row->{'usehrp'})) { - $policy{'UseHRP'} = $row->{'usehrp'}; + if (defined($row->{'UseHRP'})) { + $policy{'UseHRP'} = $row->{'UseHRP'}; } - if (defined($row->{'hrpperiod'})) { - $policy{'HRPPeriod'} = $row->{'hrpperiod'}; + if (defined($row->{'HRPPeriod'})) { + $policy{'HRPPeriod'} = $row->{'HRPPeriod'}; } - if (defined($row->{'hrplimit'})) { - $policy{'HRPLimit'} = $row->{'hrplimit'}; + if (defined($row->{'HRPLimit'})) { + $policy{'HRPLimit'} = $row->{'HRPLimit'}; } - if (defined($row->{'rejectinvalid'})) { - $policy{'RejectInvalid'} = $row->{'rejectinvalid'}; + if (defined($row->{'RejectInvalid'})) { + $policy{'RejectInvalid'} = $row->{'RejectInvalid'}; } - if (defined($row->{'rejectip'})) { - $policy{'RejectIP'} = $row->{'rejectip'}; + if (defined($row->{'RejectIP'})) { + $policy{'RejectIP'} = $row->{'RejectIP'}; } - if (defined($row->{'rejectunresolvable'})) { - $policy{'RejectUnresolvable'} = $row->{'rejectunresolvable'}; + if (defined($row->{'RejectUnresolvable'})) { + $policy{'RejectUnresolvable'} = $row->{'RejectUnresolvable'}; } } # while (my $row = $sth->fetchrow_hashref()) } # foreach my $policyID (@{$sessionData->{'Policy'}->{$priority}}) @@ -203,9 +206,9 @@ return $server->protocol_response(PROTO_DB_ERROR); } # Loop with whitelist and calculate - while (my $row = $sth->fetchrow_hashref()) { + while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( Source ))) { # Check format is SenderIP - if ((my $address = $row->{'source'}) =~ s/^SenderIP://i) { + if ((my $address = $row->{'Source'}) =~ s/^SenderIP://i) { # Parse CIDR into its various peices my $parsedIP = parseCIDR($address); @@ -229,7 +232,7 @@ } } else { - $server->log(LOG_ERR,"[CHECKHELO] Whitelist entry '".$row->{'source'}."' is invalid."); + $server->log(LOG_ERR,"[CHECKHELO] Whitelist entry '".$row->{'Source'}."' is invalid."); DBFreeRes($sth); return $server->protocol_response(PROTO_DATA_ERROR); } @@ -366,10 +369,10 @@ $server->log(LOG_ERR,"Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - my $row = $sth->fetchrow_hashref(); + my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( Count )); # If count > 0 , then its blacklisted - if ($row->{'count'} > 0) { + if ($row->{'Count'} > 0) { $server->maillog("module=CheckHelo, action=reject, host=%s, helo=%s, from=%s, to=%s, reason=blacklisted", $sessionData->{'ClientAddress'}, $sessionData->{'Helo'}, @@ -418,11 +421,11 @@ $server->log(LOG_ERR,"Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - my $row = $sth->fetchrow_hashref(); + my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( Count )); # If count > $limit , reject - if ($row->{'count'} > $policy{'HRPLimit'}) { + if ($row->{'Count'} > $policy{'HRPLimit'}) { $server->maillog("module=CheckHelo, action=reject, host=%s, helo=%s, from=%s, to=%s, reason=hrp_blacklisted", $sessionData->{'ClientAddress'}, $sessionData->{'Helo'}, @@ -484,13 +487,13 @@ $server->log(LOG_ERR,"[CHECKHELO] Failed to query maximum periods: ".cbp::dblayer::Error()); return -1; } - my $row = $sth->fetchrow_hashref(); + my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( BlacklistPeriod HRPPeriod)); # Check we have results - return if (!defined($row->{'blacklistperiod'}) || !defined($row->{'hrpperiod'})); + return if (!defined($row->{'BlacklistPeriod'}) || !defined($row->{'HRPPeriod'})); # Work out which one is largest - my $period = $row->{'blacklistperiod'} > $row->{'hrpperiod'} ? $row->{'blacklistperiod'} : $row->{'hrpperiod'}; + my $period = $row->{'BlacklistPeriod'} > $row->{'HRPPeriod'} ? $row->{'BlacklistPeriod'} : $row->{'HRPPeriod'}; # Bork if we didn't find anything of interest return if (!($period > 0)); --- a/cbp/modules/CheckSPF.pm +++ b/cbp/modules/CheckSPF.pm @@ -110,18 +110,18 @@ $server->log(LOG_ERR,"[CHECKSPF] Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - while (my $row = $sth->fetchrow_hashref()) { + while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( UseSPF RejectFailedSPF AddSPFHeader ))) { # If defined, its to override - if (defined($row->{'usespf'})) { - $policy{'UseSPF'} = $row->{'usespf'}; + if (defined($row->{'UseSPF'})) { + $policy{'UseSPF'} = $row->{'UseSPF'}; } # If defined, its to override - if (defined($row->{'rejectfailedspf'})) { - $policy{'RejectFailedSPF'} = $row->{'rejectfailedspf'}; + if (defined($row->{'RejectFailedSPF'})) { + $policy{'RejectFailedSPF'} = $row->{'RejectFailedSPF'}; } # If defined, its to override - if (defined($row->{'addspfheader'})) { - $policy{'AddSPFHeader'} = $row->{'addspfheader'}; + if (defined($row->{'AddSPFHeader'})) { + $policy{'AddSPFHeader'} = $row->{'AddSPFHeader'}; } } # while (my $row = $sth->fetchrow_hashref()) } # foreach my $policyID (@{$sessionData->{'Policy'}->{$priority}}) --- a/cbp/modules/Greylisting.pm +++ b/cbp/modules/Greylisting.pm @@ -111,48 +111,56 @@ return $server->protocol_response(PROTO_DB_ERROR); } # Loop with rows and build end policy - while (my $row = $sth->fetchrow_hashref()) { + while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), + qw( + UseGreylisting GreylistPeriod Track GreylistAuthValidity + GreylistUnAuthValidity UseAutoWhitelist AutoWhitelistPeriod + AutoWhitelistCount AutoWhitelistPercentage UseAutoBlacklist + AutoBlacklistPeriod AutoBlacklistCount AutoBlacklistPercentage + ) + )) { + # If defined, its to override - if (defined($row->{'usegreylisting'})) { - $policy{'UseGreylisting'} = $row->{'usegreylisting'}; + if (defined($row->{'UseGreylisting'})) { + $policy{'UseGreylisting'} = $row->{'UseGreylisting'}; } - if (defined($row->{'greylistperiod'})) { - $policy{'GreylistPeriod'} = $row->{'greylistperiod'}; + if (defined($row->{'GreylistPeriod'})) { + $policy{'GreylistPeriod'} = $row->{'GreylistPeriod'}; } - if (defined($row->{'track'})) { - $policy{'Track'} = $row->{'track'}; + if (defined($row->{'Track'})) { + $policy{'Track'} = $row->{'Track'}; } - if (defined($row->{'greylistauthvalidity'})) { - $policy{'GreylistAuthValidity'} = $row->{'greylistauthvalidity'}; + if (defined($row->{'GreylistAuthValidity'})) { + $policy{'GreylistAuthValidity'} = $row->{'GreylistAuthValidity'}; } - if (defined($row->{'greylistunauthvalidity'})) { - $policy{'GreylistUnAuthValidity'} = $row->{'greylistunauthvalidity'}; + if (defined($row->{'GreylistUnAuthValidity'})) { + $policy{'GreylistUnAuthValidity'} = $row->{'GreylistUnAuthValidity'}; } - if (defined($row->{'useautowhitelist'})) { - $policy{'UseAutoWhitelist'} = $row->{'useautowhitelist'}; + if (defined($row->{'UseAutoWhitelist'})) { + $policy{'UseAutoWhitelist'} = $row->{'UseAutoWhitelist'}; } - if (defined($row->{'autowhitelistperiod'})) { - $policy{'AutoWhitelistPeriod'} = $row->{'autowhitelistperiod'}; + if (defined($row->{'AutoWhitelistPeriod'})) { + $policy{'AutoWhitelistPeriod'} = $row->{'AutoWhitelistPeriod'}; } - if (defined($row->{'autowhitelistcount'})) { - $policy{'AutoWhitelistCount'} = $row->{'autowhitelistcount'}; + if (defined($row->{'AutoWhitelistCount'})) { + $policy{'AutoWhitelistCount'} = $row->{'AutoWhitelistCount'}; } - if (defined($row->{'autowhitelistpercentage'})) { - $policy{'AutoWhitelistPercentage'} = $row->{'autowhitelistpercentage'}; + if (defined($row->{'AutoWhitelistPercentage'})) { + $policy{'AutoWhitelistPercentage'} = $row->{'AutoWhitelistPercentage'}; } - if (defined($row->{'useautoblacklist'})) { - $policy{'UseAutoBlacklist'} = $row->{'useautoblacklist'}; + if (defined($row->{'UseAutoBlacklist'})) { + $policy{'UseAutoBlacklist'} = $row->{'UseAutoBlacklist'}; } - if (defined($row->{'autoblacklistperiod'})) { - $policy{'AutoBlacklistPeriod'} = $row->{'autoblacklistperiod'}; + if (defined($row->{'AutoBlacklistPeriod'})) { + $policy{'AutoBlacklistPeriod'} = $row->{'AutoBlacklistPeriod'}; } - if (defined($row->{'autoblacklistcount'})) { - $policy{'AutoBlacklistCount'} = $row->{'autoblacklistcount'}; + if (defined($row->{'AutoBlacklistCount'})) { + $policy{'AutoBlacklistCount'} = $row->{'AutoBlacklistCount'}; } - if (defined($row->{'autoblacklistpercentage'})) { - $policy{'AutoBlacklistPercentage'} = $row->{'autoblacklistpercentage'}; + if (defined($row->{'AutoBlacklistPercentage'})) { + $policy{'AutoBlacklistPercentage'} = $row->{'AutoBlacklistPercentage'}; } } # while (my $row = $sth->fetchrow_hashref()) @@ -187,10 +195,10 @@ return $server->protocol_response(PROTO_DB_ERROR); } # Loop with whitelist and calculate - while (my $row = $sth->fetchrow_hashref()) { + while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( Source ))) { # Check format is SenderIP - if ((my $address = $row->{'source'}) =~ s/^SenderIP://i) { + if ((my $address = $row->{'Source'}) =~ s/^SenderIP://i) { # Parse CIDR into its various peices my $parsedIP = parseCIDR($address); @@ -213,7 +221,7 @@ } } else { - $server->log(LOG_WARN,"[GREYLISTING] Skipping invalid whitelist entry '".$row->{'source'}."'."); + $server->log(LOG_WARN,"[GREYLISTING] Skipping invalid whitelist entry '".$row->{'Source'}."'."); } } DBFreeRes($sth); @@ -251,13 +259,13 @@ $server->log(LOG_ERR,"[GREYLISTING] Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - my $row = $sth->fetchrow_hashref(); + my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( ID LastSeen )); # Pull off first row if ($row) { # Check if we're within the auto-whitelisting period - if ($sessionData->{'Timestamp'} - $row->{'lastseen'} <= $policy{'AutoWhitelistPeriod'}) { + if ($sessionData->{'Timestamp'} - $row->{'LastSeen'} <= $policy{'AutoWhitelistPeriod'}) { my $sth = DBDo(" UPDATE @@ -311,13 +319,13 @@ $server->log(LOG_ERR,"[GREYLISTING] Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - my $row = $sth->fetchrow_hashref(); + my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( ID Added )); # Pull off first row if ($row) { # Check if we're within the auto-blacklisting period - if ($sessionData->{'Timestamp'} - $row->{'added'} <= $policy{'AutoBlacklistPeriod'}) { + if ($sessionData->{'Timestamp'} - $row->{'Added'} <= $policy{'AutoBlacklistPeriod'}) { $server->maillog("module=Greylisting, action=reject, host=%s, helo=%s, from=%s, to=%s, reason=auto-blacklisted", $sessionData->{'ClientAddress'}, @@ -386,8 +394,8 @@ $server->log(LOG_ERR,"[GREYLISTING] Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - my $row = $sth->fetchrow_hashref(); - my $totalCount = defined($row->{'totalcount'}) ? $row->{'totalcount'} : 0; + my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( TotalCount )); + my $totalCount = defined($row->{'TotalCount'}) ? $row->{'TotalCount'} : 0; # If count exceeds or equals blacklist count, nail the server @@ -409,8 +417,8 @@ $server->log(LOG_ERR,"[GREYLISTING] Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - $row = $sth->fetchrow_hashref(); - my $failCount = defined($row->{'failcount'}) ? $row->{'failcount'} : 0; + $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( FailCount )); + my $failCount = defined($row->{'FailCount'}) ? $row->{'FailCount'} : 0; # Check if we should blacklist this host if (defined($policy{'AutoBlacklistPercentage'}) && $policy{'AutoBlacklistPercentage'} > 0) { @@ -531,8 +539,7 @@ SELECT FirstSeen, LastUpdate, - Tries, - Count + Tries FROM greylisting_tracking @@ -546,14 +553,14 @@ $server->log(LOG_ERR,"[GREYLISTING] Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - my $row = $sth->fetchrow_hashref(); + my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( FirstSeen LastUpdate Tries )); if (!$row) { $server->log(LOG_ERR,"[GREYLISTING] Failed to find triplet in database"); return $server->protocol_response(PROTO_DB_ERROR); } # Check if we should greylist, or not - my $timeElapsed = $row->{'lastupdate'} - $row->{'firstseen'}; + my $timeElapsed = $row->{'LastUpdate'} - $row->{'FirstSeen'}; if ($timeElapsed < $policy{'GreylistPeriod'}) { # Get time left, debug and return my $timeLeft = $policy{'GreylistPeriod'} - $timeElapsed; @@ -562,7 +569,7 @@ $sessionData->{'Helo'}, $sessionData->{'Sender'}, $sessionData->{'Recipient'}, - $row->{'tries'} + 1); + $row->{'Tries'} + 1); # Update stats my $sth = DBDo(" @@ -624,8 +631,8 @@ $server->log(LOG_ERR,"[GREYLISTING] Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - my $row = $sth->fetchrow_hashref(); - my $totalCount = defined($row->{'totalcount'}) ? $row->{'totalcount'} : 0; + my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( TotalCount )); + my $totalCount = defined($row->{'TotalCount'}) ? $row->{'TotalCount'} : 0; # If count exceeds or equals whitelist count, nail the server if ($totalCount >= $policy{'AutoWhitelistCount'}) { @@ -645,8 +652,8 @@ $server->log(LOG_ERR,"[GREYLISTING] Database query failed: ".cbp::dblayer::Error()); return $server->protocol_response(PROTO_DB_ERROR); } - $row = $sth->fetchrow_hashref(); - my $passCount = defined($row->{'passcount'}) ? $row->{'passcount'} : 0; + $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( PassCount )); + my $passCount = defined($row->{'PassCount'}) ? $row->{'PassCount'} : 0; # Check if we should whitelist this host if (defined($policy{'AutoWhitelistPercentage'}) && $policy{'AutoWhitelistPercentage'} > 0) { @@ -828,11 +835,11 @@ $server->log(LOG_ERR,"[GREYLISTING] Failed to query AutoWhitelistPeriod: ".cbp::dblayer::Error()); return -1; } - my $row = $sth->fetchrow_hashref(); + my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( Period )); # Check if we have something... my $AWLPeriod; - if (($AWLPeriod = $row->{'period'}) && $AWLPeriod > 0) { + if (($AWLPeriod = $row->{'Period'}) && $AWLPeriod > 0) { # Get start time $AWLPeriod = $now - $AWLPeriod; @@ -866,11 +873,11 @@ $server->log(LOG_ERR,"[GREYLISTING] Failed to query AutoBlacklistPeriod: ".cbp::dblayer::Error()); return -1; } - $row = $sth->fetchrow_hashref(); + $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( Period )); # Check if we have something... my $ABLPeriod; - if (($ABLPeriod = $row->{'period'}) && $ABLPeriod > 0) { + if (($ABLPeriod = $row->{'Period'}) && $ABLPeriod > 0) { # Get start time $ABLPeriod = $now - $ABLPeriod; @@ -903,11 +910,11 @@ $server->log(LOG_ERR,"[GREYLISTING] Failed to query GreylistAuthValidity: ".cbp::dblayer::Error()); return -1; } - $row = $sth->fetchrow_hashref(); + $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( Period )); # Check if we have something... my $AuthPeriod; - if (($AuthPeriod = $row->{'period'}) && $AuthPeriod > 0) { + if (($AuthPeriod = $row->{'Period'}) && $AuthPeriod > 0) { # Get start time $AuthPeriod = $now - $AuthPeriod; @@ -941,11 +948,11 @@ $server->log(LOG_ERR,"[GREYLISTING] Failed to query GreylistUnAuthValidity: ".cbp::dblayer::Error()); return -1; } - $row = $sth->fetchrow_hashref(); + $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( Period )); # Check if we have something... my $UnAuthPeriod; - if (($UnAuthPeriod = $row->{'period'}) && $UnAuthPeriod > 0) { + if (($UnAuthPeriod = $row->{'Period'}) && $UnAuthPeriod > 0) { # Get start time $UnAuthPeriod = $now - $UnAuthPeriod; --- a/cbp/modules/Quotas.pm +++ b/cbp/modules/Quotas.pm @@ -569,8 +569,8 @@ $server->log(LOG_ERR,"Failed to get quota data: ".cbp::dblayer::Error()); return -1; } - while (my $quota = $sth->fetchrow_hashref()) { - push(@res,hashifyLCtoMC($quota,qw(ID Period Track Verdict Data))); + while (my $quota = hashifyLCtoMC($sth->fetchrow_hashref(), qw( ID Period Track Verdict Data ))) { + push(@res,$quota); } return \@res; @@ -667,10 +667,10 @@ $server->log(LOG_ERR,"[QUOTAS] Failed to query quotas_tracking: ".cbp::dblayer::Error()); return -1; } - my $row = $sth->fetchrow_hashref(); + my $row = hashifyLCtoMC($sth->fetchrow_hashref(),qw( QuotasLimitsID TrackKey Counter LastUpdate )); DBFreeRes($sth); - return hashifyLCtoMC($row,qw(QuotasLimitsID TrackKey Counter LastUpdate)); + return $row; } @@ -695,8 +695,8 @@ return -1; } my $list = []; - while (my $qtrack = $sth->fetchrow_hashref()) { - push(@{$list},hashifyLCtoMC($qtrack,qw(ID Type CounterLimit))); + while (my $qtrack = hashifyLCtoMC($sth->fetchrow_hashref(), qw( ID Type CounterLimit ))) { + push(@{$list},$qtrack); } return $list; --- a/cbp/policies.pm +++ b/cbp/policies.pm @@ -107,15 +107,18 @@ } # Loop with results my @policyMembers; - while (my $row = $sth->fetchrow_hashref()) { + while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), + qw( Name Priority PolicyDisabled ID PolicyID Source Destination MemberDisabled ) + )) { + # Log what we see - if ($row->{'policydisabled'} eq "1") { - $server->log(LOG_DEBUG,"[POLICIES] Policy '".$row->{'name'}."' is disabled") if ($log); - } elsif ($row->{'memberdisabled'} eq "1") { - $server->log(LOG_DEBUG,"[POLICIES] Policy member item with ID '".$row->{'id'}."' is disabled") if ($log); + if ($row->{'PolicyDisabled'} eq "1") { + $server->log(LOG_DEBUG,"[POLICIES] Policy '".$row->{'Name'}."' is disabled") if ($log); + } elsif ($row->{'MemberDisabled'} eq "1") { + $server->log(LOG_DEBUG,"[POLICIES] Policy member item with ID '".$row->{'ID'}."' is disabled") if ($log); } else { - $server->log(LOG_DEBUG,"[POLICIES] Found policy member with ID '".$row->{'id'}."' in policy '".$row->{'name'}."'") if ($log); - push(@policyMembers,hashifyLCtoMC($row,qw(Name Priority PolicyDisabled ID PolicyID Source Destination MemberDisabled))); + $server->log(LOG_DEBUG,"[POLICIES] Found policy member with ID '".$row->{'ID'}."' in policy '".$row->{'Name'}."'") if ($log); + push(@policyMembers,$row); } } @@ -243,8 +246,8 @@ } # Pull in groups my @groupMembers; - while (my $row = $sth->fetchrow_hashref()) { - push(@groupMembers,$row->{'member'}); + while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( Member ))) { + push(@groupMembers,$row->{'Member'}); } return \@groupMembers; debian/patches/series0000644000000000000000000000037411431736234012042 0ustar debian-changes-2.0.10-1.patch 01_webui_config.patch 02_config_fix.patch 03_fix_db_queries.patch 04_bounce_handling.patch 05_better_error_logging.patch 06_better_ehlo_processing.patch debian-changes-2.0.10-1 adjust_lib_paths.patch update_version_number debian/patches/adjust_lib_paths.patch0000644000000000000000000000333311431750706015163 0ustar --- a/cbpadmin +++ b/cbpadmin @@ -22,7 +22,7 @@ use warnings; -use lib('/usr/local/lib/policyd-2.0','/usr/lib/policyd-2.0'); +use lib('/usr/local/lib/postfix-cluebringer','/usr/lib/postfix-cluebringer'); use Config::IniFiles; use Getopt::Long; --- a/cbpolicyd +++ b/cbpolicyd @@ -22,7 +22,7 @@ use strict; use warnings; -use lib('/usr/local/lib/policyd-2.0','/usr/lib/policyd-2.0'); +use lib('/usr/local/lib/postfix-cluebringer','/usr/lib/postfix-cluebringer'); package cbp; --- a/contrib/amavisd-new/amavisd-policyd.pm +++ b/contrib/amavisd-new/amavisd-policyd.pm @@ -20,7 +20,7 @@ package Amavis::Custom; use strict; -use lib('/usr/local/lib/policyd-2.0','/usr/lib/policyd-2.0'); +use lib('/usr/local/lib/postfix-cluebringer','/usr/lib/postfix-cluebringer'); my $DB_dsn = "DBI:SQLite:dbname=/tmp/cluebringer.sqlite"; --- a/cluebringer.spec +++ b/cluebringer.spec @@ -1,6 +1,6 @@ %define apacheconfdir %{_sysconfdir}/httpd/conf.d # this path is hardcoded -%define cblibdir %{_libdir}/policyd-2.0 +%define cblibdir %{_libdir}/postfix-cluebringer %define version 2.0.10 %define release 1 --- a/contrib/httpd/cluebringer-httpd.conf +++ b/contrib/httpd/cluebringer-httpd.conf @@ -8,11 +8,13 @@ # as well as the authors' long time involvement in large scale mail # hosting industry. -Alias /cluebringer /usr/share/cluebringer/webui +Alias /cluebringer /usr/share/postfix-cluebringer-webui/webui - + # Comment out the following 3 lines to make web ui accessible from anywhere Order Deny,Allow Deny from all Allow from 127.0.0.1 + Allow from ::1 + DirectoryIndex index.php debian/patches/update_version_number0000644000000000000000000000061611431740375015147 0ustar --- a/cbp/version.pm +++ b/cbp/version.pm @@ -34,7 +34,7 @@ use constant { - VERSION => "2.0.10", + VERSION => "2.0.11a-debian", }; # vim: ts=4 --- a/cluebringer.spec +++ b/cluebringer.spec @@ -2,7 +2,7 @@ # this path is hardcoded %define cblibdir %{_libdir}/postfix-cluebringer -%define version 2.0.10 +%define version 2.0.11a-debian %define release 1 %define tarver %{version} debian/patches/debian-changes-2.0.10-1.patch0000644000000000000000000000350311377662525015357 0ustar Description: Upstream changes introduced in version 2.0.10-1 This patch has been created by dpkg-source during the package build. Here's the last changelog entry, hopefully it gives details on why those changes were made: . postfix-cluebringer (2.0.10-1) unstable; urgency=low . * Initial release (Closes: #577270). * Add system user and group 'cluebringer'. * Add Readme.Debian for webui package. * Switch to dpkg-source 3.0 (quilt) format. . The person named in the Author field signed this changelog entry. Author: Nikolai Lusan Bug-Debian: http://bugs.debian.org/577270 --- The information above should follow the Patch Tagging Guidelines, please checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here are templates for supplementary fields that you might want to add: Origin: , Bug: Bug-Debian: http://bugs.debian.org/ Bug-Ubuntu: https://launchpad.net/bugs/ Forwarded: Reviewed-By: Last-Update: --- postfix-cluebringer-2.0.10.orig/cluebringer.conf +++ postfix-cluebringer-2.0.10/cluebringer.conf @@ -84,7 +84,8 @@ EOT # # Example: Solaris #log_mail=local0@syslog:stream,/dev/log -log_mail=maillog +#log_mail=maillog +log_mail=mail@syslog:native # Things to log in extreme detail # modules - Log detailed module running information @@ -100,6 +101,7 @@ log_mail=maillog # IP to listen on, * for all #host=* +host=127.0.0.1 # Port to run on #port=10031 @@ -124,6 +126,7 @@ DSN=DBI:mysql:database=policyd;host=loca #Password= # + # What do we do when we have a database connection problem # tempfail - Return temporary failure # pass - Return success debian/patches/05_better_error_logging.patch0000644000000000000000000000070211431604053016342 0ustar --- a/cbpolicyd +++ b/cbpolicyd @@ -99,7 +99,7 @@ tie my %inifile, 'Config::IniFiles', ( -file => $cfg->{'config_file'}, -nocase => 1 - ) or die "Failed to open config file '".$cfg->{'config_file'}."': $!"; + ) or die "Failed to open config file '".$cfg->{'config_file'}."': ".join("\n",@Config::IniFiles::errors); # Copy config my %config = %inifile; # FIXME: This now generates a warning as Config::Inifiles doesn't implement UNTIE debian/patches/04_bounce_handling.patch0000644000000000000000000000035411431603731015261 0ustar --- a/cbp/modules/Quotas.pm +++ b/cbp/modules/Quotas.pm @@ -495,6 +495,11 @@ my $key; + # Short-circuit <> + if ($addy eq '') { + return "@"; + } + # We need to track the sender if ($spec eq 'user@domain') { $key = $addy; debian/patches/01_webui_config.patch0000644000000000000000000000233011431756355014606 0ustar Author: Description: No description. --- a/webui/includes/config.php +++ /dev/null @@ -1,23 +0,0 @@ - --- a/webui/includes/db.php +++ b/webui/includes/db.php @@ -17,7 +17,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -require_once('includes/config.php'); +require_once('/etc/cluebringer/cluebringer-webui.conf'); # Connect to DB --- a/webui/includes/header.php +++ b/webui/includes/header.php @@ -17,7 +17,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -include_once("includes/config.php"); +include_once("/etc/cluebringer/cluebringer-webui.conf"); debian/patches/debian-changes-2.0.10-10000644000000000000000000000723511431760015014247 0ustar Description: Upstream changes introduced in version 2.0.10-1 This patch has been created by dpkg-source during the package build. Here's the last changelog entry, hopefully it gives details on why those changes were made: . postfix-cluebringer (2.0.10-1) unstable; urgency=low . [Nikolai Lusan ] * Initial release (Closes: #577270). * Add system user and group 'cluebringer'. * Add Readme.Debian for webui package. * Switch to dpkg-source 3.0 (quilt) format. . [Toni Mueller ] * Updated to current standards version * ripped out all dbconfig-common stuff * added some upstream patches . The person named in the Author field signed this changelog entry. Author: Toni Mueller Bug-Debian: http://bugs.debian.org/577270 --- The information above should follow the Patch Tagging Guidelines, please checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here are templates for supplementary fields that you might want to add: Origin: , Bug: Bug-Debian: http://bugs.debian.org/ Bug-Ubuntu: https://launchpad.net/bugs/ Forwarded: Reviewed-By: Last-Update: --- postfix-cluebringer-2.0.10.orig/cbp/config.pm +++ postfix-cluebringer-2.0.10/cbp/config.pm @@ -40,81 +40,13 @@ my $config; sub Init { my $server = shift; - my $db_conf_type; - my $db_host; - my $db_port; - my $db_name; - my $db_driver; - my $final_dsn; + # Setup configuration $config = $server->{'inifile'}; - $db_conf_type = $config->{'database'}{'db_type'}; - $db_host = $config->{'database'}{'db_host'}; - $db_name = $config->{'database'}{'db_name'}; - $db_port = $config->{'database'}{'db_port'}; - - - ## Create DSN - - # Select Driver - DRIVER_SWITCH: { - $db_driver = "Pg", last DRIVER_SWITCH if lc $db_conf_type eq "pgsql"; - $db_driver = "mysql", last DRIVER_SWITCH if lc $db_conf_type eq "mysql"; - $db_driver = "SQLite", last DRIVER_SWITCH if lc $db_conf_type eq "sqlite3"; - $db_driver = "SQLite"; - } - - # Consturct DSN checking values are valid - DSN_SWITCH: { - - if ( $db_driver eq "Pg" || $db_driver eq "mysql" ) { - - # Set default database name if not set - if ( $db_name eq '' ) { - $db_name = "cluebringer" - } - - # Set Commonly used section - $final_dsn="DBI:$db_driver:dbname=$db_name"; - - if ( $db_driver eq "mysql" ) { - - # Set default hostname if not set - if ( $db_host eq '' ) { - $db_host="localhost" - } - - # Use UNIX Sockets - $final_dsn = "$final_dsn;host=$db_host", last DSN_SWITCH, if ( $db_host eq "localhost" ); - - # TCP/IP connections - $final_dsn = "$final_dsn;host=$db_host", last DSN_SWITCH, if ( $db_port eq '' ); - $final_dsn = "$final_dsn;host=$db_host;port=$db_port" - - } else { - $final_dsn = "$final_dsn", last DSN_SWITCH, if ( $db_host eq '' ); - $final_dsn = "$final_dsn;host=$db_host", last DSN_SWITCH, if ( $db_port eq '' ); - $final_dsn = "$final_dsn;host=$db_host;port=$db_port" - } - - } else { - - ## SQLite - - # Set default database name if not set or check we can access the one we are told about. - if ( $db_name eq '' ) { - $db_name = "/var/local/cluebringer/cluebringer.db" - } - - $final_dsn = "DBI:$db_driver:dbname=$db_name"; - } - } - my $db; -# $db->{'DSN'} = $config->{'database'}{'dsn'}; - $db->{'DSN'} = $final_dsn; + $db->{'DSN'} = $config->{'database'}{'dsn'}; $db->{'Username'} = $config->{'database'}{'username'}; $db->{'Password'} = $config->{'database'}{'password'}; debian/patches/06_better_ehlo_processing.patch0000644000000000000000000000164711431604211016674 0ustar --- a/cbp/modules/CheckHelo.pm +++ b/cbp/modules/CheckHelo.pm @@ -490,10 +490,17 @@ my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw( BlacklistPeriod HRPPeriod)); # Check we have results - return if (!defined($row->{'BlacklistPeriod'}) || !defined($row->{'HRPPeriod'})); + return if (!defined($row->{'BlacklistPeriod'}) && !defined($row->{'HRPPeriod'})); # Work out which one is largest - my $period = $row->{'BlacklistPeriod'} > $row->{'HRPPeriod'} ? $row->{'BlacklistPeriod'} : $row->{'HRPPeriod'}; + my $period; + if (defined($row->{'BlacklistPeriod'}) && defined($row->{'HRPPeriod'})) { + $period = $row->{'BlacklistPeriod'} > $row->{'HRPPeriod'} ? $row->{'BlacklistPeriod'} : $row->{'HRPPeriod'}; + } elsif (defined($row->{'BlacklistPeriod'})) { + $period = $row->{'BlacklistPeriod'}; + } else { + $period = $row->{'HRPPeriod'}; + } # Bork if we didn't find anything of interest return if (!($period > 0)); debian/postfix-cluebringer-mysql.substvars0000644000000000000000000000001611431567203016301 0ustar misc:Depends= debian/postfix-cluebringer.prerm0000644000000000000000000000066311431745660014244 0ustar #!/bin/sh -e INIT_FILE="/etc/init.d/postfix-cluebringer" DAEMON="postfix-cluebringer" . /usr/share/debconf/confmodule case "$1" in remove) # Stop the daemon if [ -x /usr/sbin/invoke-rc.d ]; then invoke-rc.d $DAEMON stop || exit $? else $INIT_FILE stop >/dev/null || exit $? fi ;; upgrade|failed-upgrade|deconfigure) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac exit 0 debian/postfix-cluebringer.dirs0000644000000000000000000000004411430205103014027 0ustar etc/cluebringer var/lib/cluebringer debian/control0000644000000000000000000000746211431751206010602 0ustar Source: postfix-cluebringer Section: mail Priority: optional Maintainer: Nikolai Lusan Build-Depends: debhelper (>= 7.4), devscripts Uploaders: Toni Mueller Homepage: http://www.policyd.org/ Standards-Version: 3.9.1 Package: postfix-cluebringer Architecture: all Pre-Depends: debconf Depends: adduser (>= 3.34), libnet-server-perl (>= 0.96), libnet-cidr-perl, libconfig-inifiles-perl, libcache-fastmmap-perl, libmail-spf-perl, postfix-cluebringer-pgsql (>= ${source:Version}) | postfix-cluebringer-mysql (>= ${source:Version}) | postfix-cluebringer-sqlite3 (>= ${source:Version}), ${misc:Depends}, ${perl:Depends} Conflicts: postfix-policyd Recommends: postfix-cluebringer-webui Description: anti-spam plugin for Postfix Policyd v2 (codenamed "cluebringer") is a multi-platform policy server for popular MTAs. This policy daemon is designed mostly for large scale mail hosting environments. The main goal is to implement as many spam combating and email compliance features as possible while at the same time maintaining the portability, stability and performance required for mission critical email hosting of today. . This package contains the actual policy daemon. Package: postfix-cluebringer-pgsql Architecture: all Depends: postgresql-client, libdbd-pg-perl, ${misc:Depends} Suggests: postgresql-server Description: metapackage for postgresql support in postfix-cluebringer Policyd v2 (codenamed "cluebringer") is a multi-platform policy server for popular MTAs. This policy daemon is designed mostly for large scale mail hosting environments. The main goal is to implement as many spam combating and email compliance features as possible while at the same time maintaining the portability, stability and performance required for mission critical email hosting of today. . This package is a metapackage providing postgresql support. Package: postfix-cluebringer-mysql Architecture: all Depends: mysql-client, libdbd-mysql-perl, ${misc:Depends} Suggests: mysql-server Description: metapackage for mysql support in postfix-cluebringer Policyd v2 (codenamed "cluebringer") is a multi-platform policy server for popular MTAs. This policy daemon is designed mostly for large scale mail hosting environments. The main goal is to implement as many spam combating and email compliance features as possible while at the same time maintaining the portability, stability and performance required for mission critical email hosting of today. . This package is a metapackage providing mysql support. Package: postfix-cluebringer-sqlite3 Architecture: all Depends: sqlite3, libdbd-sqlite3-perl, ${misc:Depends} Description: metapackage for sqlite3 support in postfix-cluebringer Policyd v2 (codenamed "cluebringer") is a multi-platform policy server for popular MTAs. This policy daemon is designed mostly for large scale mail hosting environments. The main goal is to implement as many spam combating and email compliance features as possible while at the same time maintaining the portability, stability and performance required for mission critical email hosting of today. . This package is a metapackage providing sqlite3 support. Package: postfix-cluebringer-webui Architecture: all Pre-Depends: debconf, adduser Depends: apache2 | httpd, php5, php5-pgsql | php5-mysql | php5-sqlite, ${misc:Depends} Description: anti-spam plugin for Postfix Policyd v2 (codenamed "cluebringer") is a multi-platform policy server for popular MTAs. This policy daemon is designed mostly for large scale mail hosting environments. The main goal is to implement as many spam combating and email compliance features as possible while at the same time maintaining the portability, stability and performance required for mission critical email hosting of today. . This package contains a php interface for configuring cluebringer. debian/postfix-cluebringer-webui.docs0000644000000000000000000000002611357365016015151 0ustar TODO WISHLIST AUTHORS debian/postfix-cluebringer.postinst.debhelper0000644000000000000000000002057711431756441016740 0ustar # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section # Automatically added by dh_installinit if [ -x "/etc/init.d/postfix-cluebringer" ]; then update-rc.d postfix-cluebringer defaults >/dev/null if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then invoke-rc.d postfix-cluebringer start || exit $? else /etc/init.d/postfix-cluebringer start || exit $? fi fi # End automatically added section debian/postfix-cluebringer-sqlite3.substvars0000644000000000000000000000001611431567204016521 0ustar misc:Depends= debian/postfix-cluebringer-webui.examples0000660000000000000000000000003611431567506016037 0ustar contrib/postfix contrib/httpd debian/postfix-cluebringer-webui.postinst0000644000000000000000000000033311431564032016075 0ustar #!/bin/sh -e . /usr/share/debconf/confmodule case "$1" in configure) ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac exit 0 debian/cbpolicyd.80000644000000000000000000000171111431741006011224 0ustar .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.37.1. .TH POLICYD "8" "April 2010" "Copyright (c) 2007-2009 AllWorldIT" "System Administration Utilities" .SH NAME cbpolicyd - Policyd v2 (Clurbringer) Postfix policy server. .SH SYNOPSIS .B cbpolicyd [\fIargs\fR] .SH DESCRIPTION .B cbpolicyd is the Cluebringer policy daemonfor Postfix. This program listens on a port for communication from postifix and assists it in making decisions on action to take for each email message based on policies set by the administrator. .SH OPTIONS .TP \fB\-\-config=\fR Configuration file .TP \fB\-\-debug\fR Put into debug mode .TP \fB\-\-fg\fR Don't go into background .SH FILES .BR /etc/cluebringer/cluebringer.conf, .BR /usr/lib/postfix-cluebringer, .SH SEE ALSO .BR cbpadmin(8) /usr/share/doc/postfix-cluerbigner/* .br .SH AUTHOR This manual page was written by Nikolai Lusan , for the Debian GNU/Linux system (but may be used by others). debian/rules0000755000000000000000000000736011431743067010262 0ustar #!/usr/bin/make -f # Uncomment this to turn on verbose mode. export DH_VERBOSE=1 export DH_OPTIONS=-v SHELL := sh -e WHITELIST_DIR="$(CURDIR)/database/whitelists/" MAINDIR="$(CURDIR)" INSTDIR="$(CURDIR)/debian/tmp" #%: # dh $@ # Use override_dh_* targets to customize this. # --------------------------------------------------- # Followings are the old debian/rules # # #! /usr/bin/make -f # # export DEB_BUILD_OPTIONS # export DH_OPTIONS # DH_VERBOSE=1 LIBDIR=/usr/lib/postfix-cluebringer # SHELL := sh -e # WHITELIST_DIR="$(CURDIR)/database/whitelists/" # MAINDIR="$(CURDIR)" # INSTDIR="$(CURDIR)/debian/tmp" # #override_dh_clean: unpatch # dh_testroot # dh_testdir # dh_clean ### Additional work for the clean-target: clean:: rm -rf database/policyd-db.* rm -fr ${INSTDIR} rm -fr ${CURDIR}/debian/postfix-cluebringer-pgsql rm -fr ${CURDIR}/debian/postfix-cluebringer-mysql rm -fr ${CURDIR}/debian/postfix-cluebringer-sqlite3 rm -fr ${CURDIR}/debian/postfix-cluebringer-webui rm -fr ${CURDIR}/debian/postfix-cluebringer rm -fr ${CURDIR}/debian/files ### The 'build' target needs to be completely overridden, but the 'patch' step is now ### obsoleted through the use of quilt: #override_dh_build: build: dh_testdir for db in pgsql mysql sqlite; do \ for i in core.tsql access_control.tsql quotas.tsql amavis.tsql checkhelo.tsql checkspf.tsql greylisting.tsql; do \ $(CURDIR)/database/convert-tsql $$db $(CURDIR)/database/$$i ;\ done | grep -v '^#' > "$(CURDIR)/database/policyd-db.$$db" ;\ cd $(WHITELIST_DIR) ;\ ./parse-greylisting-whitelist >> "$(MAINDIR)/database/policyd-db.$$db" ;\ ./parse-checkhelo-whitelist >> "$(MAINDIR)/database/policyd-db.$$db" ;\ cd $(MAINDIR) ;\ done mkdir -p $(INSTDIR)/usr/sbin mkdir -p $(INSTDIR)/usr/share/postfix-cluebringer-webui mkdir -p $(INSTDIR)/usr/share/doc/postfix-cluebringer/database mkdir -p $(INSTDIR)/usr/share/doc/postfix-cluebringer/templates mkdir -p $(INSTDIR)/usr/share/doc/postfix-cluebringer-webui/templates mkdir -p $(INSTDIR)${LIBDIR} install -m 755 cbpadmin cbpolicyd $(INSTDIR)/usr/sbin install -d -m 755 ${INSTDIR}/etc/cluebringer # band aid until we can fix this properly: install -d -m 755 ${CURDIR}/debian/postfix-cluebringer/etc/cluebringer install -d -m 755 ${CURDIR}/debian/postfix-cluebringer-webui/etc/cluebringer install -m 644 debian/cluebringer.conf-debian ${CURDIR}/debian/postfix-cluebringer/etc/cluebringer/cluebringer.conf install -m 644 debian/cluebringer.conf-debian $(INSTDIR)/etc/cluebringer/cluebringer.conf install -m 644 debian/cluebringer.conf-debian $(INSTDIR)/usr/share/doc/postfix-cluebringer/templates/cluebringer.conf install -m 644 debian/cluebringer.conf-webui $(INSTDIR)/usr/share/doc/postfix-cluebringer-webui/templates/cluebringer-webui.conf install -m 644 debian/cluebringer.conf-webui $(CURDIR)/debian/postfix-cluebringer-webui/etc/cluebringer/cluebringer-webui.conf install -m 644 database/policyd-db.* $(INSTDIR)/usr/share/doc/postfix-cluebringer/database/ cp -R cbp $(INSTDIR)${LIBDIR} cp -R webui $(INSTDIR)/usr/share/postfix-cluebringer-webui #override_dh_install: build install: build dh_testroot dh_testdir dh_installexamples dh_installdirs dh_install --sourcedir=$(INSTDIR) --list-missing #override_dh_binary-indep: install binary-indep: install dh_testroot -i dh_testdir -i dh_installdocs -i dh_installchangelogs -i CHANGELOG dh_installdebconf -i dh_installinit -i dh_installman -i dh_lintian -i dh_compress -i -X.conf dh_fixperms -i dh_perl -i dh_installdeb -i dh_gencontrol -i dh_md5sums -i dh_builddeb -i #override_dh_binary-arch: install binary-arch: install # Nothing to do here #override_dh_binary: binary-arch binary-indep binary: binary-arch binary-indep .PHONY : clean, build, install, binary-indep, binary-arch, binary debian/postfix-cluebringer-pgsql.debhelper.log0000644000000000000000000001267511431756446016767 0ustar dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb debian/postfix-cluebringer-webui.substvars0000644000000000000000000000001611431567204016250 0ustar misc:Depends= debian/postfix-cluebringer.debhelper.log0000644000000000000000000001271311431756446015634 0ustar dh_auto_clean dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb debian/postfix-cluebringer.default0000644000000000000000000000032211366611423014527 0ustar # Once you have setup a database and configured your cluebringer.conf # set this to "YES" to allow cluebringer to run. RUN_CLUEBRINGER="YES" CONFIG_FILE="/etc/cluebringer/cluebringer.conf" CHUID="cluebringer" debian/postfix-cluebringer-sqlite3.debhelper.log0000644000000000000000000001267511431756446017225 0ustar dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb debian/postfix-cluebringer-webui.dirs0000644000000000000000000000002011357363453015157 0ustar etc/cluebringer debian/postfix-cluebringer-webui.postrm0000644000000000000000000000224211431746474015553 0ustar #!/bin/sh -e CONFIG_FILE="/etc/cluebringer/clubringer-webui.db.conf" . /usr/share/debconf/confmodule case "$1" in remove) ;; purge) # Remove the config if [ -e $CONFIG_FILE ]; then echo "Removing config files ... " # Remove the file rm -rf $CONFIG_FILE >/dev/null 2>&1 || true # Clean up UCF #ucf --purge $CONFIG_FILE >/dev/null 2>&1 || true #ucfr --purge postfix-cluebringer-webui $CONFIG_FILE >/dev/null 2>&1 || true fi # If we are the last vestage of cluebringer Remove user and group cluebringer_status=$(dpkg -l postfix-cluebringer | sed -n '$p' | awk '{print $1}') if ( [ "$cluebringer_status" != "ii" ] || [ "$cluebringer_status" != "ip" ] || [ "$cluebringer_status" != "iB" ] ); then if getent passwd cluebringer >/dev/null ; then echo "Removing cluebringer user and group ... " deluser --system cluebrunger >/dev/null 2>&1 || true fi if getent group cluebringer >/dev/null ; then delgroup --system cluebringer >/dev/null 2>&1 || true fi fi ;; failed-upgrade|abort-install|abort-upgrade|upgrade|disappear) ;; *) echo "Postrm called with unknown argment '$@'" exit 1; ;; esac exit 0; #DEBHELPER# debian/postfix-cluebringer.postrm0000644000000000000000000000272411431601121014422 0ustar #!/bin/sh -e CONFIG_FILE="/etc/cluebringer/clubringer.conf" . /usr/share/debconf/confmodule case "$1" in remove) ;; purge) # Remove the config if [ -f $CONFIG_FILE ]; then echo "Removing config files ... " # Remove the file rm -rf $CONFIG_FILE >/dev/null 2>&1 || true # Clean up UCF #ucf --purge $CONFIG_FILE >/dev/null 2>&1 || true #ucfr --purge postfix-cluebringer $CONFIG_FILE >/dev/null 2>&1 || true fi # Remove files and directories update-rc.d postfix-cluebringer remove >/dev/null || exit $? if [ -f /etc/default/cluebringer ]; then rm /etc/default/cluebringer fi . /usr/share/debconf/confmodule # If we are the last vestage of cluebringer remove user and group cluebringer_status=$(dpkg -l postfix-cluebringer-webui | sed -n '$p' | awk '{print $1}') if [ "$cluebringer_status" != "ii" ] || [ "$cluebringer_status" != "ip" ] || [ "$cluebringer_status" != "iB" ]; then if getent passwd cluebringer >/dev/null ; then echo "Removing cluebringer user and group ... " deluser --system cluebrunger >/dev/null 2>&1 || true fi if getent group cluebringer >/dev/null ; then delgroup --system cluebringer >/dev/null 2>&1 || true fi if [ -d "/etc/cluebringer" ]; then echo "Removing directory /etc/cluebringer" rm -rf /etc/cluebringer fi fi ;; failed-upgrade|abort-install|abort-upgrade|disappear|upgrade) ;; *) echo "Postrm called with unknown argment '$@'" exit 1; ;; esac exit 0; debian/cluebringer.conf-webui0000644000000000000000000000054011377662502013457 0ustar debian/postfix-cluebringer.examples0000660000000000000000000000002111431567457014725 0ustar cluebringer.conf debian/postfix-cluebringer.substvars0000644000000000000000000000004011431756444015142 0ustar misc:Depends= perl:Depends=perl debian/postfix-cluebringer-mysql.debhelper.log0000644000000000000000000001267511431756446017006 0ustar dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dh_installexamples dh_installdirs dh_install dh_installdocs dh_installchangelogs dh_installdebconf dh_installinit dh_installman dh_lintian dh_compress dh_fixperms dh_perl dh_installdeb dh_gencontrol dh_md5sums dh_builddeb