Versandvarianten bearbeiten

Nutzen Sie die verschiedenen Versandvarianten um E-Mails z.B. bei Anmeldung oder Abmeldung von einer Empfängerliste versenden zu lassen. Als Standard vordefiniert sind die Versandvarianten "Standard PHP mail()" und "Standard SMTP Direct (MX)". Die Versandvariante "Standard PHP mail()"  sollte auf jedem Webserver verwendet werden können. Verwenden Sie die Variante "Standard SMTP Direct (MX)" um E-Mails direkt an den Server des Empfängers ausliefern zu lassen. Diese Variante sollte nicht verwendet werden, da der Server des Empfängers nicht immer erreichbar sein muss.

 

Name der Versandvariante Vergeben Sie einen eindeutigen Namen für die Versandvariante.

 

Typ der Versandvariante Wählen Sie den Typ der Versandvariante. Je nach gewählten Typ der Versandvariante sind verschiedene weitere Parameter notwendig bzw. änderbar.

Zur Verfügung stehen:

PHP mail() Verwendet die in PHP integrierte PHP mail()-Funktion für den E-Mail-Versand.

Einige Angaben wie z.B. "E-Mail-Adresse für die Return-Path-Angabe" für den Versand einer E-Mail, sind bei Verwendung dieser Versandvariante wirkunglos, d.h. der Server setzt selbständig Standard-Angaben ein.

 

Versand über Postausgangsserver/SMTP-Server Verwendet einen Postausgangsserver/SMTP-Server für den Versand der E-Mails.

Diese Variante kann nur verwendet werden, wenn der Webserver auf den angegebenen Postausgangsserver zugreifen kann (Port 25 offen).

 

Direkt an den Server des Empfängers (SMTP/MX) Versendet die E-Mails direkt an den Server des Empfängers.

Diese Variante kann nur verwendet werden, wenn der Webserver über Port 25 auf den Zielserver zugreifen kann. Es ist nicht empfohlen diese Variante zu verwenden, da der Zielserver nicht immer erreichbar sein muss. Es sollten die Varianten PHP mail() oder Versand über Postausgangsserver/SMTP-Server verwendet werden.

 

sendmail verwenden Ist auf dem Webserver das Programm sendmail installiert, dann kann diese Variante verwendet werden.

Verwenden Sie diese Variante nur, wenn Sie das sendmail-Verzeichnis und Parameter kennen.

 

In Verzeichnis speichern Dies erstellt und speichert die fertigen E-Mails in das angegebene Verzeichnis im RFC822-Format. Der eigentliche Versand muss danach mit einem eigenen Script oder Programm erfolgen.

Hinweis: Es muss genügend Speicherplatz zur Verfügung stehen um 100te oder 1000te E-Mails speichern zu können.

 

 

Limit der Versandvariante Das angegebene Limit wird beim Versand von E-Mailings berücksichtigt, falls mehrere Versandvarianten gewählt und mit einem Limit versehen sind. Geben Sie einen Wert von 0 an, um die Versandvariante nicht zu limitieren.

 

Absender-E-Mail-Adresse für die Versandvariante Erfordert der Server eine spezielle Absender-E-Mail-Adresse um E-Mails zu versenden, dann kann diese hier definiert werden. Diese Angabe hat Vorrang vor allem Absender-E-Mail-Adressen, die Sie für Formulare, Mailings und Responder definieren.

 

 

Einstellungen für den Versand mit mehreren Threads

Dies ist eine Profi-Funktion und sollte nur bei einem eigenen Server verwendet werden!

Voraussetzung: PHP 5.3 oder neuer mit cURL

Beachten Sie unbedingt die Hinweise am Ende dieser Seite.

 

multi-threaded Versand verwenden Aktivieren Sie diese Einstellung, um die Versand mit mehreren Threads zu aktivieren.

 

Anzahl Versandthreads

 

Geben Sie an wie viele Threads = http(s)://-Aufrufe gleichzeitig für den Versand der E-Mails verwendet werden sollen.
Maximale Anzahl E-Mails, die pro Versandthread versendet werden dürfen Geben Sie die maximale Anzahl E-Mails an, die pro Versand-Thread = http(s)://-Aufruf, versendet werden sollen. Wurde die Anzahl E-Mails versendet, wird ein neuer Versand-Thread = http(s)://-Aufruf ausgeführt, falls noch E-Mails zu versenden sind.

 

 

