Bill,

Some questions:

1) What logfile is this in?

2) Where is the maildrop program?

3) How is maidrop being used, the actual call to maildrop from .qmail file?

4) Any other information that might be useful.

My maildrop binary is in /usr/bin

# ls -l /home/vpopmail/domains/mydomain.com/myuser

drwx------ 365 vpopmail vchkpw 12288 Feb  9 06:02 Maildir
lrwxrwxrwx   1 root     root      21 Dec 28  2016 .mailfilter -> .mailfilter.ooo.dspam
-rw-------   1 vpopmail vchkpw  6102 Jun 17  2018 .mailfilter.ooo.dspam
-rw-------   1 vpopmail vchkpw    42 Aug 16 13:38 .qmail

# cat /home/vpopmail/domains/mydomain.com/myuser/.qmail

| preline /usr/bin/maildrop ./.mailfilter

# cat /home/vpopmail/domains/mydomain.com/myuser/.mailfilter (notice the 'to $MAILDIR', 'to $SPAMDIR', and etc...)

SHELL="/bin/sh"
import EXT
import HOST
VHOME=`pwd`
MAILDIR="$VHOME/Maildir"
SPAMDIR="$VHOME/Maildir/.spam"
VACDIR="$VHOME/vacation"
POSTMASTER="../postmaster/Maildir"
SUBJ=""
SUBJADD=""
DUR=86400
NUM=3
VACSUBJ="[oO][uU][tT] [oO][fF] [oO][fF][fF][iI][cC][eE]"
TIMESTAMP=`date "+%b %d %H:%M:%S"`
EXT=tolower($EXT)
HOST=tolower($HOST)
logfile "/var/log/maildrop/maildrop-$EXT@$HOST.log"
log "=== $TIMESTAMP - BEGIN maildrop processing for $EXT@$HOST ==="
log "Delivery: $VHOME"
log "Size: $SIZE"

