php mail Problem

BMG

New Member
Hallo Zusammen.

Für unser Kontaktformular oder Bestellbestätigungen nutzen wir die mail-funktion von php.
Habe seit Mitte November 2022 folgendes Problem:
Ich übergebe:
mail_att("anmich@meineDomain.de","Betreff", "Peter Mustermann", "peter.mustermann@t-online.de", "peter.mustermann@t-online.de");

Wenn die Mail bei mir ankommt steht bei Von: "peter.mustermann@meineDomain.de" anstatt "peter.mustermann@t-online.de".
Der Replay funktioniert, also an "peter.mustermann@t-online.de".

Woran kann das liegen?
 
Ungetestet, sollte aber funktionieren:
Vor dem Aufruf der "mail_att" Funktion die "From:" Adresse setzen:
Code:
ini_set("sendmail_from", "peter.mustermann@t-online.de");
 
Ungetestet, sollte aber funktionieren:
Vor dem Aufruf der "mail_att" Funktion die "From:" Adresse setzen:
Code:
ini_set("sendmail_from", "peter.mustermann@t-online.de");
Habe nun folgendes versucht, jedoch ohne Erfolg:
Code:
function mail_att($to, $subject, $message, $sender, $sender_email, $reply_email) {
    $mime_boundary = "-----=" . md5(uniqid(microtime(), true));

    $header  ="From:".$sender."<".$sender_email.">\n";
    $header .= "Reply-To: ".$reply_email."\n";
    $header.= "MIME-Version: 1.0\r\n";
    $header.= "Content-Type: multipart/mixed;\r\n";
    $header.= " boundary=\"".$mime_boundary."\"\r\n";

    $encoding = mb_detect_encoding($message, "utf-8");
    $content = "This is a multi-part message in MIME format.\r\n\r\n";
    $content.= "--".$mime_boundary."\r\n";
    $content.= "Content-Type: text/html; charset=\"$encoding\"\r\n";
    $content.= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    $content.= $message."\r\n";
    $content .= "--".$mime_boundary."--";

   return mail($to, $subject, $content, $header);
}

ini_set("sendmail_from", "peter.mustermann@t-online.de");
mail_att("anmich@meineDomain.de","Betreff", "Inhaltstext", "Peter Mustermann", "peter.mustermann@t-online.de", "peter.mustermann@t-online.de");
 
Last edited:
@BMG Anzahl der übergebenen Parameter stimmt so nicht. function hat 6, du übergibst 5.
Und es ist sinnvoll nach From: ein Leerzeichen zu haben.
 
Bitte genau mit Deiner Version vergleichen, damit Du die Fehler besser begreifst:
Code:
<?php

function mail_att($to, $subject, $message, $sender, $sender_email, $reply_email) {
    $mime_boundary = "-----=" . md5(uniqid(microtime(), true));

    $header  = "From: \"".$sender."\" <".$sender_email.">\r\n";
    $header .= "Reply-To: ".$reply_email."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed;\r\n";
    $header .= " boundary=\"".$mime_boundary."\"";

    $encoding = mb_detect_encoding($message, "utf-8");
    $content  = "This is a multi-part message in MIME format.\r\n\r\n";
    $content .= "--".$mime_boundary."\r\n";
    $content .= "Content-Type: text/html; charset=".$encoding."\r\n";
    $content .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    $content .= $message."\r\n";
    $content .= "--".$mime_boundary."--";

    return mail($to, $subject, $content, $header);
}

mail_att("anmich@meineDomain.de", "Betreff", "Message", "Peter Mustermann", "peter.mustermann@t-online.de", "peter.mustermann@t-online.de");

?>
 
Bitte genau mit Deiner Version vergleichen, damit Du die Fehler besser begreifst:
Code:
<?php

function mail_att($to, $subject, $message, $sender, $sender_email, $reply_email) {
    $mime_boundary = "-----=" . md5(uniqid(microtime(), true));

    $header  = "From: \"".$sender."\" <".$sender_email.">\r\n";
    $header .= "Reply-To: ".$reply_email."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed;\r\n";
    $header .= " boundary=\"".$mime_boundary."\"";

    $encoding = mb_detect_encoding($message, "utf-8");
    $content  = "This is a multi-part message in MIME format.\r\n\r\n";
    $content .= "--".$mime_boundary."\r\n";
    $content .= "Content-Type: text/html; charset=".$encoding."\r\n";
    $content .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    $content .= $message."\r\n";
    $content .= "--".$mime_boundary."--";

    return mail($to, $subject, $content, $header);
}

mail_att("anmich@meineDomain.de", "Betreff", "Message", "Peter Mustermann", "peter.mustermann@t-online.de", "peter.mustermann@t-online.de");

?>
Alles klar, das Problem besteht jedoch immer noch.
 