Einstellungen für den Versand per PHP mail()
Zusatzparameter z.B. -f <E-Mail-Adresse> Diese Angabe kann für die PHP mail() Anweisung notwendig sein, falls der E-Mail-Versand verweigert wird. In den FAQ Ihres Webpräsenzanbieters werden Sie Informationen finden, falls ein Zusatzparameter notwendig ist.

Die definierten Zusatzparameter werden nur verwendet, wenn der PHP Safe mode deaktiviert ist.

 

 

Einstellungen für den Versand über Postausgangsserver/SMTP-Server
SMTP HELO Name Geben Sie den SMTP HELO Namen ein, dieser wird beim Verbindungsaufbau zum Server verwendet. Dieser Name muss eine gültige Domain sein.

 

Mehrere E-Mails während einer Verbindung zum SMTP-Server versenden Aktivieren Sie diese Einstellung, damit über eine hergestellte SMTP-Verbindung mehrere E-Mails versendet werden sollen. Die Empfehlung ist die Einstellungen zu deaktivieren, auch wenn dadurch durch das Script sehr viele TCP/IP-Verbindungen hergestellte werden.

 

Pipelining verwenden Pipelining ist eine spezielle Art der Kommunikation um an den Server mehrere Anweisungen zu senden und nicht auf eine Antwort zu warten. Es ist empfehlenswert diese Einstellung zu deaktivieren, da es schwer ist etwaige Kommunikationsfehler zu finden.

 

Zeitüberschreitung/Timeout Geben Sie an wann bei Nicht-Reaktion des Zielservers die Verbindung abgebrochen werden soll. Die Standard-Einstellung ist 0, d.h. es wird niemals die Verbindung abgebrochen.

 

Name des Postausgangsservers/SMTP-Servers Geben Sie den Namen des Postausgangsservers/SMTP-Servers korrekt ein. Der Name kann ein auslösbarer Name z.B. mx.freenet.de oder eine IP-Adresse sein.

 

Server erfordert eine sichere Verbindung (SSL) Aktivieren Sie diese Einstellung, wenn der Server eine sichere und verschlüsselte Verbindung erfordert. Diese Funktion sollte nicht verwendet werden, da der Verbindungsaufbau längere Zeit benötigt.

Hinweis:
Diese Funktion ist erst ab PHP 4.3 und aktivierten OpenSSL nutzbar.

 

Ports des Postausgangsservers/SMTP-Servers Ändern Sie die Angabe des Ports nur, falls Ihr Provider einen anderen Port vorgibt. Der Standard-Port ist 25.

 

Authentifizierung beim Postausgangsservers/SMTP-Servers notwendig Aktivieren Sie diese Einstellung zur Aktivierung der SMTP-Authentifizierung und geben Sie Benutzername/Kontoname und Passwort für ein Postfach beim Provider korrekt ein. Bei Verwendung von externen Servern ist diese Angabe meistens erforderlich.

 

 

Einstellungen für den Versand per sendmail
sendmail Verzeichnis Geben Sie das Verzeichnis und Dateinamen zum Programm sendmail an.

 

sendmail Parameter Geben Sie die notwendigen sendmail-Parameter ein.

 

 

Pause während des Versands von mehreren E-Mails
Nach jeder E-Mail X ms warten. Während des Versands per CronJob wird nach jeder E-Mail die angegebene Zeit gewartet. Verwenden Sie diese Einstellung nur, falls der Versandserver dies erfordert.

Die Verwendung dieser Funktion kann zum Scriptabbruch führen, falls die Scriptlaufzeit abgelaufen ist.

 

 

Benutzerdefinierte E-Mail-Header-Felder

Die Definition eigener E-Mail-Header-Felder ist eine Profi-Funktion, die fehlerhafte Verwendung dieser Funktion kann zu Darstellungsfehlern beim E-Mail-Empfänger oder zur Erkennung als Spam führen.

Für jede Versandvariante müssen einzeln die E-Mail-Header definiert werden, diese werden danach für jede versendete E-Mail mit dieser Versandvariante verwendet.

Informationen zum Aufbau von E-Mails und Spezifikation von E-Mail-Headern finden Sie im RFC 5322.

 