# Check vpopmail mysql db for user
`/home/vpopmail/bin/vuserinfo $EXT@$HOST`
if ( $RETURNCODE == 0 )
{
   # Check for vpopmail user directory
   `test -d $MAILDIR`
   if ( $RETURNCODE == 0 )
   {

      exception {
         #xfilter "/usr/bin/rspamc --mime"
         xfilter "/usr/bin/dspam --user $EXT@$HOST --deliver=stdout"
      }
      if ( $RETURNCODE == 0 )
      {
         # Check if spam and deliver to spam folder
         if ( /^X-Spam-Status: Yes/  || /^X-DSPAM-Result: Spam/ || /^X-Mlf-Threat: likelyspam/ )
         {
            `test -d $SPAMDIR`
            if ( $RETURNCODE != 0 )
            {
               `maildirmake -f spam $MAILDIR`
               if ( $RETURNCODE != 0 )
               {
                  log "Error creating $SPAMDIR..."
                  exception {
                       SUBJ=`reformail -x 'Subject:'`
                       xfilter 'reformail -I "Subject: $SUBJ [ERROR CREATING SPAM DIRECTORY]"'
                  }
                  cc "$POSTMASTER"
                  to "$MAILDIR"
               }
            }
            to "$SPAMDIR"
         }
         # Check if message is from this user, and process
         if (( /^From: .*$EXT@$HOST.*/ ) && ( /^To: .*$EXT@$HOST.*/ ) && ( /^Return-Path: .*$EXT@$HOST.*/ ) && ( /^From .*$EXT@$HOST.*/ ))
         {
         # Check if this is a user vacation (autorespond) start/stop request message.
            if ( /^Subject: $VACSUBJ/  )
            {
               log "===== OUT OF OFFICE (begin) ====="
               `test -d $VACDIR`
               if ( $RETURNCODE != 0 )
               {
                  `mkdir $VACDIR`
                  if ( $RETURNCODE != 0 )
                  {
                     log "Could not create ($VAC) vacation directory..."
                     exception {
                           SUBJ=`reformail -x 'Subject:'`
                           xfilter 'reformail -I "Subject: $SUBJ [VACATION REQUEST FAILED]"'
                     }
                     cc "$POSTMASTER"
                     to "$MAILDIR"
                  }
               }
               # Remove all vacation files (esp. message)
               `find $VACDIR/ -type f -exec rm {} \;`
               SUBJADD="[OUT-OF-OFFICE STOP]"
               if ( /^Content-Type: text\/html/ )
               {
                  log "===== OOO-Pre (html) ======"
                  MSG=`formail -I "" | sed '/Content-Type: text\/html/,$d' | sed '/Content-Transfer-Encoding:/,$!d' | grep -v Content- | sed '/^-.*[0-9,A-Z,a-z]/d' | sed '/^$/d' | sed '/--/,$d'`
               }
               else
               {
                  log "===== OOO-Pre (text) ======"
                  MSG=`/usr/bin/formail -I "" | sed '/--/,$d'`
               }

               # This is a vacation (autorespond) start request, if MSG is not empty.
               `test -z $MSG`
               if ( $RETURNCODE != 0 )
               {
                  log "===== OOO Start request ====="
                  if ( /^Content-Type: text\/html/ )
                  {
                     log "===== OOO (html) ======"
                     `formail -I "" | sed '/Content-Type: text\/html/,$d' | sed '/Content-Transfer-Encoding:/,$!d' | grep -v Content- | sed '/^-.*[0-9,A-Z,a-z]/d' | sed '/--/,$d'>$VACDIR/message`                      `formail -I "" | sed '/Content-Type: text\/html/,$d' | sed '/Content-Transfer-Encoding:/,$!d' | grep -v Content- | sed '/^-.*[0-9,A-Z,a-z]/d' | sed '/--/,$!d'>>$VACDIR/message`
                  }
                  else
                  {
                     log  "===== OOO (text) ======"
                     `/usr/bin/formail -I "" > $VACDIR/message`
                  }
                  SUBJADD="[OUT-OF-OFFICE START]"
                  if ( /^Content-Transfer-Encoding: base64/ )
                  {
                     log "===== OOO (Base64 encoding) ======"
                     `/usr/bin/base64 --decode $VACDIR/message > $VACDIR/tmp.msg`
                     if ( $RETURNCODE != 0 )
                     {
                        # Remove all vacation files (esp. message)
                        `find $VACDIR/ -type f -exec rm {} \;`
                        SUBJADD="[OUT-OF-OFFICE STOP]"
                     }
                     log "===== OOO Return decode: $RETURNCODE ====="

                     `/bin/mv $VACDIR/tmp.msg $VACDIR/message`
                     if ( $RETURNCODE != 0 )
                     {
                        # Remove all vacation files (esp. message)
                        `find $VACDIR/ -type f -exec rm {} \;`
                        SUBJADD="[OUT-OF-OFFICE STOP]"
                     }
                     log "===== OOO Return move: $RETURNCODE ====="
                  }
                  log  "===== OOO Start request done ======"
               }
               log "===== OOO Reform subject ====="
               exception {
                  SUBJ=`reformail -x 'Subject:'`
                  xfilter 'reformail -I "Subject: $SUBJ $SUBJADD"'
               }
               log "===== OUT OF OFFICE (end) ====="
            }
            to "$MAILDIR"
         }
         # Auto respond if we have a message
         `test -f $VACDIR/message`
         if ( $RETURNCODE == 0 )
         {
            `/usr/bin/autorespond $DUR $NUM $VACDIR/message $VACDIR`
         }
         to "$MAILDIR"
      }
      else
      {
         log "Dspam error: $RETURNCODE"
      }
   }
   else
   {
      log "User $EXT@$HOST has no directory"
      exit
   }
}
else
{
   log "No such user ($EXT@$HOST)..."
   to "$MAILDIR"
}

On 2/8/2021 10:00 PM, Bill Silverstein wrote:
I have been getting the message:

/usr/local/bin/maildrop: Unable to open mailbox.
I'm not going to try again; this message has been in the queue too long.

Any suggestions?



---------------------------------------------------------------------
To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com
For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com

Reply via email to