|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
Index: amavisd.conf
|
|
|
|
|
--- amavisd.conf.orig 2006-09-30 11:29:20 +0200
|
|
|
|
|
+++ amavisd.conf 2006-09-30 17:36:20 +0200
|
|
|
|
|
--- amavisd.conf.orig 2006-11-20 18:35:32 +0100
|
|
|
|
|
+++ amavisd.conf 2006-12-30 17:09:37 +0100
|
|
|
|
|
@@ -317,16 +317,16 @@
|
|
|
|
|
# ### http://www.csupomona.edu/~henson/www/projects/SAVI-Perl/
|
|
|
|
|
# ['Sophos SAVI', \&sophos_savi ],
|
|
|
|
@ -29,8 +29,8 @@ Index: amavisd.conf
|
|
|
|
|
# ### http://www.clamav.net/ and CPAN (memory-hungry! clamd is preferred)
|
|
|
|
|
# ['Mail::ClamAV', \&ask_clamav, "*", [0], [1], qr/^INFECTED: (.+)/],
|
|
|
|
|
Index: amavislogsumm
|
|
|
|
|
--- amavislogsumm.orig 2006-04-04 08:33:40 +0200
|
|
|
|
|
+++ amavislogsumm 2006-04-04 08:33:40 +0200
|
|
|
|
|
--- amavislogsumm.orig 2006-12-30 17:09:37 +0100
|
|
|
|
|
+++ amavislogsumm 2006-12-30 17:09:37 +0100
|
|
|
|
|
@@ -309,7 +309,7 @@
|
|
|
|
|
if ($spamCount > 0) {
|
|
|
|
|
printf "\tSPAM : %5.2f\n", ($spamHitSum / $spamCount);
|
|
|
|
@ -40,3 +40,116 @@ Index: amavislogsumm
|
|
|
|
|
printf "\tHAM : %5.2f\n", ($noneSpamHitSum / ($timeLineCount - $spamCount - $unscoredMail));
|
|
|
|
|
print "\n";
|
|
|
|
|
}
|
|
|
|
|
Index: helper-progs/Makefile.in
|
|
|
|
|
--- helper-progs/Makefile.in.orig 2004-04-11 01:51:52 +0200
|
|
|
|
|
+++ helper-progs/Makefile.in 2006-12-30 17:09:37 +0100
|
|
|
|
|
@@ -2,7 +2,8 @@
|
|
|
|
|
# Makefile.in for amavisd-new helper-progs
|
|
|
|
|
|
|
|
|
|
# Needed for autoconf to behave properly...
|
|
|
|
|
-AMAVISUSER=@AMAVISUSER@
|
|
|
|
|
+AMAVIS_USER=dummy
|
|
|
|
|
+AMAVIS_GROUP=dummy
|
|
|
|
|
prefix=@prefix@
|
|
|
|
|
exec_prefix=@exec_prefix@
|
|
|
|
|
sbindir=@sbindir@
|
|
|
|
|
@@ -11,7 +12,7 @@
|
|
|
|
|
MINCLUDE=@MINCLUDE@
|
|
|
|
|
# TODO : use some VERSION variable DEFS= -DVERSION=\"@VERSION@ and in the 2 .c helper programs
|
|
|
|
|
# additional flags
|
|
|
|
|
-DEFS=-D_POSIX_PTHREAD_SEMANTICS
|
|
|
|
|
+DEFS=-D_POSIX_PTHREAD_SEMANTICS -DAMAVIS_USER=\"$(AMAVIS_USER)\" -DMILTER_SOCKET_GROUP=\"$(AMAVIS_GROUP)\"
|
|
|
|
|
|
|
|
|
|
all: amavis-milter amavis
|
|
|
|
|
|
|
|
|
|
Index: helper-progs/amavis-milter.c
|
|
|
|
|
--- helper-progs/amavis-milter.c.orig 2004-07-02 16:44:26 +0200
|
|
|
|
|
+++ helper-progs/amavis-milter.c 2006-12-30 17:11:24 +0100
|
|
|
|
|
@@ -928,13 +928,14 @@
|
|
|
|
|
int
|
|
|
|
|
main(int argc, char *argv[])
|
|
|
|
|
{
|
|
|
|
|
-/* struct passwd *userinfo; *amavis uid* */
|
|
|
|
|
+ struct passwd *userinfo;
|
|
|
|
|
int c, i;
|
|
|
|
|
char *p, *milter_socket = NULL, *milter_socket_group = NULL;
|
|
|
|
|
/* const char *args = "dg:p:vx"; */
|
|
|
|
|
- const char *args = ":hdg:p:Dvx"; /* some mix of old and new options!!! */
|
|
|
|
|
+ const char *args = ":hdg:p:DvxP:"; /* some mix of old and new options!!! */
|
|
|
|
|
|
|
|
|
|
pid_t pid;
|
|
|
|
|
+ char *pidfile = NULL;
|
|
|
|
|
int devnull;
|
|
|
|
|
|
|
|
|
|
#if !defined(HAVE_MKDTEMP) && !defined(HAVE_MKTEMP)
|
|
|
|
|
@@ -969,6 +970,9 @@
|
|
|
|
|
}
|
|
|
|
|
milter_socket = strdup(optarg);
|
|
|
|
|
break;
|
|
|
|
|
+ case 'P':
|
|
|
|
|
+ pidfile = strdup(optarg);
|
|
|
|
|
+ break;
|
|
|
|
|
case 'v':
|
|
|
|
|
verbosity++;
|
|
|
|
|
break;
|
|
|
|
|
@@ -998,23 +1002,20 @@
|
|
|
|
|
uname(&amavis_uts);
|
|
|
|
|
|
|
|
|
|
/* check user and group */
|
|
|
|
|
-/* if (!(userinfo = getpwnam(AMAVIS_USER))) {
|
|
|
|
|
- * perror("getpwnam");
|
|
|
|
|
- * exit(EXIT_FAILURE);
|
|
|
|
|
- * }
|
|
|
|
|
- * amavis_gid = userinfo->pw_gid;
|
|
|
|
|
- * if (!milter_socket_group) {
|
|
|
|
|
- * milter_socket_group = strdup(MILTER_SOCKET_GROUP);
|
|
|
|
|
- * if (!milter_socket_group) {
|
|
|
|
|
- * perror("strdup");
|
|
|
|
|
- * exit(EXIT_FAILURE);
|
|
|
|
|
- * }
|
|
|
|
|
- * }
|
|
|
|
|
- * if (group_member(milter_socket_group) < 0) {
|
|
|
|
|
- * fprintf(stderr, "%s not member of %s group\n", AMAVIS_USER, milter_socket_group);
|
|
|
|
|
- * exit(EXIT_FAILURE);
|
|
|
|
|
- * }
|
|
|
|
|
- */
|
|
|
|
|
+ if (!(userinfo = getpwnam(AMAVIS_USER))) {
|
|
|
|
|
+ perror("getpwnam");
|
|
|
|
|
+ exit(EXIT_FAILURE);
|
|
|
|
|
+ }
|
|
|
|
|
+ amavis_gid = userinfo->pw_gid;
|
|
|
|
|
+ if (!milter_socket_group) {
|
|
|
|
|
+ milter_socket_group = strdup(MILTER_SOCKET_GROUP);
|
|
|
|
|
+ if (!milter_socket_group) {
|
|
|
|
|
+ perror("strdup");
|
|
|
|
|
+ exit(EXIT_FAILURE);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ group_member(milter_socket_group);
|
|
|
|
|
+
|
|
|
|
|
if (!milter_socket) {
|
|
|
|
|
fprintf(stderr, "%s: no milter socket specified (missing option -p)\n\n", argv[0]);
|
|
|
|
|
usage();
|
|
|
|
|
@@ -1115,11 +1116,22 @@
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
+ if (pidfile != NULL) {
|
|
|
|
|
+ FILE *fp;
|
|
|
|
|
+ if ((fp = fopen(pidfile, "w")) == NULL) {
|
|
|
|
|
+ amavis_syslog(DBG_FATAL, "Unable to write PID to file \"%s\": %s", pidfile, strerror(errno));
|
|
|
|
|
+ exit(EXIT_FAILURE);
|
|
|
|
|
+ }
|
|
|
|
|
+ fprintf(fp, "%ld", (long)getpid());
|
|
|
|
|
+ fclose(fp);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
/* change process group id */
|
|
|
|
|
if (miltergroup && (setgid(miltergroup->gr_gid)) < 0) {
|
|
|
|
|
amavis_syslog(DBG_FATAL, "setgid(%d): %s", miltergroup->gr_gid, strerror(errno));
|
|
|
|
|
exit(EX_UNAVAILABLE);
|
|
|
|
|
}
|
|
|
|
|
+ setuid(userinfo->pw_uid);
|
|
|
|
|
|
|
|
|
|
/* smfi_settimeout(1800); */ /* defaults to 7210 seconds */
|
|
|
|
|
|
|
|
|
|