[XT-Commerce] Mailprobleme - kommen immer zurück

resoucer

Gesperrt
ID: 77379
L
20 April 2006
2.846
109
Hallo, undzwar habe ich ein Problem mit meinem

XT-Commerce Shop System.
Es kommt fast 50% der Email zurück die das Script verschickt.

Vll. kann mir da mal einer ne Info geben warum das genau (z.b. bei @t-online adressen)

Hier mal eine Beispielemail
PHP:
From - Fri Aug 01 17:16:19 2008
X-Account-Key: account5
X-UIDL: UID438-1211825868
X-Mozilla-Status: 0001
X-Mozilla-Status2: 10000000
X-Mozilla-Keys:                                                                                 
Return-Path: <>
X-Original-To: [email protected]
Delivered-To: [email protected]
Received: by mail.hera (Postfix)
	id 49FB19BCA14; Fri,  1 Aug 2008 17:07:38 +0200 (CEST)
Date: Fri,  1 Aug 2008 17:07:38 +0200 (CEST)
From: [email protected] (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: [email protected]
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
	boundary="734C29BCA1E.1217603258/mail.hera"
Content-Transfer-Encoding: 8bit
Message-Id: <[email protected]>

This is a MIME-encapsulated message.

--734C29BCA1E.1217603258/mail.hera
Content-Description: Notification
Content-Type: text/plain; charset=us-ascii

This is the mail system at host mail.hera.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                   The mail system

<[email protected]>: host mail.mailde.de[IP] said: 450 4.7.1
    <mail.hera>: Helo command rejected: Host not found (in reply to RCPT TO
    command)


--734C29BCA1E.1217603258/mail.hera
Content-Description: Delivery report
Content-Type: message/delivery-status

Reporting-MTA: dns; mail.hera
X-Postfix-Queue-ID: 734C29BCA1E
X-Postfix-Sender: rfc822; [email protected]
Arrival-Date: Sun, 27 Jul 2008 16:26:40 +0200 (CEST)

Final-Recipient: rfc822; [email protected]
Action: failed
Status: 4.7.1
Remote-MTA: dns; mail.mailde.de
Diagnostic-Code: smtp; 450 4.7.1 <mail.hera>: Helo command rejected: Host not
    found

--734C29BCA1E.1217603258/mail.hera
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit

Received: by mail.hera (Postfix, from userid 33)
	id 734C29BCA1E; Sun, 27 Jul 2008 16:26:40 +0200 (CEST)
To: [email protected]
Subject: Ihre Bestellung Nr:57 / Sonntag, 27. Juli 2008 german
Date: Sun, 27 Jul 2008 16:26:40 +0200
From: "Be" <[email protected]>
Reply-to: 
Message-ID: <[email protected]>
X-Priority: 3
X-Mailer: PHPMailer [version 1.73]
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="b1_9095e9bd46970f7a6143f5f84743c9a7"


--b1_9095e9bd46970f7a6143f5f84743c9a7
Content-Type: text/plain; charset = "iso-8859-15"
Content-Transfer-Encoding: 8bit
 
<[email protected]>: host mail.mailde.de[IP] said: 450 4.7.1
<mail.hera>: Helo command rejected: Host not found (in reply to RCPT TO
command)

Beim Mailversand wird ein ungültiger HELO-String an den empfangenden Mailserver gesendet (mit einem Hostnamen, der nicht existiert). Als HELO sollte eigentlich immer ein gültiger (also übers Netz erreichbarer) Hostname des sendenden Mailservers mitgegeben werden.

Ich kenne jetzt nun leider die Konfiguration von XT-Commerce nicht aber irgendwo wird es sicher entsprechende Einstellungsmöglichkeiten geben...
 
also über den configs habe ich nicht wirklich eine Einstellmöglichkeit davon gesehen.
da muss ich mich mal durch die ganzen funktionen und classen wühlen um den entsprechenden code zu finden.
 
So vll. kann mir ja einer hierbei helfen.
Habe endlich die Sendstelle vom Header gefunden

Folgendes Vars sind gegeben:
$this->Mailer = "mail";
$this->message_type = "plain"; // bin ich mir nicht 100%ig sicher

PHP:
 function CreateHeader() {
        $result = "";
        
        // Set the boundaries
        $uniq_id = md5(uniqid(time()));
        $this->boundary[1] = "b1_" . $uniq_id;
        $this->boundary[2] = "b2_" . $uniq_id;

        $result .= $this->HeaderLine("Date", $this->RFCDate());
        if($this->Sender == "")
            $result .= $this->HeaderLine("Return-Path", trim($this->From));
        else
            $result .= $this->HeaderLine("Return-Path", trim($this->Sender));
        
        // To be created automatically by mail()
        if($this->Mailer != "mail")
        {
            if(count($this->to) > 0)
                $result .= $this->AddrAppend("To", $this->to);
            else if (count($this->cc) == 0)
                $result .= $this->HeaderLine("To", "undisclosed-recipients:;");
            if(count($this->cc) > 0)
                $result .= $this->AddrAppend("Cc", $this->cc);
        }

        $from = array();
        $from[0][0] = trim($this->From);
        $from[0][1] = $this->FromName;
        $result .= $this->AddrAppend("From", $from); 

        // sendmail and mail() extract Bcc from the header before sending
        if((($this->Mailer == "sendmail") || ($this->Mailer == "mail")) && (count($this->bcc) > 0))
            $result .= $this->AddrAppend("Bcc", $this->bcc);

        if(count($this->ReplyTo) > 0)
            $result .= $this->AddrAppend("Reply-to", $this->ReplyTo);

        // mail() sets the subject itself
        if($this->Mailer != "mail")
            $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject)));

        $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
        $result .= $this->HeaderLine("X-Priority", $this->Priority);
        $result .= $this->HeaderLine("X-Mailer", "PHPMailer [version " . $this->Version . "]");
        
        if($this->ConfirmReadingTo != "")
        {
            $result .= $this->HeaderLine("Disposition-Notification-To", 
                       "<" . trim($this->ConfirmReadingTo) . ">");
        }

        // Add custom headers
        for($index = 0; $index < count($this->CustomHeader); $index++)
        {
            $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), 
                       $this->EncodeHeader(trim($this->CustomHeader[$index][1])));
        }
        $result .= $this->HeaderLine("MIME-Version", "1.0");

        switch($this->message_type)
        {
            case "plain":
                $result .= $this->HeaderLine("Content-Transfer-Encoding", $this->Encoding);
                $result .= sprintf("Content-Type: %s; charset=\"%s\"",
                                    $this->ContentType, $this->CharSet);
                break;
            case "attachments":
                // fall through
            case "alt_attachments":
                if($this->InlineImageExists())
                {
                    $result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s", 
                                    "multipart/related", $this->LE, $this->LE, 
                                    $this->boundary[1], $this->LE);
                }
                else
                {
                    $result .= $this->HeaderLine("Content-Type", "multipart/mixed;");
                    $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
                }
                break;
            case "alt":
                $result .= $this->HeaderLine("Content-Type", "multipart/alternative;");
                $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
                break;
        }

        if($this->Mailer != "mail")
            $result .= $this->LE.$this->LE;

        return $result;
    }
 
