Einbindung des E-Mail-Formulars

Wenn Sie ein Formular erstellen möchten, mit dem jeder Leser Ihnen eine E-Mail schreiben kann, können Sie das CGI-Programm Mailback verwenden, das auf unserem Haupt-WWW-Server zur Verfügung steht. Das passende Formular sieht so aus:

<form method="POST" action="/exec/Mailback">
<input type="text" name="email" value="" style="display:none" />
<input type="text" name="firstname" value="" style="display:none" />
<input type="text" name="lastname" value="" style="display:none" />
<input type="text" name="address" value="" style="display:none" />
<input type="text" name="subject" value="" style="display:none" />
<textarea name="message" style="display:none"></textarea>
<input type="hidden" name="lang" value="LANG" />
<input type="hidden" name="Mail" value="USERID" />
<input type="hidden" name="Cert" value="PEMDATA" />
<input type="hidden" name="Code" value="TOKEN" />
<input type="hidden" name="Need" value="ONOFF" />
<input type="hidden" name="Page" value="URL" />
<input type="hidden" name="Back" value="URL" />
<input type="hidden" name="Fail" value="URL" />
<input type="hidden" name="None" value="TEXT" />
<pre>
Name:           <input name="Name" size="40" />
Organisation:   <input name="Area" size="40" />
Postanschrift:  <input name="Home" size="40" />
E-Mail-Adresse: <input name="Addr" size="40" />
Thema:          <input name="Subj" size="40" value="WWWMAIL" />
</pre>
<textarea name="Text" rows="10" cols="58"></textarea><br />
<p>Datenschutzhinweis: ...</p>
<input type="submit" value="Absenden" />
<input type="reset"  value="Löschen" />
</form>

Die sechs optionalen Zeilen mit name="email" bis name="message" dienen als Falle für Spam-Roboter: Die Eingabefelder sind unsichtbar. Wenn trotzdem etwas eingetragen wird, dann kann es sich nur um einen Roboter handeln, dann wird keine E-Mail verschickt. Sie können nach Wahl keine, eine oder mehrere dieser Zeilen irgendwo in Ihr Formular einstreuen.

In der optionalen Zeile mit name="lang" sollte anstelle von LANG der Code der Sprache stehen, in der eventuelle Fehlermeldungen erscheinen sollen. Unterstützt werden de (deutsch) und en (englisch).

In der notwendigen Zeile mit name="Mail" müssen Sie die Zeichenkette USERID durch die E-Mail-Adresse desjenigen ersetzen, an den die E-Mail geschickt werden soll, dabei sind ausschließlich lokale Nutzerkennungen, Aliasnamen oder Verteilernamen mit oder ohne @uni-muenster.de erlaubt.

In der optionalen Zeile mit name="Cert" kann anstelle von PEMDATA das Zertifikat des Empfängers im PEM-Format stehen, wenn die E-Mail verschlüsselt werden soll. (Unabhängig davon wird die E-Mail immer vom technischen Absender (»Sender«) httpd@uni-muenster.de signiert, als inhaltlicher Absender (»From«) und als Antwortadresse (»Reply-To«) wird die vom Kunden eingegebene Adresse angegeben.)

In der optionalen Zeile mit name="Code" kann anstelle von TOKEN eine beliebige Zeile stehen, der Inhalt wird in die Kopfzeile X-Mailback-Code eingetragen. (Normalerweise wird diese Zeile weggelassen, sie ist nur sinnvoll, wenn die E-Mails automatisiert weiterverarbeitet werden.)

In der optionalen Zeile mit name="Need" sollte anstelle von ONOFF stehen, ob eine Absenderangabe erzwungen werden soll (on, Eingabefelder "Name" und "Addr" müssen angegeben werden) oder ob anonyme Mails erlaubt sein sollen (off). Wenn diese Zeile fehlt, wird off verwendet.

In der optionalen Zeile mit name="Page" sollte anstelle von URL die Adresse einer WWW-Seite stehen, die als Vorlage für die Ergebnisseite dienen soll. Diese Vorlage wird über das WWW geladen und sollte dann eine ganz normale HTML-Seite sein, welche an der Stelle, wo das Ergebnis eingefügt werden soll, exakt den folgenden HTML-Kommentar enthält:

<!--TEXT-->

Falls die Vorlage irgendwelche Querverweise enthält (<a href="...">, <img src="..." />, <link href="..." /> usw.), dann beachten Sie bitte, dass diese Querverweise relativ zu den Adressen https://www.uni-muenster.de/exec/Mailback und https://sso.uni-muenster.de/exec/Mailback funktionieren sollten. Querverweise auf den Haupt-WWW-Server sollten also am besten mit dem Schrägstrich »/« anfangen, z. B. <a href="/IT/Mailback.html">.

Falls die Zeile mit name="Page" fehlt oder die darin angegebene Vorlage nicht geladen werden kann, dann wird eine eingebaute Primitivvorlage benutzt.

In der optionalen Zeile mit name="Back" sollte anstelle von URL die Adresse einer WWW-Seite stehen, auf die auf der Erfolgsseite mit einem »Zurück«-Link verwiesen werden soll.

