Emails über mehrere Server versenden

Emails über mehrere Server versenden

Postby lygie » 9:50am, Wed 30 Jan, 2008

Hallo Zusammen,

ich würde gerne die Last zum Versenden des Newsletters auf mehrere Mail-Server verteilen.

Das klappt grundsätzlich schon ganz gut, wenn ich als PHPMAILERHOST den lokalen Mailserver eintrage, und den darauf laufenden Postfix mehrere Server als relayhost angebe.

Lieber wäre mir jedoch eine Lösung bei der PHPlist sich um die Verteilung auf mehrere Server kümmert.

Ich habe mal etwas mit dem Quellcode herumgebastelt, leider aber noch keine befriedigenden Ergebnisse bekommen.
Mein Ansatz war, beim Aufruf der PHPlistMailer Funktion einen zusätzlichen und jede Sekunde wechselnden Mailserver als host mitzugeben. Dazu habe ich eine kleine Abfrage gemacht und den Funktionsaufruf leicht erweitert.
Code: Select all
if (date("s")%2==0) $smtphost = 'mailserver1.meinedomain.de';
               else $smtphost = 'mailserver2.meinedomain.de';
$mail = new PHPlistMailer($messageid,$destinationemail,$smtphost);


Dieser $smtphost wird in der PHPlistMailer Funktion als
Code: Select all
 $this->Host = $smtphost;

übernommen.

Leider werden nur die ersten paar Mails von mailserver1 verschickt, danach alle vom zweiten Mailserver.

Hat jemand eine Idee oder eine andere Lösung zu dem Problem?
lygie
PL Nut
 
Posts: 19
Joined: 11:17am, Tue 24 Jul, 2007

Postby lygie » 1:45pm, Tue 05 Feb, 2008

juhuu, ich konnte das Problem lösen.

Wenn jemand also seine Emails über mehrere Server verschicken möchte, hier eine Lösung:

In einer kleinen config-Datei, ich nenne sie mal smtphost.inc.php schreiben wir unsere Server:

Code: Select all


$smtparray = array("mailserver1", "mailserver2", "mailserver3");



in der Processqueue.php schreiben wir an den Anfang folgende Zeilen:
Code: Select all
include_once ('smtphost.inc.php');
$hosts_count = sizeof($smtparray);
$host_divide = 60/$hosts_count;

Damit bestimmen wir wie viele Mailserver sich in der config befinden.

Vor dem Aufruf der sendEmail() Funktion schreiben wir
Code: Select all
$date_s     = date("s");
$host_nr    = floor ($date_s/$host_divide);
$smtphost   = $smtparray[$host_nr];

den Aufruf der Funktion erweitern wir um den Parameter $smtphost

Das gleiche machen wir bei dem Aufruf der Funktion PHPlistMailer in der sendemaillib.php.

Als letzes erweitern wir die selbe Funktion in der class.phplistmailer.php und Ändern die Zuweisung der IP in:
Code: Select all
 
$ip = gethostbyname($smtphost);


Das Ganze klappt aber nur, wenn alle Mailserver von dem Rechner auf dem PHPList läuft emails ohne Abfrage von Zugangsdaten entgegennehmen.
lygie
PL Nut
 
Posts: 19
Joined: 11:17am, Tue 24 Jul, 2007


Return to German forum

Who is online

Users browsing this forum: No registered users and 2 guests