Postfix? Dann bitte:
Code:
postconf -nf
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases, hash:/var/spool/postfix/plesk/aliases
append_dot_mydomain = no
authorized_flush_users =
authorized_mailq_users =
biff = no
compatibility_level = 3.6
disable_vrfy_command = yes
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
mailman_destination_recipient_limit = 1
message_size_limit = 10240000
mydestination = localhost.stratoserver.net, localhost, localhost.localdomain
myhostname = mx.meinedomain.de
mynetworks =
myorigin = /etc/mailname
plesk_virtual_destination_recipient_limit = 1
readme_directory = no
recipient_canonical_classes = envelope_recipient,header_recipient
recipient_canonical_maps = tcp:127.0.0.1:12346
recipient_delimiter = +
relayhost =
sender_dependent_default_transport_maps =
hash:/var/spool/postfix/plesk/sdd_transport_maps
smtp_send_xforward_command = yes
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = no
smtpd_authorized_xforward_hosts = 127.0.0.0/8 [::1]/128
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated,
reject_rbl_client cbl.abuseat.org, reject_rbl_client ix.dnsbl.manitu.net
smtpd_milters = , inet:127.0.0.1:12768
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,
reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated
defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sender_restrictions = check_sender_access
hash:/var/spool/postfix/plesk/blacklists, permit_sasl_authenticated
smtpd_tls_cert_file = /etc/postfix/postfix.pem
smtpd_tls_ciphers = medium
smtpd_tls_dh1024_param_file = /opt/psa/etc/dhparams2048.pem
smtpd_tls_key_file = $smtpd_tls_cert_file
smtpd_tls_mandatory_ciphers = medium
smtpd_tls_mandatory_protocols = TLSv1.2 TLSv1.3
smtpd_tls_protocols = TLSv1.2 TLSv1.3
smtpd_tls_security_level = may
smtpd_use_tls = yes
smtputf8_enable = no
tls_medium_cipherlist =
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
tls_preempt_cipherlist = no
tls_server_sni_maps = hash:/var/spool/postfix/plesk/certs
transport_maps = , hash:/var/spool/postfix/plesk/transport
virtual_alias_maps = $virtual_maps, hash:/var/spool/postfix/plesk/virtual
virtual_gid_maps = static:31
virtual_mailbox_base = /var/qmail/mailnames
virtual_mailbox_domains = $virtual_mailbox_maps,
hash:/var/spool/postfix/plesk/virtual_domains
virtual_mailbox_limit = 0
virtual_mailbox_maps = , hash:/var/spool/postfix/plesk/vmailbox
virtual_transport = plesk_virtual
virtual_uid_maps = static:30
 
OK, könnte besser sein, aber dank Plesk und Debian/Ubuntu ist es halt so... Sollte halbwegs passen...


Gut, dann halt mit der alten Brechstange:
Code:
    return mail($to, $subject, $content, $header, "-f ".$sender_email);
 
Muss wohl eher an BMGs Server liegen. Soll doch mal nachsehen ob bei seiner php.ini was drin steht. z.B. sendmail_from

Gerade getestet, auf meinem Debian 11 mit Plesk und PHP brauche ich keine solchen Klimmzüge mit -f, um zu senden und bekomme den Peter als Absender.
 
Last edited:
Könnte auch ein sendmail-Wrapper sein, oder irgendwelche Möchtegern-Sicherheitssoftware, oder Malware, oder etc...

Vielleicht könnte ein vollständiger und unverfälschter Mailheader Aufschluss geben?
 
Muss wohl eher an BMGs Server liegen. Soll doch mal nachsehen ob bei seiner php.ini was drin steht. z.B. sendmail_from

Gerade getestet, auf meinem Debian 11 mit Plesk und PHP brauche ich keine solchen Klimmzüge mit -f, um zu senden und bekomme den Peter als Absender.
Ne Idee?
Am Server haben wir keine Änderungen manuell vorgenommen. Evtl. duch ein Plesk Update, hmm.
 
Muss wohl eher an BMGs Server liegen. Soll doch mal nachsehen ob bei seiner php.ini was drin steht. z.B. sendmail_from

Gerade getestet, auf meinem Debian 11 mit Plesk und PHP brauche ich keine solchen Klimmzüge mit -f, um zu senden und bekomme den Peter als Absender.
Hab's gefunden.
Bei Plesk Mailserver-Einstellungen war der Hacken:
[X] Falsch festgelegten Absender für ausgehende E-Mails beheben.
Gültige E-Mail-Header und Envelope-Sender-Adressen für ausgehende E-Mails von Domains automatisch festlegen, um das Risiko der Einstufung als Spam zu verringern

Dennoch besten Dank für Eure Tips
 
Back
Top