Dies ist eine Wiederbelebung des gefälschten Sendmail-Programms von Byron Jones (https://www.glob.com.au/sendmail/). Wenn Sie keine Unterstützung für TLS v1.1 oder v1.2 benötigen, verwenden Sie bitte die Originalversion. Für beide Versionen ist kein Support verfügbar und beide werden nicht aktiv gewartet.
sendmail.exe ist eine einfache Windows-Konsolenanwendung, die die Option -t von sendmail emuliert, um über stdin weitergeleitete E-Mails zuzustellen.
Es soll die Ausführung von Unix-Code erleichtern, der /usr/lib/sendmail als E-Mail-Zustellungsmittel fest codiert hat, oder von Programmen, die die Sendmail-Pipe-Methode verwenden, wie sie beispielsweise PHP unter Windows verwendet.
Es unterstützt keine verzögerte Zustellung und erfordert einen SMTP-Server, um die tatsächliche Zustellung der Nachrichten durchzuführen.
Ich verwende das gefälschte Sendmail-Programm schon seit einigen Jahren, aber wenn ich Office 365-SMTP-Server verwende, reicht TLS v1.0 nicht mehr aus, sie erfordern TLS v1.2, also habe ich versucht, die Quelle von Byron Jones neu zu kompilieren in der Veröffentlichung auf seiner Website enthalten. Mit etwas Fummelei und einigen kleineren Änderungen konnte ich das Delphi 2007-Programm in der aktuellen Community-Edition von Delphi Builder 10.3 (Rio) von Embarcadero neu kompilieren. Diese enthält eine neuere Indy-Version, die TLS v1.2 unterstützt und TLS v1.1+ im Sendmail-Code erzwingt.
Um allen anderen die Mühe zu ersparen, das gefälschte Sendmail aus dem Quellcode neu zu kompilieren, habe ich es auf dieser Github-Site verfügbar gemacht, einschließlich des Quellcodes, genau wie die Originalversion.
Laden Sie sendmail.zip von diesem Github herunter und entpacken Sie den Inhalt in einen temporären Ordner auf Ihrem System
Kopieren Sie sendmail.exe, sendmail.ini und beide DLL-Dateien nach usrlib auf dem Laufwerk, auf dem die Unix-Anwendung installiert ist. z.B. Wenn Ihre Anwendung auf c: installiert ist, müssen sendmail.exe und sendmail.ini nach c:usrlibsendmail.exe und c:usrlibsendmail.ini oder in ein anderes Verzeichnis kopiert werden, wenn der Pfad n lautet Es ist in der Anwendung, die es verwendet, nicht fest codiert.
Konfigurieren Sie den SMTP-Server und die Standarddomäne in sendmail.ini.
Im Allgemeinen müssen Sie lediglich sendmail.exe in usrlib installieren, und vorhandener Code, der /usr/lib/sendmail aufruft, funktioniert.
Wenn Sie neue Anwendungen programmieren, müssen Sie lediglich Ihre E-Mail-Nachricht mit vollständigen Headern erstellen und sie dann an „sendmail.exe -t“ weiterleiten.
Mit PHP ist der Sendmail-Pfad nicht fest codiert, er kann in der Datei php.ini konfiguriert werden, sodass sendmail.exe und seine Dateien überall auf dem System zusammen platziert werden können. Die Konfiguration gibt für die Option sendmail_path „Nur Unix“ an. aber es funktioniert unter Windows, es überschreibt die 3 darüber liegenden Win32-Optionen, siehe PHP-Handbuch (https://www.php.net/manual/en/mail.configuration.php#ini.sendmail-path)
Hinweis: Wenn Ihr SMTP-Server keine Authentifizierung oder Verschlüsselung erfordert, können Sie einfach die Konfigurationsparameter SMTP und SMPT_PORT verwenden, um einen SMTP-Server anzugeben. Dann benötigen Sie sendmail.exe nicht.
PHP.ini:
[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP = localhost
; http://php.net/smtp-port
;smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = [email protected]
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "C:sendmailsendmail.exe -t"
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail().
;mail.force_extra_parameters =
; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On
In der sendmail.ini geben Sie die SMTP-Serveradresse und die Kombination aus Benutzername und Passwort an
Bei Erfolg setzt Sendmail den ERRORLEVEL auf 0.
Version 28 und höher setzen den ERRORLEVEL auf -1, wenn die E-Mail nicht zugestellt werden konnte. Der Wert wurde geändert, um eine bessere Kompatibilität mit PHP zu gewährleisten, das bei einem Fehler den ERRORLEVEL-Wert -1 erwartet.
Kommentieren Sie den Eintrag debug_logfile in sendmail.ini aus und versuchen Sie, eine fehlgeschlagene Nachricht erneut zu senden. Dadurch sollte debug.log im selben Verzeichnis wie sendmail.exe erstellt werden und das vollständige SMTP-Transkript angezeigt werden.
Bitte besuchen Sie die Website mit den Originalversionen: https://www.glob.com.au/sendmail/
Dieses Programm wird unter der BSD-Lizenz veröffentlicht: https://www.glob.com.au/sendmail/license.html
Die Lizenzdetails und der vollständige Quellcode (Delphi 10.3 Rio) sind im Quellordner in der ZIP-Datei und in diesem Repository enthalten.