Ich kenn XT-Commerce zwar nicht, aber ich denke, dass das kein PHP Fehler ist.

Code:
[...]
Received: by [COLOR="#ff0000"]mail.hera[/COLOR] (Postfix)
	id 49FB19BCA14; Fri,  1 Aug 2008 17:07:38 +0200 (CEST)
[...]
This is the mail system at host [COLOR="#ff0000"]mail.hera[/COLOR].
[...]
<[email protected]>: host mail.mailde.de[IP] said: 450 4.7.1
    <[COLOR="Red"]mail.hera[/COLOR]>: Helo command rejected: Host not found (in reply to RCPT TO
    command)

Reporting-MTA: dns; [COLOR="#ff0000"]mail.hera[/COLOR]
Final-Recipient: rfc822; [email protected]
Action: failed
Status: 4.7.1
Remote-MTA: dns; mail.mailde.de
Diagnostic-Code: smtp; 450 4.7.1 <[COLOR="Red"]mail.hera[/COLOR]>: Helo command rejected: Host not found
[...]
Received: by [COLOR="#ff0000"]mail.hera[/COLOR] (Postfix, from userid 33)
	id 734C29BCA1E; Sun, 27 Jul 2008 16:26:40 +0200 (CEST)

Wie schon morpheus1510 weiter oben geschrieben hat, liegt der Fehler an dem mail.hera. Steht vermutlich in der Mailserver konfiguration. Da kannst du mit PHP meines wissens nach nichts machen. Eventuell hilft dir das ja weiter.
 
