Ok, using James idea of calling out to ripmime, I altered his code
to spool the mail message to a file so ripmime can invoke --mailbox
on it.  Once I got it working, ClamAV started catching viruses again.
This isn't going to be fast, but given the choice between unstable and
slow I'll go with slow at the moment.  I really hate waking up in the
morning to find our mail server has been puking on email since 1AM :)

*
** Replacement mbox.c
**
** Based on original code from James Stevens
**
** Instead of trying to pull the message apart
** ourselves let 'ripmime' do it for us.
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
 
#define BUFSIZE 8192
#define RIPMIME "/usr/local/bin/ripmime"
 
int cl_mbox(const char *dir, int desc)
{
        int ofd;
        char buffer[BUFSIZE], tempfile[256];
        int ret, stat, len;
 
        /*
        ** RipMime demands a regular file to work on when working
        ** on a mailbox so we have to spool "desc" into a file for it.
        */
        strcpy(tempfile, "/tmp/mboxXXXXXX");
        ofd = mkstemp(tempfile);
        if ( ofd < 0 )
                return -1;

        /*
        ** Prime the pump and copy "desc" to the temp file
        */
        len = read(desc, buffer, BUFSIZ);
        while ( len > 0 ) {
                write(ofd, buffer, len);
                len = read(desc, buffer, BUFSIZ);
        }
        close(ofd);

    ret = fork();
    if ( ret == -1 ) {
                unlink(tempfile);
                return -1;
        }

    if ( ret == 0 ) {
                if ( desc )
                        dup2(desc, 0);
        execlp(RIPMIME, RIPMIME, "-d", dir, "-i", tempfile, "--mailbox", NULL);
        exit(-1);
    }
    waitpid(ret, &stat, 0);
        unlink(tempfile);
    return 0;
}




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Clamav-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/clamav-devel

Reply via email to