OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /v/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-src                      Date:   30-Dec-2006 17:14:55
  Branch: HEAD                             Handle: 2006123016145500

  Modified files:
    openpkg-src/amavisd     amavisd.patch amavisd.spec rc.amavisd

  Log:
    add support for running the amavis-milter daemon

  Summary:
    Revision    Changes     Path
    1.4         +117 -4     openpkg-src/amavisd/amavisd.patch
    1.71        +5  -2      openpkg-src/amavisd/amavisd.spec
    1.19        +34 -10     openpkg-src/amavisd/rc.amavisd
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-src/amavisd/amavisd.patch
  ============================================================================
  $ cvs diff -u -r1.3 -r1.4 amavisd.patch
  --- openpkg-src/amavisd/amavisd.patch 30 Sep 2006 15:38:03 -0000      1.3
  +++ openpkg-src/amavisd/amavisd.patch 30 Dec 2006 16:14:55 -0000      1.4
  @@ -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 @@
    # ### 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 @@
            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...
  [EMAIL PROTECTED]@
  ++AMAVIS_USER=dummy
  ++AMAVIS_GROUP=dummy
  + [EMAIL PROTECTED]@
  + [EMAIL PROTECTED]@
  + [EMAIL PROTECTED]@
  +@@ -11,7 +12,7 @@
  + [EMAIL PROTECTED]@
  + # 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 */
  + 
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/amavisd/amavisd.spec
  ============================================================================
  $ cvs diff -u -r1.70 -r1.71 amavisd.spec
  --- openpkg-src/amavisd/amavisd.spec  30 Dec 2006 14:46:42 -0000      1.70
  +++ openpkg-src/amavisd/amavisd.spec  30 Dec 2006 16:14:55 -0000      1.71
  @@ -130,7 +130,9 @@
             --with-user="%{l_rusr}" \
             --with-milterinc="%{l_prefix}/include/milter" \
             --with-milterlib="%{l_prefix}/lib"
  -      %{l_make} %{l_mflags}
  +      %{l_make} %{l_mflags} \
  +          AMAVIS_USER="%{l_rusr}" \
  +          AMAVIS_GROUP="%{l_mgrp}"
       ) || exit $?
   %endif
   
  @@ -176,7 +178,7 @@
       %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} \
           '%config %{l_prefix}/etc/amavisd/amavisd.conf' \
           '%doc %{l_prefix}/share/amavisd/*' \
  -        '%attr(0750,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/amavisd' \
  +        '%attr(0750,%{l_rusr},%{l_mgrp}) %{l_prefix}/var/amavisd' \
           '%attr(0750,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/amavisd/*'
   
   %files -f files
  @@ -202,6 +204,7 @@
       #   before erase, stop service and remove log files
       [ $1 -eq 0 ] || exit 0
       %{l_rc} amavisd stop 2>/dev/null
  +    rm -f $RPM_INSTALL_PREFIX/var/amavisd/.spamassassin >/dev/null 2>&1 || 
