summaryrefslogtreecommitdiff
path: root/mail/spamd/files
diff options
context:
space:
mode:
Diffstat (limited to 'mail/spamd/files')
-rw-r--r--mail/spamd/files/obspamd.in64
-rw-r--r--mail/spamd/files/obspamlogd.in49
-rw-r--r--mail/spamd/files/patch-greyc131
-rw-r--r--mail/spamd/files/patch-greyh10
-rw-r--r--mail/spamd/files/patch-spamd48
-rw-r--r--mail/spamd/files/patch-spamd-setup110
-rw-r--r--mail/spamd/files/patch-spamdm89
-rw-r--r--mail/spamd/files/pfspamd.sh.in49
-rw-r--r--mail/spamd/files/pkg-deinstall.in21
-rw-r--r--mail/spamd/files/pkg-install.in125
-rw-r--r--mail/spamd/files/pkg-message.in42
11 files changed, 301 insertions, 437 deletions
diff --git a/mail/spamd/files/obspamd.in b/mail/spamd/files/obspamd.in
new file mode 100644
index 000000000000..cfda57c84756
--- /dev/null
+++ b/mail/spamd/files/obspamd.in
@@ -0,0 +1,64 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: obspamd
+# REQUIRE: NETWORKING SERVERS
+# BEFORE: DAEMON
+# KEYWORD: shutdown
+
+#
+# Define these spamd_* variables in one of these files:
+# /etc/rc.conf
+# /etc/rc.conf.local
+#
+# obspamd_enable="YES" # Run the spamd(8) daemon (YES/NO).
+# obspamd_flags="" # Extra flags for spamd(8) (if enabled).
+#
+# DO NOT CHANGE THESE DEFAULT VALUES HERE
+#
+obspamd_enable=${obspamd_enable:-"NO"}
+obspamd_flags=${obspamd_flags:-""}
+
+. %%RC_SUBR%%
+
+name="obspamd"
+rcvar=`set_rcvar`
+
+command="%%PREFIX%%/libexec/spamd"
+start_precmd="obspamd_precmd"
+start_postcmd="obspamd_postcmd"
+restart_postcmd="obspamd_postcmd"
+pidfile="/var/run/spamd.pid"
+
+obspamd_precmd()
+{
+ _rc=0
+ echo "${obspamd_flags}" | grep "\-b" 2>&1 > /dev/null
+ if [ $? -eq 1 ]; then
+ /sbin/mount -p | grep 'fdescfs.*/dev/fd.*fdescfs.*rw' 2>&1 > /dev/null
+ _rc=${?}
+ if [ ${_rc} -ne 0 ]; then
+ echo "Unable to start spamd in greylisting mode"
+ echo ""
+ echo "Please mount fdescfs with the following line in /etc/fstab"
+ echo ""
+ echo " fdescfs /dev/fd fdescfs rw 0 0"
+ echo ""
+ fi
+ return ${_rc}
+ fi
+}
+
+obspamd_postcmd()
+{
+ if [ -x %%PREFIX%%/sbin/spamd-setup ]; then
+ if [ -r %%PREFIX%%/etc/spamd/spamd.conf ]; then
+ %%PREFIX%%/sbin/spamd-setup &
+ fi
+ fi
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/mail/spamd/files/obspamlogd.in b/mail/spamd/files/obspamlogd.in
new file mode 100644
index 000000000000..53fb60a3be99
--- /dev/null
+++ b/mail/spamd/files/obspamlogd.in
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: obspamlogd
+# REQUIRE: NETWORKING SERVERS obspamd
+# BEFORE: DAEMON
+# KEYWORD: shutdown
+
+#
+# Define these obspamlogd_* variables in one of these files:
+# /etc/rc.conf
+# /etc/rc.conf.local
+#
+# obspamlogd_enable="YES" # Run the spamlogd(8) daemon (YES/NO).
+# obspamlogd_flags="" # Extra flags for spamlogd(8) (if enabled).
+#
+# DO NOT CHANGE THESE DEFAULT VALUES HERE
+#
+obspamlogd_enable=${obspamlogd_enable:-"NO"}
+obspamlogd_flags=${obspamlogd_flags:-""}
+
+. %%RC_SUBR%%
+
+name="obspamlogd"
+rcvar=`set_rcvar`
+
+command="%%PREFIX%%/libexec/spamlogd"
+start_precmd="${name}_precmd"
+
+obspamlogd_precmd()
+{
+ _rc=0
+ /sbin/mount -p | grep 'fdescfs.*/dev/fd.*fdescfs.*rw' 2>&1 > /dev/null
+ _rc=${?}
+ if [ ${_rc} -ne 0 ]; then
+ echo "Unable to start ${name}"
+ echo ""
+ echo "Please mount fdescfs with the following line in /etc/fstab"
+ echo ""
+ echo " fdescfs /dev/fd fdescfs rw 0 0"
+ echo ""
+ fi
+ return ${_rc}
+}
+
+load_rc_config $name
+run_rc_command "$1"
diff --git a/mail/spamd/files/patch-greyc b/mail/spamd/files/patch-greyc
deleted file mode 100644
index 0a626e9f1737..000000000000
--- a/mail/spamd/files/patch-greyc
+++ /dev/null
@@ -1,131 +0,0 @@
---- spamd/grey.c Wed Apr 13 03:22:17 2005
-+++ spamd/grey.c Mon Mar 20 15:26:18 2006
-@@ -39,6 +39,10 @@
- #include <unistd.h>
- #include <netdb.h>
-
-+#ifdef IPFW
-+#include <netinet/ip_fw.h>
-+#endif
-+
- #include "grey.h"
-
- extern time_t passtime, greyexp, whiteexp, trapexp;
-@@ -65,13 +69,17 @@
- char *traplist_msg = "\"Your address %A has mailed to spamtraps here\\n\"";
-
- pid_t db_pid = -1;
--int pfdev;
- int spamdconf;
-
-+#ifdef IPFW
-+extern int tabno;
-+#else
-+int pfdev;
- static char *pargv[11]= {
- "pfctl", "-p", "/dev/pf", "-q", "-t",
- "spamd-white", "-T", "replace", "-f" "-", NULL
- };
-+#endif
-
- /* If the parent gets a signal, kill off the children and exit */
- /* ARGSUSED */
-@@ -104,6 +112,7 @@
- return(0);
- }
-
-+#ifndef IPFW
- int
- configure_pf(char **addrs, int count)
- {
-@@ -166,11 +175,54 @@
- for (i = 0; i < count; i++)
- if (addrs[i] != NULL)
- fprintf(pf, "%s/32\n", addrs[i]);
-+
- fclose(pf);
- waitpid(pid, NULL, 0);
- sigaction(SIGCHLD, &sa, NULL);
- return(0);
- }
-+#else
-+int
-+configure_pf(char **addrs, int count)
-+{
-+ static int s = -1;
-+ ipfw_table_entry ent;
-+ int i;
-+
-+ if (s == -1)
-+ s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
-+ if (s < 0)
-+ {
-+ syslog_r(LOG_INFO, &sdata, "IPFW socket unavailable (%m)");
-+ return(-1);
-+ }
-+
-+ /* flush the table */
-+ ent.tbl = tabno;
-+ if (setsockopt(s, IPPROTO_IP, IP_FW_TABLE_FLUSH, &ent.tbl, sizeof(ent.tbl)) < 0)
-+ {
-+ syslog_r(LOG_INFO, &sdata, "IPFW setsockopt(IP_FW_TABLE_FLUSH) (%m)");
-+ return(-1);
-+ }
-+
-+ for (i = 0; i < count; i++)
-+ if (addrs[i] != NULL)
-+ {
-+ /* add addrs[i] to tabno */
-+ ent.tbl = tabno;
-+ ent.masklen = 32;
-+ ent.value = 0;
-+ inet_aton(addrs[i], (struct in_addr *)&ent.addr);
-+ if (setsockopt(s, IPPROTO_IP, IP_FW_TABLE_ADD, &ent, sizeof(ent)) < 0)
-+ {
-+ syslog_r(LOG_INFO, &sdata, "IPFW setsockopt(IP_FW_TABLE_ADD) (%m)");
-+ return(-1);
-+ }
-+ }
-+
-+ return(0);
-+}
-+#endif
-
- void
- freeaddrlists(void)
-@@ -590,11 +642,13 @@
- int i;
- struct sigaction sa;
-
-+#ifndef IPFW
- pfdev = open("/dev/pf", O_RDWR);
- if (pfdev == -1) {
- syslog_r(LOG_ERR, &sdata, "open of /dev/pf failed (%m)");
- exit(1);
- }
-+#endif
-
- /* check to see if /var/db/spamd exists, if not, create it */
- if ((i = open(PATH_SPAMD_DB, O_RDWR, 0)) == -1 && errno == ENOENT) {
-@@ -636,7 +690,9 @@
- * child, talks to jailed spamd over greypipe,
- * updates db. has no access to pf.
- */
-+#ifndef IPFW
- close(pfdev);
-+#endif
- setproctitle("(%s update)", PATH_SPAMD_DB);
- greyreader();
- /* NOTREACHED */
-@@ -655,7 +711,11 @@
- sigaction(SIGCHLD, &sa, NULL);
- sigaction(SIGINT, &sa, NULL);
-
-+#ifndef IPFW
- setproctitle("(pf <spamd-white> update)");
-+#else
-+ setproctitle("(ipfw white table update)");
-+#endif
- greyscanner();
- /* NOTREACHED */
- exit(1);
diff --git a/mail/spamd/files/patch-greyh b/mail/spamd/files/patch-greyh
deleted file mode 100644
index 5f9d5c9b5833..000000000000
--- a/mail/spamd/files/patch-greyh
+++ /dev/null
@@ -1,10 +0,0 @@
---- spamd/grey.h Thu Mar 16 19:55:33 2006
-+++ spamd/grey.h Thu Mar 16 19:55:56 2006
-@@ -22,6 +22,7 @@
- #define WHITEEXP (60 * 60 * 24 * 36) /* remove white entries after 36 days */
- #define TRAPEXP (60 * 60 * 24) /* hitting a spamtrap blacklists for a day */
- #define PATH_PFCTL "/sbin/pfctl"
-+#define PATH_IPFW "/sbin/ipfw"
- #define DB_SCAN_INTERVAL 60
- #define PATH_SPAMD_DB "/var/db/spamd"
-
diff --git a/mail/spamd/files/patch-spamd b/mail/spamd/files/patch-spamd
deleted file mode 100644
index 6aea088d3922..000000000000
--- a/mail/spamd/files/patch-spamd
+++ /dev/null
@@ -1,48 +0,0 @@
---- spamd/spamd.c Thu Mar 16 20:56:45 2006
-+++ spamd/spamd.c Thu Mar 16 21:07:11 2006
-@@ -123,6 +123,10 @@
- pid_t jail_pid = -1;
- u_short cfg_port;
-
-+#ifdef IPFW
-+int tabno=1;
-+#endif
-+
- extern struct sdlist *blacklists;
-
- int conffd = -1;
-@@ -153,6 +157,10 @@
- " [-G mins:hours:hours] [-n name] [-p port]\n");
- fprintf(stderr,
- " [-r reply] [-s secs] [-w window]\n");
-+#ifdef IPFW
-+ fprintf(stderr,
-+ " [-t table_no]\n");
-+#endif
- exit(1);
- }
-
-@@ -958,7 +966,11 @@
- if (gethostname(hostname, sizeof hostname) == -1)
- err(1, "gethostname");
-
-+#ifdef IPFW
-+ while ((ch = getopt(argc, argv, "45b:c:B:p:dgG:r:s:n:vw:t:")) != -1) {
-+#else
- while ((ch = getopt(argc, argv, "45b:c:B:p:dgG:r:s:n:vw:")) != -1) {
-+#endif
- switch (ch) {
- case '4':
- nreply = "450";
-@@ -1015,6 +1027,11 @@
- case 'v':
- verbose = 1;
- break;
-+#ifdef IPFW
-+ case 't':
-+ tabno = atoi(optarg);
-+ break;
-+#endif
- case 'w':
- window = atoi(optarg);
- if (window <= 0)
diff --git a/mail/spamd/files/patch-spamd-setup b/mail/spamd/files/patch-spamd-setup
deleted file mode 100644
index 6b517f056209..000000000000
--- a/mail/spamd/files/patch-spamd-setup
+++ /dev/null
@@ -1,110 +0,0 @@
---- spamd-setup/spamd-setup.c.orig Wed Apr 13 01:18:59 2005
-+++ spamd-setup/spamd-setup.c Wed May 10 01:55:13 2006
-@@ -41,6 +41,11 @@
- #include <netdb.h>
- #include <zlib.h>
-
-+#ifdef IPFW
-+#include <net/if.h>
-+#include <netinet/ip_fw.h>
-+#endif
-+
- #define PATH_FTP "/usr/bin/ftp"
- #define PATH_PFCTL "%%LOCAL_PFCTL%%"
- #define PATH_SPAMD_CONF "%%LOCAL_SPAMD_CONF%%"
-@@ -93,6 +98,11 @@
- int debug;
- int dryrun;
-
-+#ifdef IPFW
-+int tabno=2;
-+#endif
-+
-+
- u_int32_t
- imask(u_int8_t b)
- {
-@@ -630,6 +640,7 @@
- }
-
-
-+#ifndef IPFW
- int
- configure_pf(struct cidr **blacklists)
- {
-@@ -676,6 +687,51 @@
- }
- return(0);
- }
-+#else
-+int
-+configure_pf(struct cidr **blacklists)
-+{
-+ static int s = -1;
-+ ipfw_table_entry ent;
-+
-+ if (s == -1)
-+ s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
-+ if (s < 0)
-+ {
-+ err(1, "IPFW socket unavailable");
-+ return(-1);
-+ }
-+
-+ /* flush the table */
-+ ent.tbl = tabno;
-+ if (setsockopt(s, IPPROTO_IP, IP_FW_TABLE_FLUSH, &ent.tbl, sizeof(ent.tbl)) < 0)
-+ {
-+ err(1, "IPFW setsockopt(IP_FW_TABLE_FLUSH)");
-+ return(-1);
-+ }
-+
-+ while (*blacklists != NULL) {
-+ struct cidr *b = *blacklists;
-+
-+ while (b->addr != 0) {
-+ /* add b to tabno */
-+ ent.tbl = tabno;
-+ ent.masklen = b->bits;
-+ ent.value = 0;
-+ inet_aton(atop(b->addr), (struct in_addr *)&ent.addr);
-+ if (setsockopt(s, IPPROTO_IP, IP_FW_TABLE_ADD, &ent, sizeof(ent)) < 0)
-+ {
-+ err(1, "IPFW setsockopt(IP_FW_TABLE_ADD)");
-+ return(-1);
-+ }
-+ b++;
-+ }
-+ blacklists++;
-+ }
-+
-+ return(0);
-+}
-+#endif
-
- int
- getlist(char ** db_array, char *name, struct blacklist *blist,
-@@ -773,7 +829,11 @@
- struct servent *ent;
- int i, ch;
-
-+#ifndef IPFW
- while ((ch = getopt(argc, argv, "nd")) != -1) {
-+#else
-+ while ((ch = getopt(argc, argv, "ndt:")) != -1) {
-+#endif
- switch (ch) {
- case 'n':
- dryrun = 1;
-@@ -781,6 +841,11 @@
- case 'd':
- debug = 1;
- break;
-+#ifdef IPFW
-+ case 't':
-+ tabno = atoi(optarg);
-+ break;
-+#endif
- default:
- break;
- }
diff --git a/mail/spamd/files/patch-spamdm b/mail/spamd/files/patch-spamdm
deleted file mode 100644
index 9b83f8a3dc63..000000000000
--- a/mail/spamd/files/patch-spamdm
+++ /dev/null
@@ -1,89 +0,0 @@
---- spamd/spamd.8 Wed Apr 13 03:21:48 2005
-+++ spamd/spamd.8 Mon Mar 20 15:12:10 2006
-@@ -49,6 +49,8 @@
- daemon which rejects false mail.
- If the
- .Xr pf 4
-+or
-+.Xr ipfw 4
- packet filter is configured to redirect port 25 (SMTP) to this daemon,
- it will attempt to waste the time and resources of the spam sender.
- .Pp
-@@ -151,11 +153,15 @@
- which processes a list of spammers' addresses, and applies appropriate
- .Xr pfctl 8
- .Em rdr
-+or
-+.Xr ipfw 8
-+.Em fwd
- rules.
- .Xr spamd-setup 8
- is run from
- .Xr cron 8 .
- .Sh REDIRECTING SMTP CONNECTIONS
-+.Ss "When using PF"
- With
- .Xr pf 4 ,
- connections to port 25 (SMTP) can be redirected to another host or port,
-@@ -189,6 +195,8 @@
- can also be used to load addresses into the
- .Em <spamd>
- table.
-+
-+
- .Xr spamd-setup 8
- also has the added benefit of being able to remove addresses from
- blacklists, and will connect to
-@@ -203,6 +211,52 @@
- This is important as it allows legitimate mail
- senders to pressure spam sources into behaving properly so that they
- may be removed from the relevant blacklists.
-+
-+.Ss "If compiled with IPFW"
-+With
-+.Xr ipfw 4 ,
-+the syntax for redirection of TCP sessions is quite different
-+from that of
-+.Xr pf 4 .
-+The
-+.Em fwd
-+rule used for this purpose are described in
-+.Xr ipfw 8 .
-+The rules should be added to the ruleset called by /etc/rc.firewall
-+to be present at boot time.
-+.Bd -literal -offset 4n
-+fwd 127.0.0.1,8025 tcp from table(2) to me 25 in
-+allow tcp from table(1) to me 25 in
-+fwd 127.0.0.1,8025 tcp from any to me 25 in
-+.Ed
-+.Pp
-+Any addresses in the blacklist table
-+.Em 2
-+and not in the whitelist table
-+.Em 1
-+are then redirected to
-+.Nm
-+running on port 8025.
-+Addresses can be loaded into the blacklist
-+.Em table ,
-+like:
-+.Bd -literal -offset 4n
-+# ipfw table 1 add a.b.c.d/x
-+.Ed
-+.Pp
-+.Xr spamd-setup 8
-+can also be used to load addresses into the blacklist table
-+.Em 2 .
-+.Pp
-+The
-+.Op Fl t Ar table_no
-+option to
-+.Em spamd
-+and
-+.Em spamd-setup
-+can be used to change the default table
-+numbers.
-+
- .Sh CONFIGURATION CONNECTIONS
- .Nm
- listens for configuration connections on the port identified by the
diff --git a/mail/spamd/files/pfspamd.sh.in b/mail/spamd/files/pfspamd.sh.in
deleted file mode 100644
index e2e2e52ad0a7..000000000000
--- a/mail/spamd/files/pfspamd.sh.in
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-#
-# $FreeBSD$
-#
-
-# PROVIDE: pfspamd
-# REQUIRE: NETWORKING
-# BEFORE: mail
-# KEYWORD: shutdown
-
-#
-# Add the following lines to /etc/rc.conf to enable spamd:
-# pfspamd_enable (bool): Set to "NO" by default.
-# Set it to "YES" to enable spamd
-# pfspamd_flags (str): Set to "" by default.
-# Extra flags passed to start command.
-# pfspamd_setup_flags (str): Set to "" by default.
-# Extra flags passed to spamd-setup command.
-
-. %%RC_SUBR%%
-
-name="pfspamd"
-rcvar=`set_rcvar`
-
-command="%%PREFIX%%/libexec/spamd"
-start_postcmd="pfspamd_postcmd"
-restart_postcmd="pfspamd_postcmd"
-
-[ -z "$pfspamd_enable" ] && pfspamd_enable="NO"
-[ -z "$pfspamd_flags" ] && pfspamd_flags=""
-[ -z "$pfspamd_setup_flags" ] && pfspamd_setup_flags=""
-
-load_rc_config $name
-
-# we override check_process to avoid conflict with the spamd from sa-spamd
-check_process()
-{
- ps ax -o pid,command | grep "libexec/spamd" | grep -v grep | awk '{print $1}'
-}
-
-
-pfspamd_postcmd()
-{
- if [ -x %%PREFIX%%/sbin/spamd-setup ]; then
- %%PREFIX%%/sbin/spamd-setup $pfspamd_setup_flags
- fi
-}
-
-run_rc_command "$1"
diff --git a/mail/spamd/files/pkg-deinstall.in b/mail/spamd/files/pkg-deinstall.in
new file mode 100644
index 000000000000..e3951f0366f6
--- /dev/null
+++ b/mail/spamd/files/pkg-deinstall.in
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+#
+
+SPAMDDIR=%%SPAMDDIR%%
+SPAMDUSER=%%SPAMDUSER%%
+SPAMDGROUP=%%SPAMDGROUP%%
+
+if [ "$2" = "POST-DEINSTALL" ]; then
+ if /usr/sbin/pw group show "${SPAMDGROUP}" 2>&1 >/dev/null; then
+ echo "You should manually remove the \"${SPAMDGROUP}\" group."
+ fi
+
+ if /usr/sbin/pw user show "${SPAMDUSER}" 2>&1 >/dev/null; then
+ echo "You should manually remove the \"${SPAMDUSER}\" user."
+ fi
+
+ if [ -e "${SPAMDDIR}" ]; then
+ echo "You should manually remove the \"${SPAMDDIR}\" directory."
+ fi
+fi
diff --git a/mail/spamd/files/pkg-install.in b/mail/spamd/files/pkg-install.in
new file mode 100644
index 000000000000..337b1f86aa60
--- /dev/null
+++ b/mail/spamd/files/pkg-install.in
@@ -0,0 +1,125 @@
+#!/bin/sh
+#
+#
+
+SPAMDDIR=%%SPAMDDIR%%
+SPAMDUSER=%%SPAMDUSER%%
+SPAMDGROUP=%%SPAMDGROUP%%
+SPAMDUID=%%SPAMDUID%%
+SPAMDGID=%%SPAMDGID%%
+
+ask() {
+ local question default answer
+
+ question=$1
+ default=$2
+ if [ -z "${PACKAGE_BUILDING}" ]; then
+ read -p "${question} [${default}]? " answer
+ fi
+ if [ "x${answer}" = "x" ]; then
+ answer=${default}
+ fi
+ echo ${answer}
+}
+
+yesno() {
+ local default question answer
+
+ question=$1
+ default=$2
+ while :; do
+ answer=$(ask "${question}" "${default}")
+ case "${answer}" in
+ [Yy][Ee][Ss]|[Yy])
+ return 0
+ ;;
+ [Nn][Oo]|[Nn])
+ return 1
+ ;;
+ esac
+ echo "Please answer yes or no."
+ done
+}
+
+check_service() {
+ local name number type comment
+
+ name=$1
+ number=$2
+ type=$3
+ comment=$4
+
+ FILE="/etc/services"
+ # check
+ OK=no
+ HAS_SERVICE=no
+ COUNT=1
+ for i in `grep $name $FILE `; do
+ if [ $COUNT = 1 ] && [ X"$i" = X"$name" ]; then
+ HAS_SERVICE=yes
+ elif [ $COUNT = 2 ] && [ $HAS_SERVICE = yes ] && \
+ [ X"$i" = X"$number/$type" ]; then
+ OK=yes
+ break
+ fi
+ COUNT=`expr ${COUNT} + 1`
+ done
+ # add an entry for SERVICE to /etc/services
+ if [ $OK = no ]; then
+ echo "This system has no entry for $name in ${FILE}"
+ if yesno "Would you like to add it automatically?" y; then
+ mv ${FILE} ${FILE}.bak
+ (grep -v $name ${FILE}.bak ; \
+ echo "$name $number/$type # $comment") \
+ >> ${FILE}
+ rm ${FILE}.bak
+ else
+ echo "Please add '$name $number/$type' into ${FILE}, and try again."
+ return 1
+ fi
+ fi
+ return 0
+}
+
+
+if [ "$2" = "PRE-INSTALL" ]; then
+ if /usr/sbin/pw group show "${SPAMDGROUP}" 2>&1 >/dev/null; then
+ echo "You already have a \"${SPAMDGROUP}\" group, so I will use it."
+ else
+ echo "You need a \"${SPAMDGROUP}\" group."
+ if yesno "Would you like me to create it" "YES"; then
+ /usr/sbin/pw groupadd "${SPAMDGROUP}" -g "${SPAMDGID}" -h - || \
+ /usr/sbin/pw groupadd "${SPAMDGROUP}" -h - || exit
+ echo "Done."
+ else
+ echo "Please create the \"${SPAMDGROUP}\" group manually and try again."
+ exit 1
+ fi
+ fi
+
+ if /usr/sbin/pw user show "${SPAMDUSER}" 2>&1 >/dev/null; then
+ echo "You already have a \"${SPAMDUSER}\" user, so I will use it."
+ else
+ echo "You need a \"${SPAMDUSER}\" user."
+ if yesno "Would you like me to create it" "YES"; then
+ /usr/sbin/pw useradd "${SPAMDUSER}" -u "${SPAMDUID}" -g "${SPAMDGROUP}" -h - -d "${SPAMDDIR}" \
+ -s /sbin/nologin -c "spamd pseudo-user" || \
+ /usr/sbin/pw useradd "${SPAMDUSER}" -g "${SPAMDGROUP}" -h - -d "${SPAMDDIR}" \
+ -s /sbin/nologin -c "spamd pseudo-user" || exit
+ else
+ echo "Please create the \"${SPAMDUSER}\" user manually and try again."
+ exit 1
+ fi
+ fi
+
+ if ! check_service spamd 8025 tcp "spamd(8)"; then
+ exit 1
+ fi
+ if ! check_service spamd-cfg 8026 tcp "spamd(8) configuration"; then
+ exit 1
+ fi
+ if ! check_service spamd-sync 8025 udp "spamd(8) synchronisation"; then
+ exit 1
+ fi
+
+fi
diff --git a/mail/spamd/files/pkg-message.in b/mail/spamd/files/pkg-message.in
new file mode 100644
index 000000000000..e3c286dbe50a
--- /dev/null
+++ b/mail/spamd/files/pkg-message.in
@@ -0,0 +1,42 @@
+**********************************************************************
+To enable spamd you need:
+
+1) Enable spamd in /etc/rc.conf with the following line:
+ obspamd_enable="YES"
+ obspamlogd_enable="YES"
+
+2) Configuration template is available in %%PREFIX%%/etc/spamd as
+ spamd.conf.sample file. Copy then to spamd.conf file and
+ edit to suit your needs.
+
+3) mount fdescfs to /dev/fd with the following line in /etc/fstab
+ fdescfs /dev/fd fdescfs rw 0 0
+
+4) Add following lines to the pf.conf(5)
+
+ table <spamd-white> persist
+ no rdr inet proto tcp from <spamd-white> to any \
+ port smtp
+ rdr pass inet proto tcp from any to any \
+ port smtp -> 127.0.0.1 port spamd
+
+ !!!!!!!!!!!! -- I M P O T A N T - N O T E S -- !!!!!!!!!!!!!!!!!
+ !
+ ! changes in Ver. 4.1.x:
+ ! - UID/GID is reserved to: _spamd:_spamd
+ ! check the owner of /var/db/spamd
+ ! - greylisting is now the default
+ ! - paramer: -b is now blacklist (Ver. < 4.1.x it is bind address)
+ ! - paramer: -l is now listen address
+ ! - spamdb: format is now HASH, helo/ehlo is also stored in db
+ ! convert will be done at the first start of spamd
+ ! if you have scripts that use spamdb review this scripts
+ ! - config files: new location is %%PREFIX%%/etc/spamd
+ ! - spamtrapp addresses: remove the surrounding '< >' signs
+ ! - pfspamd.sh was renamed to the obspamd
+ ! - IPFW support (beta) added to the sources.
+ ! See %%PREFIX%%/%%DOCSDIR%%/spamd-ipfw.txt for usage manual.
+ !
+ !!!!!!!!!!!! -- I M P O T A N T - N O T E S -- !!!!!!!!!!!!!!!!!
+
+**********************************************************************