qmail injection

Giorgos Keramidas keramida at ceid.upatras.gr
Wed Dec 14 15:03:59 EET 2005


On 2005-12-12 10:47, hkosmidi at softnet.tuc.gr wrote:
> Kalhmera.
>
> Se enan web server pou exo agorasei (me plesk + redhat EL3) exo ena
> problhma.
>
> 3afnika -kai xoris na 8umamai na exo kanei kapoia allagh- stamathse na
> douleuei h mail() meso PHP. Ston server sundeomai kanonika me IMAP kai
> me SMTP stelno mail.
>
> Meso php omos bgazei to e3hs munhma:
> qmail-inject: fatal: qq read error (#4.3.0)
>
> ti sto kalo einai auto to mhn?

Το μήνυμα αυτό είναι το string που τυπώνει το qmail όταν κάποιο από τα
προγράμματα του qmail τερματίσει κι επιστρέψει στο parent process του με
κωδικό 54:

    ~/dist/qmail-1.03$ fgrep -r 'qq read error' *
    qmail.c:    case 54: return "Zqq read error (#4.3.0)";
    ~/dist/qmail-1.03$

Ο κωδικός 54 είναι hardcoded σε 1,000,000 σημεία ως die_read() function[1]

    ~/dist/qmail-1.03$ grep '\b54\b' *.c
    qmail-qmqpc.c:void die_read() { if (errno == error_nomem) nomem(); _exit(54); }
    qmail-queue.c:void die_read() { cleanup(); die(54); }
    qmail-queue.c:/* "Received: (qmail-queue invoked by alias); 26 Sep 1995 04:46:54 -0000\n" */
    qmail.c:    case 54: return "Zqq read error (#4.3.0)";
    received.c:/* "  by silverton.berkeley.edu with SMTP; 26 Sep 1995 04:46:54 -0000\n" */
    ~/dist/qmail-1.03$

Υπάρχουν 2 "read error" μηνύματα που μοιάζουν ενδιαφέροντα (σημειωμένα
με '+' παρακάτω):

    ~/dist/qmail-1.03$ fgrep 'read error' *
    cdb.3:or \-1 if there was a read error.
+   qmail-inject.c: substdio_putsflush(subfderr,"qmail-inject: fatal: read error\n"); temp(); }
+   qmail.c:    case 54: return "Zqq read error (#4.3.0)";
    qreceipt.c: substdio_putsflush(subfderr,"qreceipt: fatal: read error\n"); die_temp(); }
    spawn.c:           continue; /* read error on a readable pipe? be serious */
    ~/dist/qmail-1.03$

Εσύ βλέπεις το δεύτερο, οπότε δεν είναι από το qmail-inject το ίδιο το
πρόβλημα αλλά από το qmail-queue.  Ενα email που στέλνεται με το
qmail-inject περνάει από τα:

    qmail-inject -----> qmail-queue -----+
                                         |
    +------------------------------------+
    |
    +--> qmail-send ---+--> qmail-lspawn  (local recipients)
                       |
                       +--> qmail-rspawn  (remote recipients)

Κάποιο από όλα αυτά ψοφάει πριν δεις αυτό το μήνυμα στο qmail-inject
σου.  Κοίτα τα log files του qmail και βρες ποιο είναι το πραγματικό
πρόβλημα :-(





More information about the Linux-greek-users mailing list