Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge

 
Erweiterte Suche

5393 Beiträge in 1148 Themen- von 941 Mitglieder - Neuestes Mitglied: Pöt2

07.09.2010 11:45
ProfiHost - SupportforumDiskussionsmöglichkeiten mit anderen KundenProgrammiersprachen (PHP/Perl/C/Python)[perl: sendmail] X-User, X-Uri, X-Path aus e-Mail Text entfernen
Seiten: [1]   Nach unten
Drucken
Autor Thema: [perl: sendmail] X-User, X-Uri, X-Path aus e-Mail Text entfernen  (Gelesen 1752 mal)
sunfish
Newbie
*
Offline Offline

Beiträge: 9


Profil anzeigen
« am: 10.02.2010 16:00 »

Hallo,

verwendet man man sendmail nicht den Paramter "-f absender@mail.com", werden in das e-Mail Angaben zu X-User, X-Uri, X-Path in die dritte Zeile geschrieben, nachdem der Mailtext zusammengesetzt wurde, wenn das Mail versendet wird.

Hier ein Code-Beispiel:

Code:
# only those characters are allowed in an emailaddress
# a-z A-Z 0-9 _ \- \+ \* \$ \. \@
# if there are other characters in the emailaddress -> EXIT
die ('wrong email:') if ($email=~ /[^a-zA-Z0-9_\-\+\*\$\.\@]/);

# open the file mail.text in the same directory
open (MAILTEXT, "mail.txt") || die "mail.txt is not found.\n";
@MYTEXT=<MAILTEXT>;
close(MAILTEXT);

# if sendmail parameter -f is not set, "X-User, X-Uri, X-Path" will be written in the email bodytext
open (MYMAIL, "|/usr/sbin/sendmail -t -f absender@mail.com") || die "SENDMAIL is out of order.\n";

print MYMAIL "From: absender@mail.com\n";
print MYMAIL "Reply-To: absender@mail.com\n";
print MYMAIL "Return-Path: absender@mail.com\n";
print MYMAIL "Errors-To: absender@mail.com\n";
print MYMAIL "To: \"$firstname $surname\"<$email}>\n";
print MYMAIL "Subject: Write Subject here \n";
print MYMAIL "X-Mailer: Script\n";
print MYMAIL "Content-type: text/plain; charset=\"iso-8859-1\"\n";
print MYMAIL "Content-Transfer-Encoding: 8bit\n\n";

foreach $TEXTROW (@MYTEXT) {
$TEXTROW =~ s/[\n]//;
$TEXTROW =~ s/[\r]//;
print MYMAIL "$TEXTROW\n";
}
close (MYMAIL);
Gespeichert
ProfiHost - Technik
Administrator
Hero Member
*****
Offline Offline

Beiträge: 1671


Profil anzeigen
« Antworten #1 am: 11.02.2010 08:55 »

Hallo!

Im Quelltext sind momentan mehrere Fehler:
Code:
print MYMAIL "To: \"$firstname $surname\"<$email}>\n";
sollte
Code:
print MYMAIL "To: \"$firstname $surname\"<$email>\n";
sein. Dort ist eine "}" zu viel hinter $email.

Desweiteren stehen die absender Adressen in " somit muss das @ escaped werden \@.

Ich habe das Script auch ohne -f EMAIL getestet und auch dort kommt es korrekt an.

Code:
# only those characters are allowed in an emailaddress
# a-z A-Z 0-9 _ \- \+ \* \$ \. \@
# if there are other characters in the emailaddress -> EXIT
$email = "XXXXXXXXXXXX";

die ('wrong email:') if ($email=~ /[^a-zA-Z0-9_\-\+\*\$\.\@]/);

# open the file mail.text in the same directory
open (MAILTEXT, "mail.txt") || die "mail.txt is not found.\n";
@MYTEXT=<MAILTEXT>;
close(MAILTEXT);

# if sendmail parameter -f is not set, "X-User, X-Uri, X-Path" will be written in the email bodytext
open (MYMAIL, "|/usr/sbin/sendmail -t") || die "SENDMAIL is out of order.\n";

