qmail/spamassassin verlangsamen mail()-Funktion in php

l0rd

New Member
Hi,

ich dachte eigentlich, dass dies ein gängiges Problem ist, aber habe leider nichts gefunden:

Ich habe spamassassin mit folgender Anleitung eingebunden:

Dies funktioniert für "normale" Mails auch wunderbar. Nur leider sind php Skripte die mail() benutzen nun ziemlich langsam. Gibt es eine Möglichkeit das zu beschleunigen? Evtl. den Spamfilter zu umgehen für Mails, die von php kommen (anderer sendmail_path in php.ini?) ?


System ist RootDS bei s4u mit Debian.


Danke und Gruß,
Dennis
 
ich habs nochmal probiert. Wenn ich die Änderungen an der qmail-queue rückgängig mache, geht es wieder gewohnt schnell...

Mit den Änderungen habe ich eben auch mal probiert sendmail per Hand zu benutzen mit folgendem Skript:

Code:
#!/usr/bin/perl -w

$sendmail =  "/usr/sbin/sendmail";
#Pfad von sendmail kann ermittelt werden mit "which sendmail"

open(MAIL, "|$sendmail -oi -t") or die "Can't open pipe to $sendmail: $!\n";
print MAIL "To: tot\@linux\n";      #Bitte anpassen
print MAIL "From: Anonymus\@anoymus.de\n";
print MAIL "Subject: Hallo Test\n\n";
print MAIL "Dies stellt den Inhalt der Mail da\n";
close(MAIL) or die "Can't close pipe to $sendmail: $!\n";

print "Die Mail wurde erfolgreich verschickt\n"

Quelle: Ein Beispiel der Praxis: Eine Formmail

Es dauert ca. 1-2 Sekunden bis ich die Rückmeldung bekomme, dass die Mail verschickt wurde. Ohne die Einbindung von spamassassin gibt es direkt die Erfolgsmeldung.


Ich habe auch mail "qmail-inject" benutzt anstelle von "sendmail". Laut php.net kann man das auch im sendmail_path angeben. Dort dauert es genauso lang wenn spamassassin eingebunden ist.

Kann man spamassassin nicht irgendwo einbinden, so dass nur eingehende mails kontrolliert werden?

Dennis
 
Danke für den Tip. Hab es hinbekommen, auch wenn es noch eine ziemliche Rumprobiererei war.

Größtenteils ist die Lösung von einem Kommentar aus deinem Artikel. Da allerdings bei mail() über php $SMTPHELOHOST überhaupt nicht gesetzt ist, musste man noch einen Vergleich dazu machen. Die Lösung ist bisschen unschön ( string = "" ), aber funktioniert.
Code:
#!/bin/bash

if [ "$SMTPHELOHOST" = "[127.0.0.1]" -o "$SMTPHELOHOST" = "localhost" -o "$SMTPHELOHOST" = ""  ] ; then
  /var/qmail/bin/qmail-queue.orig
else
  /usr/bin/spamc | /var/qmail/bin/qmail-queue.orig
fi

Danke nochmal!

Dennis
 
Danke für den Tip. Das mit -z wusste ich nicht.

Ich dachte immer, dass bei bash skripten "==" gar nicht geht und es hier genau so ist, wie man es oft bei anderen sprachen falsch macht...?!
 
Back
Top