Neues Feld/Feld ändern Fügt ein neues E-Mail-Header-Feld hinzu bzw. ändert das gewählte Feld.

Geben Sie RFC-konform eine Bezeichnung des Header-Felds ein. Das E-Mail-Header-Feld darf nicht die Zeichen Leerzeichen, ", ', :, <, > und \ enthalten. Nicht verwendet werden dürfen die E-Mail-Header-Felder: BCc, Cc, Content-Class, Content-Transfer-Encoding, Content-Type, Date, DomainKey-Signature, From, Importance, In-Reply-To, List-Id, List-Unsubscribe, Message-Id, MIME-Version, Priority, Received, References, Reply-To, Return-Path, Sender, Status, Subject, Thread-Index, Thread-Topic, To, UIDL, X-ClientAddr, X-ID, X-Loop, X-Mailer, X-Mailer-Version, X-MIME-Autoconverted, X-MimeOLE, X-MS-Has-Attach, X-MSMail-Priority, X-MSMail-Priority, X-MS-TNEF-Correlator, X-OriginalArrivalTime, X-Originating-Email, X-Originating-IP, X-Priority, X-Sender, X-Spam-Checker-Version, X-Spam-Level, X-Spam-Status, X-TOI-MSGID, X-UIDL

Als Inhalt des E-Mail-Header-Felds können beliebige Zeichenketten oder Platzhalter eingesetzt werden. Werden beim Versand einer E-Mail Zeilenumbrüche im Inhalt des E-Mail-Header-Felds gefunden, dann werden diese komplett entfernt.

 

Feld löschen Löscht den gewählten Eintrag.

 

 

E-Mails eine digitale Signatur hinzufügen (S/MIME)

Für die Nutzung dieser Funktion sind die entsprechenden Zertfikate notwendig.

 

Die Verwendung dieser Option führt zu einer höheren Serverlast, Vergrößerung der E-Mails und damit zu einer Verlängerung der Versandzeit.

 

Hinweise:

  • Im PHP müssen die OpenSSL-Funktionen aktiviert sein, ansonsten ist eine Nutzung unmöglich.
  • Zur Erzeugung der S/MIME-Signatur müssen temporäre Dateien erstellt werden. Diese Dateien werden immer im userfiles/<id des nutzer>/export-Verzeichnis erstellt. In diesem Verzeichnis muss genügend freier Speicherplatz verfügbar sein, ebenso müssen die Lese-/Schreibrechte korrekt gesetzt werden.

 

Schlägt Signierung fehl, E-Mail unsigniert versenden. Aktivieren Sie diese Einstellung, um die E-Mail unsigniert versenden zu lassen, falls bei der Signatur-Erzeugung Fehler auftreten.

 

Signierte E-Mails als Klartext-E-Mails versenden. Versendet die E-Mails als Klartext-E-Mails, so dass diese ebenfalls von älteren E-Mail-Programmen, ohne S/MIME-Unterstützung, dargestellt werden.

 

S/MIME-Zertifikat öffentlicher Schlüssel Geben Sie den öffentlichen Schlüssel des Zertifikats an.

Hinweis: Es ist ebenfalls möglich ein absolutes Verzeichnis und Dateinamen für das Zertifikat anzugeben, es muss vor dem Verzeichnis file:// angegeben werden. z.B. Datei cert.crt liegt im absoluten Verzeichnis /home/srv/www/certs/cert.crt, dann geben Sie file:///home/srv/www/certs/cert.crt an.

 

S/MIME-Zertifikat privater Schlüssel Geben Sie den privaten Schlüssel an.

Hinweis: Es ist ebenfalls möglich ein absolutes Verzeichnis und Dateinamen für das Zertifikat anzugeben, es muss vor dem Verzeichnis file:// angegeben werden. z.B. Datei cert.pem liegt im absoluten Verzeichnis /home/srv/www/certs/cert.pem, dann geben Sie file:///home/srv/www/certs/cert.pem an.

 

Passwort für privaten Schlüssel Geben Sie das Passwort für den privaten Schlüssel an. Die Angabe des Passworts ist ein Pflichtfeld.

 

 

E-Mails eine DomainKey-/DKIM-Signatur hinzufügen

Für die Nutzung dieser Funktion ist das entsprechende Zertfikat notwendig, ebenfalls müssen die DNS-Einträge der Domain korrekt gesetzt werden.

 

