Mailversand aus lokaler Typo3-Installation

Das im folgenden beschriebene Szenario bezieht sich auf einen Rechner mit einer lokalen TYPO3-Installation. Im Folgenden beschreibe ich, was wir konfigurieren müssen, damit wir (bzw. Besucher der Website) aus TYPO3 heraus Mails versenden können - und zwar nach draussen über einen Freemailer (z.B. GMX).

 

Die erste Beschreibung bezieht sich auf Windows mit dem Mercury Mailserver, wie er beispielsweise in XAMPP enthalten ist.

 

Die zweite Beschreibung behandelt dann eine Installation unter Linux, wobei hier die sendmail-Alternative Postfix zum Einsatz kommt.

 

Zwei grundlegende Punkte sind jeweils zu konfigurieren: PHP und der Mailserver.

Zunächst haben wir in TYPO3 auf irgendeiner Seite (z.B. Impressum) ein Inhaltselement der Kategorie "Form" (=Formular) angelegt. Das Formular bauen wir uns als Kontaktfeld. Hier definieren wir vor allem die E-Mail Adresse, an welche an welche das Formular/Kontaktfeld mal versandt werden soll.

Es lassen sich beliebig viele Mailformulare in einer TYPO3-Installation einbauen (z.B. weil sie mehrere Webseiten beinhaltet) und für jedes Formular kann eine andere beliebige Empfängeradresse hinterlegt werden.

 

 

unter Windows:

Als nächstes nehmen wir uns die Datei "php.ini" vor. Hier stehen alle Parameter drin, die PHP verwendet (TYPO3 verwendet PHP...). Die relevante Datei liegt im Verzeichnis ..\xampp\apache\bin (anstelle der Punkte eben das Installationsverzeichnis eures Apache) und NICHT im PHP-Verzeichnis. Die php.ini könnt ihr ganz einfach mit dem windows-eigenen Editor öffnen. In der Datei suchen wir die Stelle für das Modul "mail_function" und tragen dort folgendes ein (bzw. nehmen die Semikolons vor den Zeilen weg):

SMTP = localhost

(der Mailserver ist lokal auf dem gleichen Rechner zu suchen, anderenfalls kommt hier die IP rein)

smtp_port = 25

(auf diesem Port wartet der Mailserver darauf angesprochen zu werden)

sendmail_from = xyz@gmx.de

(Diese Stelle ist wichtig, denn diese Adresse wird von PHP bei der erzeugten Mail als Absender verwendet. Falls ihr - so wie in diesem Beispiel - extern über einen Freemailer agiert, muss hier die exakte Mailadresse des Anbieter rein, da dieser sonst die Mail nicht entgegennimmt!)

 

Es ist theoretisch möglich, in der php.ini bei SMTP gleich einen externen Mailserver einzutragen (z.B. mail.gmx.net). Das wid jedoch nicht funktionieren, da von diesem Mailserver keine Mails ohne die GMX-Zugangsdaten entgegengenommen werden. Und die können leider nicht in der php.ini hinterlegt werden. Deshalb kommen wir um einen lokalen Mailserver nicht herum.

 

Darum wenden wir uns als nächstes dem Mailserver Mercury zu. Für uns wichtig sind die Module "S" (I.) und "C" (II.). Falls ihr das Modul "E" statt "C" dort seht, könnt ihr das unter "Protocol modules" (III.) umstellen. Das Modul "S" - SMTP-Server - ist dafür zuständig, Mails von aussen entgegen zu nehmen ("von aussen" heisst, von ausserhalb des Programms; in unserem Fall von TYPO3 bzw. PHP). Das Modul "C" - SMTP-Client - nimmt die Verbindung nach extern zu unserem Mailanbieter auf und versendet alle Mails über den.

 

 

Das Modul "S" (das - wie beschrieben - die Mails entgegennimmt) konfigurieren wir wie folgt:

Unter "General" gibt's eigentlich nichts besonderes zu beachten. Name ist frei wählbar und der Mailserver lauscht auf Port 25 nach eigehenden Mails.

Interessant und wichtig ist der Reiter "Connection control"! Hier setzen wir die Punkte wie auf dem Bild zu sehen. Punkt I verbietet grundsätzlich erst einmal, eingehende Mails einfach weiterzuleiten (Spam).

 

Anschliessend definieren wir - wie auf dem Bild zu sehen - eine Ausnahme (IP 127.0.0.1 ist "localhost", also der gleiche Rechner; läuft TYPO3 auf einem anderen Rechner im Netz, muss da natürlich die entsprechende IP rein). Mails von dieser IP dürfen also weitergeleitet werden.

 

Mit dem zweiten Haken bestimmen wir, dass die Ausnahmeregel auch verwendet werden soll.

 

 

Das Modul "C" letztendlich nimmt nun die Verbindung zu unserem Mailprovider (hier GMX) auf und versendet die Mails über ihn. Dazu müssen wir - wie auf dem Bild zu sehen - die Adresse des Mailservers eintragen und unseren Zugangsnamen samt Passwort. Die restlichen Daten (wie unser Mailservername) sind hierfür nicht von Belang.

 

Das war's dann auch schon.

 

Wenn jetzt jemand in unserem Kontaktformular Daten eingetragen hat und diese absendet, dann nimmt TYPO3 diese entgegen. Mitsamt der in TYPO3 angegebenen Empfängeradresse wird das ganze - bildlich gesprochen - von PHP entgegengenommen, um die Absenderadresse ergänzt und an unser Modul "S" übergeben. Dies wiederum hat die Erlaubnis, die so entstandene Mail weiterzuleiten und das Modul "C" versendet jetzt all das über GMX.

 

Und so landet das Ergebnis schlussendlich dort, wo es hinsoll - beim Empfänger im Postfach!

 

 

unter Linux:

Auch hier nehmen wir uns die Datei "php.ini" vor. Die relevante Datei liegt im Verzeichnis /etc/php(5)/... In der Datei suchen wir die Stelle für das Modul "mail_function" und tragen dort folgendes ein bzw. nehmen die Semikolons vor den Zeilen weg:

 

sendmail_path = /usr/sbin/sendmail -t -f irgend@was.de

 

Der Pfad definiert, welches Programm für die weitere Mailzustellung herangezogen werden soll. Bei der Installation von "postfix" kann dort trotzdem "sendmail" stehen bleiben, da "postfix" das abfängt.

 

Der Schalter -t (read message for recipients. To:, Cc:, and Bcc: lines will be scanned for recipient addresses. The Bcc: line will be deleted before transmission) ist für uns hier unbedeutend.

Schalter -f (sets the name of the "from" person - i.e., the sender of the mail) fügt (analog zur Windows-Variante) einen Mail-Absender hinzu.

Da z.B. GMX nur Mails von registrierten Usern entgegennimmt, könnte man hier zwar auch wieder gleich die entsprechende GMX-Adresse festlegen. Es fehlen jedoch noch die GMX-Zugangsdaten (in der php.ini nicht hinterlegbar), weswegen wir ja einen lokalen Mailserver (Postfix) dazwischen schalten müssen. Wir nutzen also Postfix, um die auf dem Screenshot erkennbare "vorläufige" Absenderadresse umzuschreiben (dazu später mehr).

Dann editieren wir die Konfiguration von Postfix: /etc/postfix/main.cf.

Test äöü