Doch, da kann man was machen... ;)

Wenn ich das richtig sehe, wird hier wohl die phpmailer()-Klasse verwendet? Die kann man so konfigurieren, dass sie einen eigenen HELO-String beim Versand mitsendet. Ist nämlich kein solcher und auch kein Hostname explizit angegeben, wird eben der aus der Serverkonfiguration genommen...

Im Kopf der Klassen-Datei gibt es verschiedene Konfigvariablen, die man setzen kann. Die für dich wichtige wäre die folgende:

PHP:
  /**
   * Sets the hostname to use in Message-Id and Received headers
   * and as default HELO string. If empty, the value returned
   * by SERVER_NAME is used or 'localhost.localdomain'.
   * @var string
   */
  var $Hostname          = '';

Wenn hier der Hostname des Mailservers (oder am besten deine Domain ohne https://www zwischen die ' gesetzt wird, sollte bei diesem Problem eine Besserung eintreten. Dann wird nämlich dieser Wert als Hostname und als HELO-String mitgesendet.

Beispiel:

PHP:
var $Hostname          = 'deinedomain.de';
 
Soweit ich gesehen habe, funktioniert das bei phpmailer jedoch nur bei einer SMTP Verbindung. Wenn man mail() benutzt, kann man HELO nicht in PHP angeben.
 
Naja, dann müsste man entweder den Mailversand per SMTP erledigen lassen oder in der Mailsever-Konfig den korrekten Hostnamen setzen.

Wenn das dein eigener Server ist, dann kannst du das bei Postfix in der 'main.cf' machen:

Code:
myorigin = /etc/mailname

oder

Code:
myorigin = mail.maildomain.de

Dort kann entweder ein Pfad zu einer lokalen Datei angegeben werden, in welcher der Hostname steht, oder eben der Hostname selbst angegeben werden.

Wenn es nicht dein eigener Sever ist, würde ich mal beim Hoster nachfragen, warum der Server so schrottig konfiguriert ist 8O
 
Jetzt versuche ich das ganze über smtp zu versenden und bekomme

PHP:
This is the mail system at host 213-239-195-190.clients.your-server.de.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to postmaster.

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

                   The mail system

<[email protected]>: host mx-ha01.web.de[217.72.192.149] said: 550 Protocol
    violation (in reply to DATA command)




Reporting-MTA: dns; 213-239-195-190.clients.your-server.de
X-Postfix-Queue-ID: 97C439BCA14
X-Postfix-Sender: rfc822; [email protected]
Arrival-Date: Wed,  6 Aug 2008 14:53:38 +0200 (CEST)

Final-Recipient: rfc822; [email protected]
Original-Recipient: rfc822;[email protected]
Action: failed
Status: 5.0.0
Remote-MTA: dns; mx-ha01.web.de
Diagnostic-Code: smtp; 550 Protocol violation

das kann doch wohl nicht wahr sein.
 
Nuja, scheinbar sind sie das doch nicht. :-?

Zumindest hatte bei mir auf dem Server noch keine Probleme
mit mail() und/oder xt:Commerce.