• Jeder User im Forum verpflichtet sich zur Akzeptanz und zur Einhaltung dieser Regeln:
    1. Umgangston
      Ein angemessener höflicher Umgangston, ohne Beleidigungen, Beschimpfungen und aggressive Postings ist für jedes Mitglied Pflicht.
    2. Beiträge
      Jedes Mitglied sollte sich bemühen nur sinnvolle Beiträge zum Thema zu posten. Dabei ist unbedingt vorher zu prüfen, ob das Thema vorher schon einmal diskutiert wurde und daher fortgesetzt werden kann
      • Suchfunktion benutzen!
      • offizielle Doku lesen!
    3. Haftung
      Jeder Beitragsersteller übernimmt die alleinige Verantwortung seiner Inhalte.
    4. Werbung
      Wir erlauben keine Beiträge, Signaturen, Private Nachrichten oder eMails an Benutzer, die Werbung enthalten. Ausgenommen
      sind Stellengesuche /-angebote, welche ausschließlich im Forum "Stellengesuche" veröffentlicht werden dürfen.
    5. Verstöße
      Regelwidrige Beiträge sollten dem Team gemeldet werden. Nach deren Überprüfung werden wir schnellstmöglich
      entsprechend handeln.
    6. Authorität
      Den Anweisungen der Team-Mitglieder (Administratoren und Moderatoren) sind in diesem Forum Folge zu leisten.
      Bei Fragen oder Beschwerden bitte an diese wenden.
    Wir möchten Euch darauf aufmerksam machen, dass es bei Verstößen gegen einen oder mehreren der oben genannten
    Punkte dem Team frei steht entsprechend zu handeln. Dies kann z.B. das Löschen eines Beitrags, das Ausschliessen bzw.
    Sperren von Mitgliedern oder aber lediglich eine Verwarnung sein.

    In diesem Zusammenhang sollte erwähnt werden, dass das Forum automatisch die IP-Adresse jedes Beitrag-Erstellers
    speichert. Bei schweren Vergehen, behalten wir es uns vor, die IP-Adresse zur Strafverfolgung weiterzugeben.
  • Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

Invalid Hostname beim Mailversand / Bug in Transport_Smtp oder Validate_Hostname?

G.Schuster

New member
Moin,

Beim Mailversand per SMTP scheint helo() einen ungültigen Hostnamen zu bemängeln.
Jedenfalls meldet mir Translate() die Message für INVALID_HOSTNAME als nicht übersetzt - also muss wohl ein Fehler mit dieser Message auftreten.
Die SMTP-Config funktioniert soweit problemlos (mit Auth), meine Mail wird versendet.
Soweit ich das bisher herausgefunden habe stört sich der Validator am Hostnamen "localhost", der von Transport_Smtp als Default-Wert für den lokalen (sendenden) Rechner gesetzt wird.
Setze ich explizit "127.0.0.1" per "name"-Option gibt's keinen Fehler.

Die Fehlermeldung: '%value%' does not match the expected structure for a DNS hostname

Meine Frage nun:
- Ist hier ein ungültiger Default-Wert gesetzt worden? => Bug-Meldung für Transport_Smtp
- Oder macht hier Validate_Hostname etwas falsch? => Bug-Meldung für Validate_Hostname

Meiner bescheidenen Meinung nach ist "localhost" ein gültiger HELO, was mich dazu bewgen würde, die Schuld bei Validate_Hostname zu suchen.
Ich hab den Code dazu nur kurz überflogen, bin auf die Schnelle aber nicht durchgestiegen, weil ich die ganzen RFCs dazu nicht kenne...
Jedenfalls scheint es da aber in den letzten Wochen keine großen Änderungen gegeben zu haben - die Notices von Translate tauchen aber erstaunlicher Weise erst seit ein paar Tagen auf, obwohl die Anwendung eigentlich immer auf dem aktuellen SVN-Checkout entwickelt wird.

Any ideas?


Sidenote: die Bug-Stats zum ZF sehen ja böse aus...
 

gurkenpapst

New member
Hi,

laut RFC 2606 ist localhost eine zu Testzwecken reservierte TLD.

Ich glaube es liegt an einem if Konstrukt in der isValid() Methode:

PHP:
// Zeilen 530-532
// Check input against DNS hostname schema
        $domainParts = explode('.', $value);
        if ((count($domainParts) > 1) && (strlen($value) >= 4) && (strlen($value) <= 254)) {

//..... 638-640
} else if ($this->_options['allow'] & self::ALLOW_DNS) {
            $this->_error(self::INVALID_HOSTNAME);
        }
In Zend_Mail_Protocol_Abstract::__construct() wird der Validator mit der option ALLOW_ALL instantiiert. Allerdings ergibt sich daraus bei der zweiten if-clause folgendes
PHP:
if (7 & 1) {
   //INVALID_HOSTNAME
}
und diese Bedingung tritt leider ein (ergibt true).
 

G.Schuster

New member
Also ist da im ZF was falsch...dann sollen die Entwickler entscheiden, wo das einzuordnen ist.
Ich wär' ja dafür, einfach die IP als Default zu setzen.
 

