Почему PHP mail () требует почтовую программу, такую ​​как sendmail / postfix / etc. для отправки писем?

Почему функция mail() PHP требует почтовой программы, такой как sendmail / postfix / etc. для отправки писем?

Я прошу, потому что отправка электронной почты является действием клиента, а не тем, что нужно для запуска сервера.

Что сложного в создании собственной PHP-почты без необходимости устанавливать sendmail / postfix / etc. которая имеет чрезмерную функциональность в качестве сервера, который может получать запросы, а не просто отправлять электронную почту в качестве клиента?

Причина в том, что функция mail() не является MTA , а только «кодер» для реального MTA.

Почему нет? Я считаю, что было бы нецелесообразно внедрять достойную и безопасную настройку MTA с использованием только PHP.

EDIT: Что именно делает MTA?

Скорее всего: sendmail существовал до PHP- mail() , поэтому в истинном духе * nix:

Зачем повторно создавать функциональные возможности, если они уже существуют в CLI?

Причина, по которой вы хотите передать почту кому-то еще, – это то, что Mail – это сложный зверь, который лучше всего откладывается на что-то более совершенное, чтобы справиться с этим.

Простой случай – когда вы отправляете сообщение на сервер, находящийся в автономном режиме. «ОК» для того, чтобы почтовый сервер отключился, встроена логика для повторной отправки сообщений в операциях почтовых серверов. Но если вы просто открываете SMTP-сокет и запускаете протокол лая, и он терпит неудачу, вы потеряете эту возможность очередей, которую вы получаете «бесплатно» с почтовыми серверами.

Почта – это лишь одна из тех вещей, которые лучше всего делегированы тем древним системам, которые обладают всеми знаниями и деталями, закодированными для них в течение многих лет болезненного тестирования и реализации взаимодействия.

PHP не отправляет почту сам, но делегирует другую программу для отправки почты для нее.

Вы можете обойти это ограничение, используя вместо этого пакет PEAR Mail , который поддерживает SMTP.

Когда почтовый сервер отправляет (направляет) электронную почту на другой сервер, он действует как клиент и использует SMTP для пересылки электронной почты. Клиентская часть называется агентом доставки почты (MDA) и часто представляет собой отдельную часть программного обеспечения.

Эта часть учебника sendmail полезна.

Это называется «sendmail» по какой-то причине. Сети использовали его в течение десятилетий для взаимодействия. Знаете ли вы это или нет, это то, как отправляется почта. – Программой, ограниченной протоколом RFC и предназначенной для форматирования, упаковки и доставки данных … другим серверам. Он может работать как демон, сидящий на порту или из экземпляра, вызванного в cmdline. Это простой инструмент и эффективный.

-Gama Xul (* nix guy)

Попытка отправить почту с помощью чего-то другого, кроме программы отправки почты (например, клиент веб-браузера или мода на PHP), походит на попытку вырезать что-то с помощью пистолета. Там много чего происходит, и слишком много противоречивых условий могут повесить его. Он просто не был предназначен для этого и не работал бы эффективно.