Это возрождение поддельной программы sendmail Байрона Джонса (https://www.glob.com.au/sendmail/). Если вам не нужна поддержка TLS v1.1 или v1.2, используйте оригинальную версию, Обе версии не поддерживаются, и обе они не поддерживаются активно.
sendmail.exe — это простое консольное приложение Windows, которое эмулирует опцию -t sendmail для доставки электронных писем, передаваемых через стандартный ввод.
он предназначен для облегчения запуска кода Unix, в котором /usr/lib/sendmail жестко запрограммирован как средство доставки электронной почты или программы, использующие метод канала sendmail, например, как использует php в Windows.
он не поддерживает отложенную доставку и требует, чтобы SMTP-сервер выполнял фактическую доставку сообщений.
Я использую поддельную программу sendmail уже несколько лет, но при использовании smtp-серверов Office 365 TLS v1.0 уже недостаточно, они требуют TLS v1.2, поэтому я попытался перекомпилировать исходный код, который Байрон Джонс включен в релиз на его сайте. Немного повозившись и внося некоторые незначительные изменения, мне удалось перекомпилировать программу Delphi 2007 в текущей версии Delphi builder 10.3 (Rio) от Embarcadero, созданной сообществом. Он содержит более новую версию Indy с поддержкой TLS v1.2 и обязательным TLS v1.1+ в коде sendmail.
Чтобы избавить кого-либо от необходимости перекомпилировать фальшивый sendmail из исходного кода, я разместил его на этом сайте github, включая исходный код, так же, как и оригинальную версию.
Загрузите sendmail.zip с этого github и разархивируйте его содержимое во временную папку в вашей системе.
скопируйте файлы sendmail.exe, sendmail.ini и оба файла .dll в usrlib на диске, где установлено приложение unix. например. если ваше приложение установлено на c:, sendmail.exe и sendmail.ini необходимо скопировать в c:usrlibsendmail.exe и c:usrlibsendmail.ini или в другой каталог, если путь не указан не жестко запрограммировано в приложении, которое его использует.
настройте smtp-сервер и домен по умолчанию в sendmail.ini.
обычно все, что вам нужно сделать, это установить sendmail.exe в usrlib, и существующий код, вызывающий /usr/lib/sendmail, будет работать.
если вы пишете код для новых приложений, все, что вам нужно сделать, это создать сообщение электронной почты с полными заголовками, а затем передать его по каналу sendmail.exe -t.
В PHP путь sendmail не запрограммирован жестко, его можно настроить в файле php.ini, поэтому sendmail.exe и его файлы можно размещать вместе в любом месте системы, в конфигурации для параметра sendmail_path указано «только для Unix», но он работает в Windows, он переопределяет 3 параметра только для Win32 над ним, см. руководство по PHP (https://www.php.net/manual/en/mail.configuration.php#ini.sendmail-path)
Примечание. Если ваш SMTP-сервер не требует аутентификации или шифрования, вы можете просто использовать параметры конфигурации SMTP и SMPT_PORT, чтобы указать smtp-сервер, тогда sendmail.exe вам не понадобится.
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
В sendmail.ini вы указываете адрес smtp-сервера и комбинацию имени пользователя и пароля.
В случае успеха Sendmail устанавливает ERRORLEVEL на 0.
В версии 28 и выше для параметра ERRORLEVEL установлено значение -1, если электронное письмо не удалось доставить. Значение было изменено для обеспечения лучшей совместимости с PHP, который ожидает, что ERRORLEVEL будет равен -1 в случае сбоя.
раскомментируйте запись debug_logfile в sendmail.ini и попытайтесь повторно отправить ошибочное сообщение. это должно создать файл debug.log в том же каталоге, что и sendmail.exe, показывающий полную стенограмму SMTP.
Пожалуйста, посетите сайт оригинальных версий: https://www.glob.com.au/sendmail/.
Эта программа распространяется под лицензией BSD: https://www.glob.com.au/sendmail/license.html.
Сведения о лицензии и полный исходный код (Delphi 10.3 Rio) включены в исходную папку zip-файла и в этот репозиторий.