Newsgroup: it.comp.os.linux.sys
Titolo: qmail con spamassassin: la coda non gira

sto cercando di installare spamassassin su qmail nel modo piu' semplice
possibile: un wrapper bash che sostituisce qmail-queue e lancia spamc in
pipe sul qmail-queue originale.
il problema e' che, anche levando spamc e facendo solo
#!/bin/bash
/var/qmail/bin/qmail-queue.orig
qmail mi da' errore quando cerco di inviare email: unable to exec qq.
se riesco a far funzionare il wrapper bash il resto dovrebbe essere
facile...
idee?
distro red hat 8.0, kernel 2.4.18-14
se non riesco dovro' scrivermi un programmino che lanci una pipe multipla, e
dato che non sono cosi' addentro nella programmazione per unix mi ci vorra'
un po' :P
tia,
*
-- 
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?

 pipe sul qmail-queue originale.
C'e' una versione patchata di qmail-queue per questo... vedi nella
documentazione di spamassassin o qmail.
Davide
-- 
| Never worry about theory as long as the machinery does what it's
| supposed to do. 
| 
| 


Grazie, ma no, grazie :)
Ho gia' un qmail abbastanza rattoppato cosi' com'e'... Ho preferito questa
via:
# cat qmail-spamc-wrapper.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
    int pfds[2];
    int childpid;
    if ( pipe(pfds) == -1 ) {
        perror("Failed to create pipe; quitting\n");
        exit(1);
    }
    if ( ( childpid=fork() ) == -1 ) {
        perror("Failed to fork; quitting\n");
        exit(2);
    }
    if ( childpid == 0 ) {
        close(1);       // close normal stdout
        dup(pfds[1]);   // make stdout same as pfds[1]
        close(pfds[0]); // we don't need this
        execlp("/var/qmail/bin/spamc", "spamc", NULL);
    } else {
        close(0);       // close normal stdin
        dup(pfds[0]);   // make stdin same as pfds[0]
        close(pfds[1]); // we don't need this
        // usiamo il path assoluto in modo da poter installare
        // il programma semplicemente spostando il vecchio
        // qmail-queue
        execlp("/var/qmail/bin/queue/spamassassin/qmail-queue",
            "qmail-queue", NULL);
    }
}
# cat enable-qmail-spamc-wrapper
#!/bin/bash
cd /var/qmail/bin/
if [ -f /var/qmail/bin/queue/spamassassin/qmail-queue ];then
        echo "qmail-queue exists. Aborting..."
        exit
fi
if [ -f qmail-spamc-wrapper ]; then
        mkdir /var/qmail/bin/queue/spamassassin/ 2>/dev/null
        mv /var/qmail/bin/qmail-queue /var/qmail/bin/queue/spamassassin/
        ln -s qmail-spamc-wrapper qmail-queue
fi
# cat disable-qmail-spamc-wrapper
#!/bin/bash
if [ -f /var/qmail/bin/queue/spamassassin/qmail-queue ];then
        cd /var/qmail/bin
        mv -f /var/qmail/bin/queue/spamassassin/qmail-queue ./
else
        echo "qmail-queue does not exist. Aborting..."
        exit
fi
# cat make-qmail-spamc-wrapper
#!/bin/bash
gcc qmail-spamc-wrapper.c -o qmail-spamc-wrapper && \
               chown qmailq:qmail qmail-spamc-wrapper && \
               chmod 04711 qmail-spamc-wrapper
E naturalmente:
# cd /var/qmail/bin
# ./make-qmail-spamc-wrapper
# ./enable-qmail-spamc-wrapper
E funziona pure... :P
Ciaotutti,