Die Verwendung dieser Option führt zu einer höheren Serverlast, Vergrößerung der E-Mails und damit zu einer Verlängerung der Versandzeit.

 

Hinweise:

  • Im PHP müssen die OpenSSL-Funktionen aktiviert sein, ansonsten ist eine Nutzung unmöglich.
  • Die Option "DomainKey-Signatur hinzufügen" sollte nicht mit PHP mail() verwendet werden, da beim Versand per PHP mail() die Reihenfolge der E-Mail-Header nicht festgelegt werden kann, dies ist jedoch notwendig um den DomainKey-Eintrag an die erste Stelle, lt. RFC, zu setzen.

 

Schlägt Signierung fehl, E-Mail unsigniert versenden. Aktivieren Sie diese Einstellung, um die E-Mail unsigniert versenden zu lassen, falls bei der Signatur-Erzeugung Fehler auftreten.

 

DKIM-Signatur hinzufügen. Erzeugt den DKIM-Header und fügt diesen zum E-Mail-Header hinzu.

 

DomainKey-Signatur hinzufügen. Erzeugt den DomainKey-Header und fügt diesen zum E-Mail-Header hinzu.

 

DomainKeys/DKIM Selektor Geben Sie den DomainKeys/DKIM Selektor an.

 

DomainKeys/DKIM Privater Schlüssel Geben Sie den privaten Schlüssel an.

Hinweis: Es ist ebenfalls möglich ein absolutes Verzeichnis und Dateinamen für das Zertifikat anzugeben, es muss vor dem Verzeichnis file:// angegeben werden. z.B. Datei cert.pem liegt im absoluten Verzeichnis /home/srv/www/certs/cert.pem, dann geben Sie file:///home/srv/www/certs/cert.pem an.

 

Passwort für privaten Schlüssel Geben Sie das Passwort für den privaten Schlüssel an. Die Angabe des Passworts ist optional.

 

 

E-Mail-Versand mit mehreren Threads

Der Versand mit mehreren Threads wird durch http(s)://-Aufrufe mit cURL ausgeführt, da PHP von Haus aus keine Threads unterstützt. Die Aufrufe sind in Wirklichkeit keine Threads sondern dies wird als "fork" bezeichnet, es wird durch PHP ein cURL-Prozess erzeugt, der mehrere http(s)://-Aufrufe ausführt. Diese mehreren http(s)://-Aufrufe führen zu einer starken Serverbelastung, da jeder Aufruf die E-Mails erzeugt und anschließend versendet.

Durch die starke Serverbelastung sollte immer ein eigener Webserver verwendet werden, auf einem normalen Webspace-Account könnten ansonsten während des Versands andere Webpräsenzen nur schwer oder gar nicht mehr aufrufbar sein.

 

Wie wird der Versand durchgeführt?

Bei Ausführung der http(s)://-Aufrufe wird jeweils das Script sendmail_mt.php mehrfach aufgerufen, die Anzahl richtet sich nach der Angabe im Feld "Anzahl Versandthreads". Per HTTP POST werden dem Script sendmail_mt.php die Daten zum E-Mail-Text und Datensätze der Empfänger übermittelt. Die Anzahl Empfänger richtet sich nach der Angabe im Feld "Maximale Anzahl E-Mails, die pro Versandthread versendet werden dürfen". Das sendmail_mt.php personalisiert die E-Mail für den jeweiligen Empfänger und versendet diese.

Wichtig für SuperWebMailer: Es sollte bei jedem E-Mailing und Responder immer die Option "Cache für E-Mail-Versand verwenden" unter dem E-Mail-Betreff aktiviert werden, dadurch muss nicht bei jeder E-Mail der E-Mail-Text im HTML- und Text-Format erneut übertragen werden. Dies führt zu einer Verringerung der Menge an Daten, die per HTTP POST übermittelt werden müssen.

 

Notwendige Einstellungen für einen schnelleren Versand

Die mögliche Laufzeit von PHP-Scripten muss in der php.ini bzw. für die virtuelle Webpräsenz erhöht werden, da in der Standard-Einstellung von 30 Sekunden kein Versand mit mehreren Threads ausführbar ist. Ein empfohlener Wert liegt bei 4-5 Minuten, um Scriptabbrüche während des Versands zu vermeiden.

