Linuchs: PHP kann bei diesem Provider keine Mails senden

0 49

PHP kann bei diesem Provider keine Mails senden

Linuchs
  • php
  1. 0
    pl
  2. 0
    Der Martin
    1. 0

      Provider-Wechsel

      Linuchs
      1. 0
        Der Martin
        1. 0
          Linuchs
    2. 0
      Auge
      1. 0
        Linuchs
        1. 1
          kai345
          1. 0
            Linuchs
            1. -1
              pl
            2. 2
              Auge
    3. 0
      pl
      1. 0
        Linuchs
      2. 1
        Mitleser
        1. 0
          pl
  3. 1
    Felix Riesterer
    1. 0
      Linuchs
      1. 1
        Felix Riesterer
        1. 0
          Christian Kruse
          1. 0
            Felix Riesterer
            1. 0
              Der Martin
              1. 0
                1unitedpower
                1. 0
                  Der Martin
                  • e-mail
                  • php
                  1. 1
                    1unitedpower
                    1. 0
                      Der Martin
                      1. 0
                        Mitleser
                      2. 5
                        1unitedpower
                        1. 0
                          Der Martin
                          1. 0
                            Mitleser
                            1. -1
                              pl
                          2. -1
                            pl
                            1. 0
                              1unitedpower
                          3. 0
                            Mitleser
    2. 0
      Mitleser
      1. 0
        TS
        1. 0
          Mitleser
          1. 0
            TS
            • e-mail
            • php
            • webserver
      2. -1
        pl
        1. 0
          Mitleser
          1. 0
            pl
    3. 0
      Auge
      1. 0
        Raketenmaildienst
  4. 0
    TS
    • internet-anbindung
    • php
    1. 0
      Linuchs
      1. 0
        Der Martin
        • e-mail
        • php
        1. 0
          Linuchs
          1. 0
            Der Martin
      2. 0
        TS
        • e-mail
        • internet-anbindung
        • php

Moin,

Daten eines Formulars sollen als PDF-Anhang gemailt werden.

So weit ich recherchiert habe, muss das Mailen in der php.ini zugelassen werden.

Nach einigem Hin- und Her meldet der Provider One.com

One: die php.ini Datei kann bei uns nicht abgeändert werden. Hier müssten Sie sich nach einer Alternative zum Versenden von Mails umsehen.

Ich: Die Daten eines ausgefüllten HTML-Formulars werden mit PHP ausgewertet und sollen an eine Mail-Adresse geschickt werden. Wie funktioniert das denn bei Ihnen?

One: Sie können dies über php mail lösen. Allerdings müssten Sie dies selbst programmieren. Bitte beachten Sie, dass Sie ein auf der Domain erstelltes Mailkonto - also "@xxxxx.de" - dafür verwenden müssen.

Ich verstehe das nicht, für meinen Veranstaltungskalender versende ich dauernd Mails per PHP, ohne dort ein Postfach zu haben.

Ist das ein Mißverständnis oder muss ich den Provider wechseln?