gurkenpapst

New member
wie gesagt eine Vermutung, denn reproduzierbar ohne Zend Mail ist es gerade leider nicht
PHP:
$this->_validHost = new Zend_Validate();
        $this->_validHost->addValidator(new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_ALL));
        if ($this->_validHost->isValid('localhost')) {
        	echo "VALID";
        } else {
        	echo "INVALID";
        }
ergibt nicht wie zu erwarten INVALID...
 

SeKrebs

New member
http://framework.zend.com/manual/de/zend.validate.set.html#zend.validate.set.email_address.hostnametype

Der Teil des Hostnamens einer Email Adresse wird mit Zend_Validate_Host geprüft. Standardmäßig werden nur DNS Hostnamen in der Form domain.com akzeptiert, aber wenn es gewünscht ist, können auch IP Adressen und lokale Hostnamen auch akzeptiert werden.
Um das zu tun, muß eine Zend_Validate_EmailAddress Instanz erstellt werden der ein Parameter übergeben wird, um den Typ des Hostnamens anzugeben der akzeptiert werden soll. Mehr Details sind in Zend_Validate_Hostname inkludiert, zusammen mit einem Beispiel, wie DNS und lokale Hostnamen, akzeptiert werden wie im Beispiel das anbei steht:
PHP:
$validator = new Zend_Validate_EmailAddress(
                    Zend_Validate_Hostname::ALLOW_DNS |
                    Zend_Validate_Hostname::ALLOW_LOCAL); // <-------
if ($validator->isValid($email)) {
    // Email Adresse scheint gültig zu sein
} else {
    // Email ist ungültig; Gründe ausdrucken
    foreach ($validator->getMessages() as $message) {
        echo "$message\n";
    }
}
Hinzu kommt:
laut RFC 2606 ist localhost eine zu Testzwecken reservierte TLD.
Das ist falsch. RFC2606 reserviert die Domain .localhost für das Loopback-Interface. Die Systemdienste deines Rechners danken, dass es nicht für Testzwecke reserviert ist ;)


Edit:
OK, muss eingestehen, dass ALLOW_ALL eigentlich auch ALLOW_LOCAL abdecken sollte. Ich schaus mir noch mal an.

Edit2:
OK, die Begründung zur Sache mit der if-Abfrage scheint soweit zu stimmen. Würde jetzt explizit einfach die IP verwenden und nen Bugreport aufmachen. Ich lass den Beitrag mal als schlechtes Beispiel für voreilige Antworten so stehen.
 
Zuletzt bearbeitet:

G.Schuster

New member
Unabhängig davon, ob die offizielle Doku was dazu sagt oder nicht - Default-Werte sollten doch dann trotz allem gültige Werte sein, meinst du nicht auch?
Ich stimme dir aber zu - ALLOW_ALL muss auch ALL bedeuten, nicht NEARLY_ALL.

Übrigens: wir diskutieren, nicht eskalieren ;)
 

gurkenpapst

New member
http://framework.zend.com/manual/de/zend.validate.set.html#zend.validate.set.email_address.hostnametype


PHP:
$validator = new Zend_Validate_EmailAddress(
                    Zend_Validate_Hostname::ALLOW_DNS |
                    Zend_Validate_Hostname::ALLOW_LOCAL); ...
Wo wird in Zend_Mail der EmailAddress Validator verwendet?
Hinzu kommt:
Das ist falsch. RFC2606 reserviert die Domain .localhost für das Loopback-Interface. Die Systemdienste deines Rechners danken, dass es nicht für Testzwecke reserviert ist ;)
Ja, korrekt, zu unbedacht formuliert...

Ich lass den Beitrag mal als schlechtes Beispiel für voreilige Antworten so stehen.
gut, und danke fürs "einschreiten"...;)
 

SeKrebs

New member
Wo wird in Zend_Mail der EmailAddress Validator verwendet?
Das war exemplarisch, die Beispiele zu Validate_Hostname fand ich nich so dolle ;) Ist aber 1:1 übertragbar. Obs verwendet wird, oder nicht, weiß ich nicht, könnte ich mir aber trotzdem gut vorstellen :)

Unabhängig davon, ob die offizielle Doku was dazu sagt oder nicht - Default-Werte sollten doch dann trotz allem gültige Werte sein, meinst du nicht auch?
Ich stimme dir aber zu - ALLOW_ALL muss auch ALL bedeuten, nicht NEARLY_ALL.
Sollte man annehmen, aber habe schon häufiger erlebt, dass "ALL" nicht immer "Alles" bedeutet. Sei es aus Sicherheitsgründen, Historisch/BC (vgl: E_STRICT), oder "als ein Feature".
Habe erstmal angenommen, dass auch hier localhost als Sonderfall gilt, damit nicht zB Email-Adressen a la "admin@localhost" aus Unachtsamkeit plötzlich erlaubt sind. Hab dazu aber nichts gefunden und der Quelltext sagt tatsächlich eher das Gegenteil (auch wenn das nen ganz schön unübersichtliches Gewurmse ist :X)
 
Oben