Die Anzahl Versandthreads solle niedrig gewählt werden, höchstens 2-3 und dafür der Wert "Maximale Anzahl E-Mails, die pro Versandthread versendet werden dürfen" höher gewählt werden, z.B. 20 oder 30. Dies verringert die Versandzeit, da jeder http(s)://-Aufruf Zeit für den Verbindungsaufbau und Übermittlung der Daten per HTTP POST benötigt.

Nur SuperWebMailer: Bei jedem E-Mailing, Responder und Verteilerlisten sollte die Anzahl vorzubereitender E-Mails auf 1000 oder höher eingestellt werden, nur dann stehen für den späteren Versand genügend E-Mails in der Ausgangswarteschlange zur Verfügung.

Nur SuperMailingList Professional: Bei jeder Verteilerlisten sollte die Anzahl vorzubereitender E-Mails auf 1000 oder höher eingestellt werden, nur dann stehen für den späteren Versand genügend E-Mails in der Ausgangswarteschlange zur Verfügung.

 

Wie viel schneller ist der Versand?

Nur bei einer höheren Anzahl E-Mails von mehr als 1000 ist es sinnvoll den multi-threaded Versand zu aktivieren. Je nach Geschwindigkeit und Auslastung des Webservers und Annahme-Geschwindigkeit der E-Mails durch den Zielserver beträgt die Einsparung mehrere Sekunden, bei einer höheren Anzahl entsprechend mehrere Minuten oder Stunden.
Hinweis: Unter Einstellungen - Optionen, E-Mail-Versand kann die Option "Booster verwenden" aktiviert werden, mit einer hohen Scriptlaufzeit für PHP-Scripte ist ebenfalls eine höhere oder gleich hohe Versandgeschwindigkeit möglich, da die zusätzlichen http(s)://-Aufrufe entfallen.

 

Fehler während des Versands

Alle Fehler während des Versands finden Sie nur im Ereignisprotokoll und bei schweren Fehlern im error_log des Server bzw. virtuellen Webpräsenz.

 

HTTP Fehler 403 Der Zugriff auf das Script sendmail_mt.php wurde verweigert. Auf dem Server gibt es Limits bei http(s)://-Aufrufen auf das gleiche Script, diese Limits müssen durch den Serverbetreiber aufgehoben werden oder Anzahl Versandthreads verringern.

 

HTTP Fehler 410 Der Server ist abgestürzt oder wurde neu gestartet. Die Anzahl Versandthreads und Anzahl zu versendender E-Mails sollte verringert werden.

 

HTTP Fehler 413 oder 414 Die per POST übermittelte Datenmenge war zu groß, der Wert für "Maximale Anzahl E-Mails, die pro Versandthread versendet werden dürfen" sollte verringert werden. Prüfen Sie ebenfalls die PHP Einstellung für post_max_size.

Für SuperWebMailer: Die Option "Cache für E-Mail-Versand verwenden" sollte aktiviert werden, damit nur einmal der Text der E-Mail im HTML- und Text-Format übermittelt werden muss.

 

HTTP Fehler 500 oder 503 Die per HTTP POST übermittelte Datenmenge ist zu hoch oder es trat ein interner Serverfehler auf, der Wert für "Maximale Anzahl E-Mails, die pro Versandthread versendet werden dürfen" sollte verringert werden.

Für SuperWebMailer: Die Option "Cache für E-Mail-Versand verwenden" sollte aktiviert werden, damit nur einmal der Text der E-Mail im HTML- und Text-Format übermittelt werden muss.

 

HTTP Fehler 504 oder Einträge im error_log mit "Connection timed out" Es ist zu einer Zeitüberschreitung/Timeout gekommen, das Script sendmail_mt.php wurde abgebrochen, da es zu lange ausgeführt wurde.
  • Die Angabe im Feld "Maximale Anzahl E-Mails, die pro Versandthread versendet werden dürfen" muss verringert werden, damit der Versand schneller durchgeführt und das Script schneller beendet wird.
  • Die Script-Laufzeit von PHP-Scripten muss erhöht werden.
  • Für Webserver mit Apache & nginx: Der Wert für proxy_read_timeout und die Timeouts für FastCGI müssen erhöht werden. Siehe dazu auch How to fix FastCGI timeout issues in Plesk?