Fragt Linuchs

  1. Es kommt darauf an wie der MTA konfiguriert ist. Und da kann man auch einstellen, daß das Versenden von Mails nur über ein Konto *@example.com möglich ist.

    Sie können dies über php mail lösen

    Hier kommt es darauf an, ob eine Mail auf den localen Prozess gepiped werden soll, bspw. per |/user/sbin/sendmail

    Oder ob Dein PHP Script via SMTP senden darf also den MTA über hostname:port kommuniziert.

    Sollte Dein ISP beantworten. MFG

  2. Hallo,

    So weit ich recherchiert habe, muss das Mailen in der php.ini zugelassen werden.

    das ist mir neu - aber ich habe mich auch bestimmt drei, vier Jahre nicht mehr mit dem Thema befasst.

    One: die php.ini Datei kann bei uns nicht abgeändert werden. Hier müssten Sie sich nach einer Alternative zum Versenden von Mails umsehen.

    Keine benutzerdefinierte php.ini? Bäh.

    Ich: Die Daten eines ausgefüllten HTML-Formulars werden mit PHP ausgewertet und sollen an eine Mail-Adresse geschickt werden. Wie funktioniert das denn bei Ihnen?

    One: Sie können dies über php mail lösen. Allerdings müssten Sie dies selbst programmieren. Bitte beachten Sie, dass Sie ein auf der Domain erstelltes Mailkonto - also "@xxxxx.de" - dafür verwenden müssen.

    Ich verstehe das nicht, für meinen Veranstaltungskalender versende ich dauernd Mails per PHP, ohne dort ein Postfach zu haben.

    Ich hatte vor langer Zeit auch mal ein Hosting-Paket bei one.com und erinnere mich dunkel, dass das bei denen recht eigenwillig gelöst ist. Ich meine, man muss tatsächlich in der Konfiguration für Webspace und Hosting eine one.com-Mailadresse angeben, die die PHP-Funktion mail() dann zum Versenden von Mails verwendet.

    Ist das ein Mißverständnis oder muss ich den Provider wechseln?

    Ich empfehle letzteres.

    Ciao,
     Martin

    --
    Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
    1. Hallo Ironier,

      Ist das ein Mißverständnis oder muss ich den Provider wechseln?

      Ich empfehle letzteres.

      Die erste Idee ist, diese Domain von One.com auf meinen vertrauten gemieteten Server in Frankfurt zu verlegen. Aber wenn der mal ausfällt (ist seit 2008 noch nicht passiert), brechen mehrere Domains weg.

      Wie hälst du das mit Kundenprojekten? Möglichst getrennte Server?

      Linuchs

      1. Hallo,

        Wie hälst du das mit Kundenprojekten? Möglichst getrennte Server?

        solange das für mich ein Thema war (seit 2018 nicht mehr), hatte ich alle Kundenprojekte in einem Webhosting-Paket. An Redundanz oder Ausfallsicherheit habe ich dabei nicht gedacht; das war eine rein pragmatische Sache.

        So long,
         Martin

        --
        Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
        1. An Redundanz oder Ausfallsicherheit habe ich dabei nicht gedacht

          Ich hatte einen Kunden, dem das äußerst wichtig war und der dafür zahlte, deshalb bin ich sensibilisiert.

          Stelle dir vor, eine Messe läuft und die Leitung wird durch Server-Ausfall handlungsunfähig. Ich bin dankbar, dieses Problem lösen gehabt zu dürfen.

          Die Messe gibt's noch, aber andere Mannschaft, anderes Konzept.

          Linuchs

    2. Hallo

      Ich: „Die Daten eines ausgefüllten HTML-Formulars werden mit PHP ausgewertet und sollen an eine Mail-Adresse geschickt werden. Wie funktioniert das denn bei Ihnen?“

      One: „Sie können dies über php mail lösen. Allerdings müssten Sie dies selbst programmieren. Bitte beachten Sie, dass Sie ein auf der Domain erstelltes Mailkonto - also "@xxxxx.de" - dafür verwenden müssen.“

      Ich verstehe das nicht, für meinen Veranstaltungskalender versende ich dauernd Mails per PHP, ohne dort ein Postfach zu haben.

      Von einem Postfach ist da nicht die Rede, sondern von einer zur Domain, von der aus gesendet werden soll, passenden E-Mail-Adresse. Das ist ein gängiges Verfahren, um Spamversand einzuschränken.

      Ich hatte vor langer Zeit auch mal ein Hosting-Paket bei one.com und erinnere mich dunkel, dass das bei denen recht eigenwillig gelöst ist. Ich meine, man muss tatsächlich in der Konfiguration für Webspace und Hosting eine one.com-Mailadresse angeben, die die PHP-Funktion mail() dann zum Versenden von Mails verwendet.

      Ist das ein Mißverständnis oder muss ich den Provider wechseln?

      Ich empfehle letzteres.

      Nicht, dass es nicht Gründe geben kann, das zu tun. Aber die E-Mail mit einem passenden Absender senden zu müssen, gehört meiner Meinung nach ganz gewiss nicht dazu.

      Tschö, Auge

      PS: @Linuchs ich habe hier, in meinem Posting, mal deine Backticks in Anführungszeichen ungewandelt. Mit den backticks wird in diesem Forum Inlinecode eingeschlossen.

      --
      Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
      Hohle Köpfe von Terry Pratchett
      1. Hallo Auge,

        Aber die E-Mail mit einem passenden Absender senden zu müssen, gehört meiner Meinung nach ganz gewiss nicht dazu.

        Die Übernahme der betr. Domain als Webmaster liegt Jahre zurück. Ich habe bei der DENIC angefragt, ob ich Inhaber bin. Das ist der Fall und dort wird auch meine Mail-Adresse genannt, die NICHTS mit der fraglichen Domain zu tun hat.

        Beim PHP-Versand der Mails habe ich diese - also domain-fremde - Adresse als Absender angegeben.

        Ich habe die Albernheiten dicke und werde die Domain von One.com abziehen, nachdem ich ja „bestätigter” Inhaber bin.

        Linuchs

        1. Die Übernahme der betr. Domain als Webmaster liegt Jahre zurück. Ich habe bei der DENIC angefragt, ob ich Inhaber bin. Das ist der Fall und dort wird auch meine Mail-Adresse genannt, die NICHTS mit der fraglichen Domain zu tun hat.

          Beim PHP-Versand der Mails habe ich diese - also domain-fremde - Adresse als Absender angegeben.

          Dann finde ich es vollkommen korrekt, den Mail-Versand nicht zuzulassen. So erzeugt man ansonsten SPAM-Schleudern. Und ich halte es für den Provider nicht zumutbar, zu prüfen, ob eine fremde Mail-Adresse irgendwie zum Besitzer der Domain gehört.

          --
          Stur lächeln und winken, Männer!
          1. Dann finde ich es vollkommen korrekt, den Mail-Versand nicht zuzulassen.

            Zur Kenntnis genommen. Ich finde Behinderungen nicht okay, die ich mit meinem eigenen Server nicht habe.

            Und die Antwort von One.com verstehe ich als Abwimmeln, aber nicht als Hilfe.

            1. Und die Antwort von One.com verstehe ich als Abwimmeln, aber nicht als Hilfe.

              Da muss man wohl die Fragen etwas konkreter stellen. Also ich würde da schon ganz konkret mal fragen, ob man seine Mails auf /usr/sbin/sendmail -t oder /usr/sbin/postifx pipen soll.

              Und dafür brauchts keine custom php.ini um einen Mailversand auf diese Art und Weise in die Gänge zu bringen. Die dafür benötigten Elementarfunktionen gabs in PHP schon immer (popen, fputs, quoted_printable_encode, base64_encode..).

              MFG

            2. Hallo

              Dann finde ich es vollkommen korrekt, den Mail-Versand nicht zuzulassen.

              Zur Kenntnis genommen. Ich finde Behinderungen nicht okay, die ich mit meinem eigenen Server nicht habe.

              Du hast ja niun eine Entscheidung getroffen. Ich verstehe aber wirklich nicht, worin das Problem liegt, für den skriptbasierten Versand als Absender eine E-Mail-Adresse zu benutzen, die auf die Domain angemeldet ist, von der aus der Versand erfolgt.

              Wenn ich E-Mails von example.org versende, muss ich halt eine E-Mail-Adresse mit example.org als Domain-Part benutzen und nicht eine mit example.com. Das ist nicht nur bei deinem bisherigen Hoster so geregelt, sondern bei vielen. Bei manchen Hostern muss man sogar eine zulässige E-Mai-Adresse als fünften Parameter für die Funktion mail angeben (in der Doku als „additional_parameters“ zu finden). Das ist ein durchaus übliches Vorgehen, um Skripte nicht zur Spamschleuder werden zu lassen.

              Und die Antwort von One.com verstehe ich als Abwimmeln, aber nicht als Hilfe.

              Dein Zitat der Aussage von one.com aus dem Eröffnungsposting:

              „One: ‚Sie können dies über php mail lösen. Allerdings müssten Sie dies selbst programmieren. Bitte beachten Sie, dass Sie ein auf der Domain erstelltes Mailkonto - also "@xxxxx.de" - dafür verwenden müssen.‘“

              Ich erkenne hier bei bestem Willen kein Abwimmeln. Die Aussage lautet, dass du in PHP E-Mails mit der Funktion mail versenden kannst (das ist genau das, was du tun willst), als Absender aber eine Adresse der Domain, von der aus gesendet werden soll, verwenden musst.

              Das mag nicht ideal formuliert sien, aber du wirst damit keineswegs abgewimmelt.

              Tschö, Auge

              --
              Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
              Hohle Köpfe von Terry Pratchett
    3. Nana, eine Grund für einen Providerwechsel sehe ich da noch nicht, da gäbe es schwerwiegendere Gründe und an einem KK hängt Einiges dran, zumal hier gewerbliche Hintergründe vorliegen.

      Also anstatt gleich sämtlich Inhalte umzuziehen würde es doch völlig reichen, im Action'Attribut des Mailformulars denjenigen Hoster einzutragen bei dem das Mailversenden problemlos funktioniert.

      MFG

      1. Hallo pl,

        Also anstatt gleich sämtlich Inhalte umzuziehen würde es doch völlig reichen, im Action'Attribut des Mailformulars denjenigen Hoster einzutragen bei dem das Mailversenden problemlos funktioniert.

        Nach dem Zirkus mit „policy” bei Ajax und der Unmöglichkeit, die http-Domain meines Kalenders als iframe bei einem Mitglied zu zeigen (sein System lässt nur https im iframe !!! zu), verzichte ich auf weitere Forschungen zur Kombination von Domains.

        Linuchs

      2. Nana, eine Grund für einen Providerwechsel sehe ich da noch nicht, da gäbe es schwerwiegendere Gründe und an einem KK hängt Einiges dran, zumal hier gewerbliche Hintergründe vorliegen.

        Ein KK ist nicht zwangsläufig für einen Wechsel des Hosters nötig. Wer es richtig macht, trennt DNS und Hosting.

        MFG

        1. Wer er richtig macht, trennt DNS und Hosting.

          Natürlich; wenn der Provider da mitspielt. Verpflichtet ist er nicht dazu.

          MFG

  3. Lieber Linuchs,

    langer Rede kurzer Sinn: Verwende Swiftmailer (PHP-Programm)

    1. Konfiguriere ein echtes Postfach für den Mailversand.
    2. Binde Swiftmailer in Dein Projekt ein.
    3. Versende Mails mit Swiftmailer, welches den SMTP-Server mit den Logindaten deines Postfachs nutzt.

    Liebe Grüße

    Felix Riesterer

    1. Lieber Felix,

      Verwende Swiftmailer (PHP-Programm)

      Danke für den Link, ich packe ihn in meine Not-Apotheke. Wenn ich am Verbluten bin (gar nicht mehr weiter weiß), muss ich mich wohl damit beschäftigen.

      Linuchs

      1. Lieber Linuchs,

        Wenn ich am Verbluten bin (gar nicht mehr weiter weiß), muss ich mich wohl damit beschäftigen.

        ich würde sagen, dass Du Dich einfach einmal für eine Stunde (lies: 60 Minuten) mit Composer auseinandersetzt, um dann jegliche darüber einbindbare Bibliotheken (Swiftmailer, FPDI usw.) ohne Aufwand in Deine Projekte einbinden kannst. Dann brauchst Du in Zukunft nicht mehr so ein Theater ("hülfe, ich förblute!") zu machen.

        Liebe Grüße

        Felix Riesterer

        1. Hallo Felix,

          dass dein Beitrag hier negativ bewertet wurde ist für mich nicht nachvollziehbar. Jeder, der sich auch nur ansatzweise mit der Materie beschäftigt muss einsehen, dass du recht hast.

          Freundliche Grüße,
          Christian Kruse

          1. Lieber Christian,

            danke für die Schützenhilfe.

            Ich kann ein bisschen nachvollziehen, dass man zu Anfang Berührungsängste mit composer haben kann. Auch mir fiel es nicht so leicht, mich darin einzuarbeiten, da ich mir viele Gedanken darüber machen musste, wo nun die via composer eingebundenen Scripte abgelegt sind, und wie ich das mit meinen Scripten zusammen bringe. Aber nachdem ich mich etwas eingearbeitet hatte, fand ich eine sinnvolle Lösung und möchte den Komfort nicht mehr missen. Auch wenn man nun nicht blindlings einfach alles in sein Projekt einbinden sollte, das nicht bei drei auf den Bäumen ist... aber das ist ein anderes Problem, dass man z.B. auch mit npm hat (was ich im Gegensatz zu composer auch mit der Beißzange noch nicht anfasse).

            Liebe Grüße

            Felix Riesterer

            1. Hallo Felix,

              Ich kann ein bisschen nachvollziehen, dass man zu Anfang Berührungsängste mit composer haben kann. Auch mir fiel es nicht so leicht, mich darin einzuarbeiten, da ich mir viele Gedanken darüber machen musste, wo nun die via composer eingebundenen Scripte abgelegt sind, und wie ich das mit meinen Scripten zusammen bringe. Aber nachdem ich mich etwas eingearbeitet hatte, fand ich eine sinnvolle Lösung und möchte den Komfort nicht mehr missen.

              ich glaube nicht, dass ich diesen Grad der Akzeptanz erreichen würde.

              dass man z.B. auch mit npm hat (was ich im Gegensatz zu composer auch mit der Beißzange noch nicht anfasse).

              Von npm habe ich noch nicht gehört (wohl rpm als Paket-Manager von RedHat bzw. Fedora), aber sei's drum. Mich erinnert das irgendwie an mehr oder weniger raffinierte Windows-Tweaks: Da werden manchmal exe-Downloads angeboten - ein Programm, dem mam vertrauen muss, das aber alles vollautomatisch einstellt. Das kommt für mich überhaupt nicht in Frage. Wenn jemand anders als Lösung für dasselbe Problem eine Anleitung anbietet, welche Registry-Keys wie gesetzt werden müssen oder welche Konfigurationsdateien wie angepasst werden müssen, dann bin ich gern dabei.

              Zurück zu deinem Beispiel: Eine PHP-Bibliothek kommt für mich nur dann in Frage, wenn sie isoliert von anderen Bibliotheken/Frameworks angeboten wird und möglichst ohne Nebenwirkungen installiert werden kann.

              Da fallen mir gerade die PortableApps für Windows als Vergleich ein: Viele dieser Portables werden entgegen der eigentlichen Idee als exe-Installer angeboten. Die installiere ich dann in einer isolierten VM, und erst dann habe ich eine wirkliche PortableApp, indem ich einfach das Verzeichnis kopiere.

              So long,
               Martin

              --
              Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
              1. dass man z.B. auch mit npm hat (was ich im Gegensatz zu composer auch mit der Beißzange noch nicht anfasse).

                Von npm habe ich noch nicht gehört (wohl rpm als Paket-Manager von RedHat bzw. Fedora), aber sei's drum.

                Der Vergleich mit RPM ist gar nicht so verkehrt. Es gibt ein paar Unterschiede.

                • Composer und NPM installieren für gewöhnlich Pakete nicht global, sondern lokal in einem Unterverzeichnis "vendor" bzw. "node_modules" und brauchen keine besondere Berechtigungen. Bei der Installation wird für gewöhnlich auch nicht in die System-Konfigiraution eingegriffen. Konfigurationen werden mit den Paketen zusammen abgelegt.
                • Composer kann nur PHP-Pakete installieren, NPM nur JavaScript-Pakete.
                • Ein anderer großer Unterschied ist, dass die zentralen Repostiory-Datenbanken https://packagist.org/ und https://npmjs.org nicht kuriert, sondern öffentlich verwaltet werden. D.h. theoretisch hat jede Person die Möglichkeit dort ihre Pakete zu veröffentlichen. Kurierte Repositories werden aber auch unterstützt.

                Zurück zu deinem Beispiel: Eine PHP-Bibliothek kommt für mich nur dann in Frage, wenn sie isoliert von anderen Bibliotheken/Frameworks angeboten wird und möglichst ohne Nebenwirkungen installiert werden kann.

                Das sehe ich als zu restriktiv an. Um mal beim Beispiel Swiftmailer von Felix zu bleiben. Wenn ich dich richtig verstehe, würdest du es nicht einsetzen, weil es transitive Abhängigkeit mit sich bringt. Aber was wäre denn die Alternative? Eine Eigenentwicklung ist schon rein ökonomisch betrachtet nicht sinnvoll. Und selbst wenn die Finanzierung keine Rolle spielen würde, muss man sich mit der Frage beschäfigen, ob man die nötigen Kapazitäten und Kompetenzen dafür überhaupt aufbringen kann. Gerade bei sicherheitskritischen Systemen, wie Email-Versand, würde ich die Frage mit einem sehr großen Fragezeichen versehen.

                1. Hallo,

                  Von npm habe ich noch nicht gehört (wohl rpm als Paket-Manager von RedHat bzw. Fedora), aber sei's drum.

                  Der Vergleich mit RPM ist gar nicht so verkehrt.

                  ich hatte sowas vermutet.

                  Zurück zu deinem Beispiel: Eine PHP-Bibliothek kommt für mich nur dann in Frage, wenn sie isoliert von anderen Bibliotheken/Frameworks angeboten wird und möglichst ohne Nebenwirkungen installiert werden kann.

                  Das sehe ich als zu restriktiv an. Um mal beim Beispiel Swiftmailer von Felix zu bleiben. Wenn ich dich richtig verstehe, würdest du es nicht einsetzen, weil es transitive Abhängigkeit mit sich bringt.

                  Sagen wir es so: Die Abhängigkeiten stören mich, wären aber an sich noch kein KO-Kriterium, solange sie nachvollziehbar dokumentiert und einigermaßen leicht zu überblicken sind.
                  Deswegen auch mein Beispiel mit den Windows-Tweaks: Wenn sie nachvollziehbar beschreiben, was wo eingestellt werden muss, ist das für mich okay. Sind sie jedoch in eine Black Box verpackt, der ich vorher nicht ansehen kann, was sie wohl tun wird, dann lässt mich das schon sehr zögern.

                  Aber was wäre denn die Alternative? Eine Eigenentwicklung ist schon rein ökonomisch betrachtet nicht sinnvoll.

                  Das kommt auf den Einzelfall und die Anforderungen an.

                  Und selbst wenn die Finanzierung keine Rolle spielen würde, muss man sich mit der Frage beschäfigen, ob man die nötigen Kapazitäten und Kompetenzen dafür überhaupt aufbringen kann. Gerade bei sicherheitskritischen Systemen, wie Email-Versand, würde ich die Frage mit einem sehr großen Fragezeichen versehen.

                  Den e-Mail-Versand halte ich nicht für sicherheitskritisch. Den Transport und den Empfang bzw. die clientseitige Verarbeitung schon eher.

                  Einen einfachen SMTP-Client zu entwickeln, würde ich als Hobbyist für ein Wochenendprojekt halten. Mit notwendigen Features wie z.B. SMTP-AUTH, aber ohne Luxus wie etwa stundenlange Transmission Retries.

                  Ciao,
                   Martin

                  --
                  Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
                  1. Den e-Mail-Versand halte ich nicht für sicherheitskritisch.

                    Wenn du etwas falsch machst, kann das System schnell zu einer Spammschleuder werden, oder für einen Remote Code Execution-Angriff genutzt werden. Das würde ich schon als sicherheitskritisch einstufen. Sicherheit ist wie Schwangerschaft, man kann nicht halb-schwanger sein.

                    Einen einfachen SMTP-Client zu entwickeln, würde ich als Hobbyist für ein Wochenendprojekt halten. Mit notwendigen Features wie z.B. SMTP-AUTH, aber ohne Luxus wie etwa stundenlange Transmission Retries.

                    Professionelle Entwickler werden aber für ihre Arbeit bezahlt. Bei zwei Arbeitstagen wären das also 16h, beim einem Stundenlohn von 100€ sind wir schon bei 1600€. Mal abgesehen davon, dass ich deine Zeiteinschätzung nicht teile. Nach dieser Zeit hat man vielleicht einen kleinen Prototypen, aber keine getestete Bibliothek, die man auf einem Produktiv-System installieren möchte. Wenn das System vergleichbare Qualität und Flexibilität wie Swiftmailer bieten soll, geht der Preis allein für die Entwicklung sicher in die Hundertausende. Ganz zu schweigen von der Wartung.

                    1. Hallo,

                      Den e-Mail-Versand halte ich nicht für sicherheitskritisch.

                      Wenn du etwas falsch machst, kann das System schnell zu einer Spammschleuder werden, oder für einen Remote Code Execution-Angriff genutzt werden. Das würde ich schon als sicherheitskritisch einstufen. Sicherheit ist wie Schwangerschaft, man kann nicht halb-schwanger sein.

                      Moment, ich rede nur vom Mailversand - also einem Modul, das eine fertig aufbereitete e-Mail-Nachricht nebst Metadaten entgegennimmt und über einen SMTP-Server verschickt. Von der darüberliegenden Applikation und deren Missbrauchspotential habe ich nicht gesprochen.

                      Einen einfachen SMTP-Client zu entwickeln, würde ich als Hobbyist für ein Wochenendprojekt halten. Mit notwendigen Features wie z.B. SMTP-AUTH, aber ohne Luxus wie etwa stundenlange Transmission Retries.

                      Professionelle Entwickler werden aber für ihre Arbeit bezahlt. Bei zwei Arbeitstagen wären das also 16h, beim einem Stundenlohn von 100€ sind wir schon bei 1600€.

                      Okay.

                      Mal abgesehen davon, dass ich deine Zeiteinschätzung nicht teile. Nach dieser Zeit hat man vielleicht einen kleinen Prototypen, aber keine getestete Bibliothek, die man auf einem Produktiv-System installieren möchte.

                      Ich glaube doch, schon. Ein kompaktes Modul mit klar umrissener Funktionalität. Kein GUI, keine Applikationsschicht, nur der reine SMTP-Client als wiederverwendbares Modul.

                      Wenn das System vergleichbare Qualität und Flexibilität wie Swiftmailer bieten soll, geht der Preis allein für die Entwicklung sicher in die Hundertausende.

                      Ich weiß nicht, was der Swiftmailer alles kann, aber vermutlich geht das weit darüber hinaus, was ich als "einfachen SMTP-Client" bezeichnen würde.

                      Ganz zu schweigen von der Wartung.

                      Das ist wieder ein Thema für sich.

                      So long,
                       Martin

                      --
                      Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
                      1. Ich glaube doch, schon. Ein kompaktes Modul mit klar umrissener Funktionalität. Kein GUI, keine Applikationsschicht, nur der reine SMTP-Client als wiederverwendbares Modul.

                        Na dann hau mal rein und sei erstaunt, wie viele Variationen einem entgegenschlagen, wenn man mit Mailserver X, Y und Z spricht. Viel Spaß 😉

                      2. Ich glaube doch, schon. Ein kompaktes Modul mit klar umrissener Funktionalität. Kein GUI, keine Applikationsschicht, nur der reine SMTP-Client als wiederverwendbares Modul.

                        Im Leben nicht. Der RFC hat schon knapp 100 Seiten, den müsste man erstmal lesen und technische Spezifikationen lesen sich nicht so schnell wie Romane. Und allein die Spezifikation wird nicht reichen, um alle Details zu verstehen, wenn man Glück hat gibt es eine Referenz-Implementierung in einer Programmiersprache, die man versteht. Dann muss man recherchieren, ob es Defacto-Standards gibt, die für den Produktiv-Betrieb unerlässlich sind, die aber nicht Teil der offiziellen Spezifikation sind. Dann muss man sich eine Architektur überlegen. Hat man Vorerfahrung mit der Implementierung von Netzwerk-Protokellen fällt das relativ leicht. Ohne Vorerfahrung dauert es länger und benötigt mehr Iterationen bis man bei einem sinnvollen Entwurf angelangt ist. Dann richtet man sich eine lokale Entwicklungsumgebung ein. Dann kann man anfangen Tests zu schreiben, für jedes MUST in der Spezifikation sollte es mindestens einen Test geben. Dann kann man anfangen zu implementieren. Spätestens hier fallen dann unzählige Details auf, die man nicht berücksichtigt hat. Zurück ans Zeichenbrett. Refaktorisieren. Tests anpassen. Weiter implementieren. Nach nochmal unzähligen Iterationen hat man einen funktionierenden Prototypen. Jetzt kann man anfangen Integrations-Tests zu schreiben. Das wird mühsam, aber irgendwann hat man vielleicht so etwas wie einen Release-Candidate. Hat man Glück, dann dann hat man Kollegen, die Code-Reviews schreiben oder sogar Tester, die einem helfen Bugs aufzudecken. Dann kan man die Library debuggen. Wenn dann wirklich mal eine erste Version existiert, dann muss man sich übers Deployment Gedanken machen. Wenn das kein Wegwerf-Skript werden soll, dann muss man sich über CI-Pipelines Gedanken machen. Wenn man Glück hat, gibt es eine DevOps-Abteilung, die das übernimmt.

                        Das war jetzt nur aus dem Gedächtnis, ich habe wahrscheinlich jede Menge Kram vergessen. Wenn ich den Auftrag aufbekäme, einen SMTP-Client zu programmieren, würde ich mir schon mindestens einen Tag Zeit nehmen, um den Entwicklungs-Prozess zu planen, Aufwände abzuschätzen, Features zu priorisieren. Aber vermutlich würde ich dem Kunden gleich davon abraten und zu einer bereits erprobten Implementierung raten, die den Test der Zeit bereits bewältigt hat und starken Community-Support erfährt.

                        1. n'Abend,

                          Ich glaube doch, schon. Ein kompaktes Modul mit klar umrissener Funktionalität. Kein GUI, keine Applikationsschicht, nur der reine SMTP-Client als wiederverwendbares Modul.

                          Im Leben nicht. Der RFC hat schon knapp 100 Seiten, den müsste man erstmal lesen und technische Spezifikationen lesen sich nicht so schnell wie Romane.

                          aber RFC822 und 2822 habe ich in den letzten 20 Jahren schon einige Male vor- und rückwärts gelesen und kenne den Inhalt im Wesentlichen. Mit den Ergänzungen müsste ich mich etwas intensiver befassen.

                          Und allein die Spezifikation wird nicht reichen, um alle Details zu verstehen, wenn man Glück hat gibt es eine Referenz-Implementierung in einer Programmiersprache, die man versteht. Dann muss man recherchieren, ob es Defacto-Standards gibt, die für den Produktiv-Betrieb unerlässlich sind, die aber nicht Teil der offiziellen Spezifikation sind.

                          Da würde ich mich vorbehaltlich einer gewissen Fehlertoleranz stur an die Spezifikation halten; wenn "ein real existierender Server" davon abweicht, hat er Pech.

                          Dann muss man sich eine Architektur überlegen.

                          Was gibt's da zu überlegen? Socket zum SMTP-Host öffnen, SMTP-Dialog führen, Antwort(en) abwarten, Fehler abfangen, zum Schluss Verbindung schließen und Status (Erfolg oder Fehlercode) zurückmelden.

                          Dann richtet man sich eine lokale Entwicklungsumgebung ein.

                          Die setze ich bereits voraus.

                          Dann kann man anfangen Tests zu schreiben, für jedes MUST in der Spezifikation sollte es mindestens einen Test geben.

                          Ja, ich weiß: Die Profis machen das mit dem Testen sehr systematisch und ausführlich. Ich würde das Testen hier stark vereinfachen, da es sich im Wesentlichen um einen streng sequentiellen Ablauf mit kontrollierten Abbruchbedingungen handelt.

                          Dann kan man die Library debuggen.

                          Das hat man - deiner Beschreibung nach - doch bis hierher schon lang und breit getan.

                          Wenn dann wirklich mal eine erste Version existiert, dann muss man sich übers Deployment Gedanken machen. Wenn das kein Wegwerf-Skript werden soll, dann muss man sich über CI-Pipelines Gedanken machen.

                          Hä?

                          Wenn man Glück hat, gibt es eine DevOps-Abteilung, die das übernimmt.

                          Hä?

                          Wenn ich den Auftrag aufbekäme, einen SMTP-Client zu programmieren, würde ich mir schon mindestens einen Tag Zeit nehmen, um den Entwicklungs-Prozess zu planen, Aufwände abzuschätzen, Features zu priorisieren.

                          Wie gesagt: Ich mach das nicht professionell. Ich mach das, wenn überhaupt, für den Eigenbedarf, aus Spaß oder wegen der technischen Herausforderung. Wenn's gut läuft, könnte ich mir vorstellen, das fertige Modul dann zu veröffentlichen. Muss aber nicht sein.

                          Aber vermutlich würde ich dem Kunden gleich davon abraten und zu einer bereits erprobten Implementierung raten, die den Test der Zeit bereits bewältigt hat und starken Community-Support erfährt.

                          Wir denken eindeutig in unterschiedlichen Dimensionen.

                          So long,
                           Martin

                          --
                          Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
                          1. Was gibt's da zu überlegen? Socket zum SMTP-Host öffnen, SMTP-Dialog führen, Antwort(en) abwarten, Fehler abfangen, zum Schluss Verbindung schließen und Status (Erfolg oder Fehlercode) zurückmelden.

                            Manche Hosts wollen ein Hello, manche ein Bestimmtes. Manche wollen direkt SSL, manche erst nach der Verbindung. Und, und, und...

                            Sorry, Du machst es Dir zu einfach.

                            1. Was gibt's da zu überlegen? Socket zum SMTP-Host öffnen, SMTP-Dialog führen, Antwort(en) abwarten, Fehler abfangen, zum Schluss Verbindung schließen und Status (Erfolg oder Fehlercode) zurückmelden.

                              Manche Hosts wollen ein Hello, manche ein Bestimmtes. Manche wollen direkt SSL, manche erst nach der Verbindung. Und, und, und...

                              Genau das sind ja die Kompetenzen die dem Provider zustehen, deren Einhaltung und Verlässlichkeit er garantiert und dafür auch bezahlt wird.

                              Siehe ebenda

                              Und genau deswegen wird ein Povider auch keinen Swiftmailer oder eine andere SMTP-CLient-Library installieren sondern seinen Kunden eine Schnittstelle anbieten die seine Kompetenzbereiche nicht verletzen.

                              MFG

                          2. Wenn's gut läuft, könnte ich mir vorstellen, das fertige Modul dann zu veröffentlichen.

                            Natürlich schreiben wir über unsere Hobbies, hier ist meine Lösung für Mails mit Attachment.

                            MFG

                            1. hier ist meine Lösung für Mails mit Attachment.

                              Du hast den Kontextwechsel zu multipart/mixed missachtet. Genauso baut man eine Spammschleuder.

                          3. Da würde ich mich vorbehaltlich einer gewissen Fehlertoleranz stur an die Spezifikation halten; wenn "ein real existierender Server" davon abweicht, hat er Pech.

                            Das wird der "real geforderten Praxistauglichkeit" Deines Moduls nicht gut tun 😉

    2. langer Rede kurzer Sinn: Verwende Swiftmailer (PHP-Programm)

      1. Konfiguriere ein echtes Postfach für den Mailversand.
      2. Binde Swiftmailer in Dein Projekt ein.
      3. Versende Mails mit Swiftmailer, welches den SMTP-Server mit den Logindaten deines Postfachs nutzt.

      Direkter Mailversand aus dem Scriptkontext (hier PHP) heraus pauschal als Königsweg zu verbreiten, finde ich nicht hilfreich. Was passiert, wenn der SMTP-Auth gerade wegen eines Netzwerkproblems schief läuft? Will man für jeden SMTP-Auth generell eine merkliche Scriptverzögerung akzeptieren?

      1. Hello,

        langer Rede kurzer Sinn: Verwende Swiftmailer (PHP-Programm)

        1. Konfiguriere ein echtes Postfach für den Mailversand.
        2. Binde Swiftmailer in Dein Projekt ein.
        3. Versende Mails mit Swiftmailer, welches den SMTP-Server mit den Logindaten deines Postfachs nutzt.

        Direkter Mailversand aus dem Scriptkontext (hier PHP) heraus pauschal als Königsweg zu verbreiten, finde ich nicht hilfreich. Was passiert, wenn der SMTP-Auth gerade wegen eines Netzwerkproblems schief läuft? Will man für jeden SMTP-Auth generell eine merkliche Scriptverzögerung akzeptieren?

        Das hängt doch nun wieder davon ab, ob der Hoster auch exec() & Schwestern abgeschaltet hat und welchex OS als Plattform läuft. Den Mailprozess in den Hintergrund zu schieben, wäre sonst nämlich möglich.

        Es gibt außer dem Swiftmailer weitere sehr gute Klassen füf PHP-Mail.

        Glück Auf
        Tom vom Berg

        --
        Es gibt nichts Gutes, außer man tut es!
        Das Leben selbst ist der Sinn.
        1. Das hängt doch nun wieder davon ab, ob der Hoster auch exec() & Schwestern abgeschaltet hat und welchex OS als Plattform läuft. Den Mailprozess in den Hintergrund zu schieben, wäre sonst nämlich möglich.

          Das ist nicht der Punkt. Auch wenn Du den Mailprozess in den Hintergrung schiebst, kann er trotzdem noch scheitern. Ein ausgewachsener MTA kümmert sich darum und probiert es erneut und loggt. Das müsstest Du mit PHP alles zunächst nachbauen. Happy Time 😉

          1. Hello,

            Das hängt doch nun wieder davon ab, ob der Hoster auch exec() & Schwestern abgeschaltet hat und welchex OS als Plattform läuft. Den Mailprozess in den Hintergrund zu schieben, wäre sonst nämlich möglich.

            Das ist nicht der Punkt. Auch wenn Du den Mailprozess in den Hintergrung schiebst, kann er trotzdem noch scheitern. Ein ausgewachsener MTA kümmert sich darum und probiert es erneut und loggt. Das müsstest Du mit PHP alles zunächst nachbauen.

            Das stimmt.
            Allerdings kommt man mit "normalen Einstellungen" mit PHP nicht an das Logging des Mailservers heran und es ist dann auch sehr unübersichtlich, das für genau diese eMail durchzuforsten.

            Es gibt eMail-Klassen für PHP, die genau dies erledigen. Muss man aber kaufen. Laufen auch nur mit der Zend-Engine.

            Wie Du schon schriebst, liegen die Schwierigkeiten in der Vielzahl möglicher Übertragungsprotokolle und deren Ergänzungen, die sich um smtp gruppieren.

            Glück Auf
            Tom vom Berg

            --
            Es gibt nichts Gutes, außer man tut es!
            Das Leben selbst ist der Sinn.
      2. Was passiert, wenn der SMTP-Auth gerade wegen eines Netzwerkproblems schief läuft?

        Dann geht die Mail in die ewigen Jagdgründe ein. Von daher ist es besser, Mails auf den localen Prozess (z.B. /usr/bin/sendmail) zu pipen da werden die nämlich gespoolt und die Wahrscheinlichkeit daß da eine Mail verlorengeht ist gering.

        MFG

        1. Was passiert, wenn der SMTP-Auth gerade wegen eines Netzwerkproblems schief läuft?

          Dann geht die Mail in die ewigen Jagdgründe ein. Von daher ist es besser, Mails auf den localen Prozess (z.B. /usr/bin/sendmail) zu pipen da werden die nämlich gespoolt und die Wahrscheinlichkeit daß da eine Mail verlorengeht ist gering.

          Das kannst Du so zunächst nicht wissen. Man ruft eine Binary auf. Was die letztlich tut? Komplett offen.

          Aber ja, ein vernünfig konfigurierter, lokaler MTA wird da hoffentlich am Start sein. Dann ist alles fein.

          1. Auf die Binary zu pipen hat u.a. den Vorteil, daß man sich an dieser Stelle nicht um eine Verschlüsselung, gleich welcher Art kümmern muss weil das Pipen eine lokale Angelegenheit ist.

            Schließlich ist die MTA'Konfiguration einschließlich Verschlüsselter Mailtransport eine hundertprozentige Angelegenheit des Providers (auch dafür kriegt der sein Geld).

            Diese Empfehlung habe ich vor 20 Jahren schon bekommen und sie hat sich immer wieder als richtig und zweckmäßig erwiesen. Im Übrigen empfiehlt auch mein derzeitiger Provider genau diese Vorgehensweise und stellt damit sicher daß von seinen MTA's alle Mails verschlüsselt rausgehen.

            MFG

    3. Hallo

      langer Rede kurzer Sinn: Verwende Swiftmailer (PHP-Programm)

      1. Konfiguriere ein echtes Postfach für den Mailversand.
      2. Binde Swiftmailer in Dein Projekt ein.
      3. Versende Mails mit Swiftmailer, welches den SMTP-Server mit den Logindaten deines Postfachs nutzt.

      Linuchs will ja nicht einmal eine Absendeadresse von der Domain, auf der das Skript läuft, als Absender benutzen. Warum willst du ihm dann auch noch die Einrichtung eines Postfachs abfordern?

      Tschö, Auge

      --
      Ein echtes Alchimistenlabor musste voll mit Glasgefäßen sein, die so aussahen, als wären sie beim öffentlichen Schluckaufwettbewerb der Glasbläsergilde entstanden.
      Hohle Köpfe von Terry Pratchett
      1. Warum willst du ihm dann auch noch die Einrichtung eines Postfachs abfordern?

        $Hoster hat beschlossen, konfiguriert und verkündet dass Mails nur dann versendet werden, wenn sich $Kunde am Mailserver authentifiziert. (Nur) Dazu ist das Postfach erforderlich.

        Das soll es wohl Hackern erschweren, gehackte Webauftritte ohne Weiteres als Spamschleuder zu missbrauchen. Allerdings ist die Hürde sehr gering und nach meiner Ansicht sogar kontraproduktiv, weil der, der den Webauftritt hackt auch einen Weg für ein grep -PiR "user|passwor[td]" findet. Und irgendwo müssen die Daten dann ja stehen wenn ein PHP-Skript Mails versenden soll.

        Linuchs will ja nicht einmal eine Absendeadresse von der Domain, auf der das Skript läuft, als Absender benutzen.

        Manche Betreiber von Mailservern lassen nach der vorgenannten Authentifizierung die Angabe beliebiger Absender im Header zu.

  4. Hello,

    sind die üblichen Ports für eMail transparent verfügbar, oder hat der Hoster die gesperrt?

    Wenn sie offen sind, kannst Du mittels eigenem Script jedes Postoffice auf einem entfernten Mailserver benutzen, für das Du Zugangsdaten hast.

    Ich nehme an, dass Du für das Hostinhpaket bei one.com keinen Konsolenzugang (ssh) hast?

    Glück Auf
    Tom vom Berg

    --
    Es gibt nichts Gutes, außer man tut es!
    Das Leben selbst ist der Sinn.
    1. Wenn sie offen sind, kannst Du mittels eigenem Script jedes Postoffice auf einem entfernten Mailserver benutzen, für das Du Zugangsdaten hast.

      Bedeutet das, dass PHP eine Mail in der Form versendet wie z.B. Thunderbird und ich alle von PHP gesendeten Mails in meinem Mail-Programm (Thunderbird) im Ordner "gesendet" sehe?

      Dann verstehe ich, warum Thunderbird eine selbst gesendete Mail vom Mail-Server zurückholt, um sie unter „gesendet" abzulegen.

      Das ist interessant, wie geht das genau?

      1. Hallo,

        Wenn sie offen sind, kannst Du mittels eigenem Script jedes Postoffice auf einem entfernten Mailserver benutzen, für das Du Zugangsdaten hast.

        Bedeutet das, dass PHP eine Mail in der Form versendet wie z.B. Thunderbird und ich alle von PHP gesendeten Mails in meinem Mail-Programm (Thunderbird) im Ordner "gesendet" sehe?

        ob du die Mails im Sent-Ordner deines Mailclients siehst, ist eine ganz andere Geschichte. Das erfordert, dass a) dein e-Mail-Account IMAP unterstützt (und nicht nur POP3), und b) dein Mailer aktiv eine Kopie der gesendeten Nachricht in Sent ablegt.
        Unter diesen Voraussetzungen siehst du sie tatsächlich auch in deinem lokalen Mailclient.

        Dann verstehe ich, warum Thunderbird eine selbst gesendete Mail vom Mail-Server zurückholt, um sie unter „gesendet" abzulegen.

        Der holt keine gesendete Nachricht zurück, sondern legt nur eine Kopie ab, nachdem der Versand fehlerfrei gelaufen ist.

        Das ist interessant, wie geht das genau?

        Im Prinzip einfach:
        Dein Script "spricht" SMTP, verbindet sich mit deinem Postausgangsserver, meldet sich mit Benutzername und Kennwort an und verschickt dann die Nachricht.
        Dann "spricht" dein Script außerdem IMAP, verbindet sich mit deinem Posteingangsserver und legt diesem eine Kopie der gesendeten Nachticht in Sent.

        So long,
         Martin

        --
        Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
        1. Moin Martin,

          Der holt keine gesendete Nachricht zurück, sondern legt nur eine Kopie ab, nachdem der Versand fehlerfrei gelaufen ist.

          Nicht bei mir, ich habe nach dem erfolgreichen Mail-Versand den LAN-Stecker gezogen:

          Fehler

          Die Mail habe ich mir selbst geschickt und sie ist - nach Stecken des Steckers - im Posteingang erschienen, aber nicht unter gesendet.

          1. Hi Kalle,

            Der holt keine gesendete Nachricht zurück, sondern legt nur eine Kopie ab, nachdem der Versand fehlerfrei gelaufen ist.

            Nicht bei mir, ich habe nach dem erfolgreichen Mail-Versand den LAN-Stecker gezogen:

            Fehler

            Die Mail habe ich mir selbst geschickt und sie ist - nach Stecken des Steckers - im Posteingang erschienen, aber nicht unter gesendet.

            das bestätigt doch meine Erklärung: Der Versand ist geglückt, darum hast du die Nachricht im Posteingang. Das Ablegen einer Kopie im Nachgang in Sent ist nicht gelungen, weil du im "richtigen" Moment die Verbindung unterbrochen hast - also fehlt die Kopie.
            T-Bird bietet dir nun als eine Lösung an, die Kopie stattdessen lokal zu speichern.

            So long,
             Martin

            --
            Ich stamme aus Ironien, einem Land am sarkastischen Ozean.
      2. Hello,

        Wenn sie offen sind, kannst Du mittels eigenem Script jedes Postoffice auf einem entfernten Mailserver benutzen, für das Du Zugangsdaten hast.

        Bedeutet das, dass PHP eine Mail in der Form versendet wie z.B. Thunderbird und ich alle von PHP gesendeten Mails in meinem Mail-Programm (Thunderbird) im Ordner "gesendet" sehe?

        Genau. Das Script arbeitet dann als SMTP-Client.

        Dann verstehe ich, warum Thunderbird eine selbst gesendete Mail vom Mail-Server zurückholt, um sie unter „gesendet" abzulegen.

        Für das Lesen und Verwalten der versendeten Mails solltest Du IMAP verwenden. PHP hat dafür eigene IMAP-Funktionen. Und damit solltest Du in der Lage sein, das Verschieben der Mail aus dem "fertig"-Ordner der Sendewarteschlange in den "Gesendet"-Ordner des Postfaches direkt auf dem Server vornehmen zu lassen.

        Das ist interessant, wie geht das genau?

        Puh. Das lässt sich nicht in einem Satz erklären.

        Kämpfe ich auch gerade noch damit. Mein Ziel ist die halbautomatische Spambearbeitung im Zusammensüiel mit den Filtern header_checks und body_checks und für ganz schlimme Fälle nftables bzw. iptables.

        Glück Auf
        Tom vom Berg

        --
        Es gibt nichts Gutes, außer man tut es!
        Das Leben selbst ist der Sinn.