print MYMAIL "From: absender\@mail.com\n";
print MYMAIL "Reply-To: absender\@mail.com\n";
print MYMAIL "Return-Path: absender\@mail.com\n";
print MYMAIL "Errors-To: absender\@mail.com\n";
print MYMAIL "To: \"$firstname $surname\"<$email>\n";
print MYMAIL "Subject: Write Subject here \n";
print MYMAIL "X-Mailer: Script\n";
print MYMAIL "Content-type: text/plain; charset=\"iso-8859-1\"\n";
print MYMAIL "Content-Transfer-Encoding: 8bit\n\n";

foreach $TEXTROW (@MYTEXT) {
        $TEXTROW =~ s/[\n]//;
        $TEXTROW =~ s/[\r]//;
        print MYMAIL "$TEXTROW\n";
}
close (MYMAIL);

Code:
Received: (qmail 29887 invoked from network); 11 Feb 2010 08:53:08 +0100
Received: from XXXXXXXXXX (HELO XXXXXXXXXXXXXXX) (XXXXXXXXXXXXXXXXXXXXXXXX)
    by XXXXXXXXXXXXXXXXXX (qpsmtpd/0.82) with (AES256-SHA encrypted) ESMTPS; Thu, 11 Feb 2010 08:53:08 +0100
Received: (qmail 32541 invoked by uid 1004); 11 Feb 2010 08:53:01 +0100
Date: 11 Feb 2010 08:53:01 +0100
Message-ID: <20100211075301.32540.qmail@XXXXXXXXXXXXXX>
From: XXXXXX
Reply-To: XXXXXXX
Errors-To: XXXXXX
To: " " <XXXXXXXXXXXXXXXXXXXXXXXXX>
Subject: Write Subject here
X-Mailer: Script
Content-type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
X-User: 1013
X-Path: L2J1Y252eXJz
X-SpamAssassin:  0.0
MIME-Version: 1.0

sdfsdf
sfs
dfs
df
sdfsdfsdfsdfd
Gespeichert

Mit freundlichen Grüßen
Ihr ProfiHost Team
sunfish
Newbie
*
Offline Offline

Beiträge: 9


Profil anzeigen
« Antworten #2 am: 11.02.2010 09:20 »

Vielen Dank für die Korrektur und die Rückmeldung. Die zwei Codefehler sind durch das Umschreiben für das Forum entstanden.

Ich hatte das Perl Script auf Server 462 ohne -f EMAIL im Einsatz und dort erschienen reproduzierbar drei Zeilen mit X-User, X-Uri, X-Path im e-Mail Text, die sich auch nicht per regEx entfernen ließen. Der "-f EMAIL"-Schalter hat dann die Lösung des Problems gebracht.
Gespeichert
Michael
Full Member
***
Offline Offline

Beiträge: 171


Profil anzeigen WWW
« Antworten #3 am: 13.02.2010 22:50 »

Hallo,

da X-URI aufführst, gehe ich davon aus, daß der sendmail-Aufruf Teil eines Skriptes einer Webseite ist. Bei einem Aufruf z.B. in einem Cronjob wird m.E. nach kein X-URI eingefügt (s.a. obiger Header des Testes aus der ersten Antwort). Dies könnte auch der Grund für die unterschiedlichen Ergebnisse sein.

Falls das Skript Daten wie Betreff oder Absenderadresse aus Formulardaten bezieht, solltest Di vielleicht die Verwendung des Moduls Mail::Sendmail in Erwägung ziehen, da ein Direktaufruf von Sendmail relativ anfällig für Manipulationen ist, wenn nicht alle Header-Daten entsprechend gefiltert werden.
Evtl. löst das auch nebenbei noch Dein Problem.

Gruß
Michael
Gespeichert

Inlinestrecken im Rheinland ... und anderswo
http://www.inlinestrecken.de
Inlinestrecken-Such-Katalog
http://suche.inlinestrecken.de
Seiten: [1]   Nach oben
Drucken
Gehe zu:  

Theme orange-lt created by panic