In der optionalen Zeile mit name="Fail" sollte anstelle von URL die Adresse einer WWW-Seite stehen, auf die auf einer Fehlermeldungsseite mit einem »Zurück«-Link verwiesen werden soll.

In der optionalen Zeile mit name="None" sollte anstelle von TEXT der Text stehen, der als keine Eingabe zu verstehen sein soll. Das ermöglicht es, Eingabefelder beispielsweise mit value="Bitte hier eintippen" vorzubesetzen. Wenn dann auch das Feld mit name="None" mit der identischen Angabe value="Bitte hier eintippen" vorbesetzt ist und der Nutzer den Text nicht ändert, dann erkennt das Mailback-Programm, dass der Nutzer nichts eingetippt hat.

In der optionalen (aber dringend empfohlenen) Zeile mit name="Subj" sollte anstelle von WWWMAIL ein sinnvoller Text stehen, der Inhalt wird in die Betreff-Kopfzeile eingetragen.

Wenn Sie fortgeschrittene Kenntnisse im Umgang mit Formularen erworben haben, können sie das Formular natürlich nach Ihren Wünschen ändern, solange die Angaben name="Xxxx" erhalten bleiben, da diese durch das Mailback-Programm vorgegeben sind. (Es ist nicht möglich, <select multiple ...> zu verwenden, da von jedem Eingabefeld nur ein Wert akzeptiert wird.)

Denken Sie daran, einen für Ihren Anwendungszweck passenden Datenschutzhinweis zu ergänzen.

Eigene zusätzliche Eingabefelder

In diesem Fall können Sie auch die weiteren vom Mailback-Programm verwendeten Feldnamen nutzen, etwa so:

Fachsemester:  <input type="text" name="F000" value=""
/><input type="hidden" name="N000" value="Fsem"
/><input type="hidden" name="R000" value="on" />

Die Ziffern 000 können Sie durch beliebige Zahlen zwischen 000 und 999 ersetzen, dann werden auch die hier angegebenen Daten in die versandte E-Mail eingefügt. Die Feldnamen Fnnn sind für die Inhalte vorgesehen, die Feldnamen Nnnn für die Feldnamen, die in der E-Mail verwendet werden, und die Feldnamen Rnnn für Angaben (genau wie beim Feld Need), ob das Ausfüllen des jeweiligen Feldes erforderlich ist.

Das Eingabefeld mit name="Text" muss unabhängig von der Angabe im Feld Need immer mit einem Inhalt versehen werden – eine E-Mail ohne Text macht ja keinen Sinn. Falls aufgrund zusätzlicher Eingabefelder doch einmal auf das Feld mit name="Text" verzichtet werden soll, schreibt man einfach:

<input name="Text" type="hidden" value="Ende">.

Captcha

Wenn Ihnen obige Spamfalle als Schutz nicht ausreicht, können Sie auch mit einem einfachen Captcha arbeiten:

17 + 4 =       <input type="text" name="Captcha" value=""
/><input type="hidden" name="Captcha1" value="13"
/><input type="hidden" name="Captcha2" value="19"
/><input type="hidden" name="Captcha3" value="292" />

Die drei versteckten Eingabefelder geben in verschleierter Form das in das sichtbare Feld einzutippende Ergebnis an. Welche positiven Zahlen Sie dabei angeben, ist Ihnen überlassen, nur das Ergebnis muss stimmen. Die Formel » Captcha × Captcha1 + Captcha2 = Captcha3 « wird hoffentlich kein Spamroboter erraten und gegen menschliche Spammer hilft auch kein Captcha.

Um nicht nur eine feste, sondern verschiedene zufällig ausgewählte Rechenaufgaben zu stellen, müssen Sie die Seite mit dem Formular durch SSI-Anweisungen oder ein Skript erzeugen lassen. Eine einfache Lösung mit SSI, bei der abhängig von der aktuellen Sekunde eine von zehn verschiedenen Aufgaben gestellt wird, sieht so aus:

<!--#config timefmt="%S" --><!--#set var="x" value="$DATE_LOCAL" -->
<!--#if expr="$x = /.0/" -->

(Rechenaufgabe mit Eingabefeldern wie oben)
<!--#elif expr="$x = /.1/" -->
(andere Rechenaufgabe mit Eingabefeldern)
<!--#elif expr="$x = /.2/" -->
(andere Rechenaufgabe mit Eingabefeldern)
(usw.)
<!--#elif expr="$x = /.8/" -->
(andere Rechenaufgabe mit Eingabefeldern)
<!--#else -->
(andere Rechenaufgabe mit Eingabefeldern)
<!--#endif -->

Fehlersuche

Für das gesamte Formular gilt: Fehlerhafte Konfigurationsangaben in den versteckten Feldern führen zum Abbruch des Programms ohne Fehlermeldung, um eventuellen Angreifern nicht unnötig Informationen zu geben. Um während der Entwicklung Ihres individuellen Formulars doch entsprechende Fehlermeldungen zu erhalten, ergänzen Sie bitte folgende Angabe, die Sie bei Inbetriebnahme bitte wieder entfernen:

<input type="hidden" name="debug" value="1" />

Andere Feldnamen als die oben genannten werden vom CGI-Programm Mailback nicht erkannt und ignoriert.