true
       rm -f $RPM_INSTALL_PREFIX/var/amavisd/*.log* >/dev/null 2>&1 || true
       rm -f $RPM_INSTALL_PREFIX/var/amavisd/*.sum* >/dev/null 2>&1 || true
       exit 0
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/amavisd/rc.amavisd
  ============================================================================
  $ cvs diff -u -r1.18 -r1.19 rc.amavisd
  --- openpkg-src/amavisd/rc.amavisd    30 Dec 2006 14:46:42 -0000      1.18
  +++ openpkg-src/amavisd/rc.amavisd    30 Dec 2006 16:14:55 -0000      1.19
  @@ -5,6 +5,7 @@
   
   %config
       amavisd_enable="$openpkg_rc_def"
  +    amavisd_daemons="amavisd amavis-milter"
       amavisd_log_prolog="true"
       amavisd_log_epilog="true"
       amavisd_log_numfiles="10"
  @@ -13,10 +14,19 @@
       amavisd_sum_flags=""
   
   %common
  -    amavisd_pidfile="@l_prefix@/var/amavisd/amavisd.pid"
       amavisd_cfgfile="@l_prefix@/etc/amavisd/amavisd.conf"
  +    amavisd_pidfile_amavisd="@l_prefix@/var/amavisd/amavisd.pid"
  +    amavisd_pidfile_amavis_milter="@l_prefix@/var/amavisd/amavis-milter.pid"
  +    
amavisd_socket_amavis_milter="@l_prefix@/var/amavisd/amavis-milter.socket"
       amavisd_signal () {
  -        [ -f $amavisd_pidfile ] && kill -$1 `cat $amavisd_pidfile`
  +        [ -f $amavisd_pidfile_amavisd ] \
  +            && kill -$1 `cat $amavisd_pidfile_amavisd`
  +        local rc_amavisd_amavisd=$?
  +        [ -f $amavisd_pidfile_amavis_milter ] \
  +            && kill -$1 `cat $amavisd_pidfile_amavis_milter`
  +        local rc_amavisd_amavis_milter=$?
  +        [    $rc_amavisd_amavisd       -eq 0 \
  +          -o $rc_amavisd_amavis_milter -eq 0 ]
       }
   
   %status -u @l_rusr@ -o
  @@ -28,28 +38,42 @@
       echo "amavisd_usable=\"$amavisd_usable\""
       echo "amavisd_active=\"$amavisd_active\""
   
  -%start -u @l_rusr@
  +%start -u @l_susr@
       rcService amavisd enable yes || exit 0
       rcService amavisd active yes && exit 0
  -    @l_prefix@/sbin/amavisd -c $amavisd_cfgfile
  +    for daemon in $amavisd_daemons; do
  +        if [ ".$daemon" = ".amavisd" ]; then
  +            @l_prefix@/sbin/amavisd -c $amavisd_cfgfile
  +        elif [ ".$daemon" = ".amavis-milter" -a -x 
@l_prefix@/sbin/amavis-milter ]; then
  +            rm -f $amavisd_socket_amavis_milter
  +            ( umask 002
  +              @l_prefix@/sbin/amavis-milter \
  +                  -p local:$amavisd_socket_amavis_milter \
  +                  -P $amavisd_pidfile_amavis_milter
  +            ) || exit $?
  +        fi
  +    done
   
  -%stop -u @l_rusr@
  +%stop -u @l_susr@
       rcService amavisd enable yes || exit 0
       rcService amavisd active no && exit 0
       @l_prefix@/sbin/amavisd -c $amavisd_cfgfile stop
  +    amavisd_signal TERM
  +    sleep 1
  +    rm -f $amavisd_socket_amavis_milter
   
  -%restart -u @l_rusr@
  +%restart -u @l_susr@
       rcService amavisd enable yes || exit 0
       rcService amavisd active no && exit 0
       rc amavisd stop
  -    sleep 4
  +    sleep 2
       rc amavisd start
   
  -%daily -u @l_rusr@
  +%daily -u @l_susr@
       rcService amavisd enable yes || exit 0
       shtool rotate -f \
           -n ${amavisd_log_numfiles} -s 0 \
  -        -z ${amavisd_log_complevel} -m 640 \
  +        -z ${amavisd_log_complevel} -m 640 -o @l_rusr@ -g @l_rgrp@ \
           @l_prefix@/var/amavisd/amavisd.sum
       logfiles="@l_prefix@/var/amavisd/amavisd.log"
       if [ -f "@l_prefix@/var/amavisd/amavisd.log.0" ]; then
  @@ -60,7 +84,7 @@
           >@l_prefix@/var/amavisd/amavisd.sum 2>/dev/null
       shtool rotate -f \
           -n ${amavisd_log_numfiles} -s ${amavisd_log_minsize} -d \
  -        -z ${amavisd_log_complevel} -m 640 \
  +        -z ${amavisd_log_complevel} -m 640 -o @l_rusr@ -g @l_rgrp@ \
           -P "${amavisd_log_prolog}" \
           -E "${amavisd_log_epilog}; rc amavisd restart" \
           @l_prefix@/var/amavisd/amavisd.log
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     [email protected]

Reply via email to