Sven Rautenberg: Spammender Formmailer ist das Problem!

Beitrag lesen

Moin!

vielen Dank für deine Hilfe. Ich habe den Formmailer offline genommen. Allerdings würde ich das gerne wieder zum Laufen bringen. Reicht es wenn ich den einen Zeilenumbruch entferne? Ist es dann ausreichend validiert?

Nein.

Also aus
print MAIL "Reply-to: $FORM{'Email'} ($FORM{'Name'})\n";

einfach das machen:
print MAIL "Reply-to: $FORM{'Email'} ($FORM{'Name'})";

Der von dir selbst im String enthaltene Zeilenumbruch ist wichtig für einen Korrekten Mailheader. Der MUSS drinbleiben.

Das Problem ist, dass in $FORM{'Email'} eben nicht nur Strings wie
"mailadresse@example.com"
drinstehen können, sondern auch Strings wie
"mailadresse@example.com\n
Bcc: benachrichtigungsadresse@spammer.tld\n
Subject: Eigenes Subject\n
\n
Hello, Spam-Receiver,\n
buy Viagra at very low prices..."

(Als Kennzeichnung für die Zeilenumbrüche habe ich hier auch mal \n reingeschrieben, in Wirklichkeit übermittelt der Spammer dir natürlich die richtigen Zeilenumbruchzeichen LF oder CRLF.)

Wenn dein Skript daraus also die Mail zusammenbaut, erhält dein sendmail-Programm wesentlich mehr Headerzeilen, welche den Versand beispielsweise als Bcc an fremde Mailadressen realisiert, ohne dass du das willst.

Sämtliche Felder, die in den Mailheader gehen, auf enthaltene Zeilenumbruchzeichen zu prüfen, und diese mindestens zu entfernen, alternativ auch den Mailversand zu verweigern, ist das mindeste, was du tun solltest. Bedenke, dass "\n" systemabhängig sein kann und nicht für sämtliche möglichen Zeilenumbrüche steht.

Kennst du zufällig einen kostenlosen Formmailer, der nicht so anfällig für Spam ist oder kann man das Script von mir irgendwie anpassen?

Bei SELFHTML aktuell gibts einen Formmailer.

- Sven Rautenberg

--
My sssignature, my preciousssss!