PHP отправляет электронную почту без подключения к Интернету через прокси-сервер, у которого есть подключение к Интернету

У меня есть приложение PHP, которое работает без Интернета. Я хочу использовать это приложение для отправки электронной почты через локальный прокси-сервер, который имеет активное подключение к Интернету.


person Tushar    schedule 11.09.2019    source источник
comment
На системном уровне это зависит от настройки вашей сети — прокси-сервер можно использовать в качестве шлюза по умолчанию для любого более широкого сетевого трафика. Так что, если вы можете ping сервер электронной почты - вы можете просто указать ссылку на сервер электронной почты, и сеть выберет соответствующий корень для доступа к нему.   -  person Nigel Ren    schedule 11.09.2019


Ответы (1)


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

Вместо этого вы обычно используете ретранслятор, а не прокси. Вы отправляете на реле, затем реле отправляет дальше в Интернет. Установите почтовый сервер на свой прокси-сервер и настройте его как реле для почтового сервера вашего локального сервера. Существует множество руководств о том, как это сделать, например это. Почти все такие руководства предполагают, что вы отправляете через какую-то внешнюю службу, такую ​​как gmail, которая требует аутентификации, поэтому вы увидите много ссылок на sasl и линию, однако, поскольку она находится в вашей локальной сети, вы можете вместо этого внести ее IP-адрес в белый список, чтобы вы могли реле без аутентификации. В postfix это настраивается в соответствии с документацией.

Когда вы это сделаете, проверьте это, отправив сообщение самому себе с помощью почтового клиента командной строки с вашего сервера:

echo "test" | mail -s "Relay test" -a "From: [email protected]" [email protected]

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

Как только вы узнаете, что ваша инфраструктура работает, вы можете использовать ее из PHPMailer двумя способами: напрямую обращаться к серверу ретрансляции:

$mail->isSMTP();
$mail->Host = '10.0.0.2'; //Your relay's internal IP
$mail->SMTPAuth = false; //Don't need authentication if whitelisted
//Prevent PHPMailer trying to use encryption; it won't work with a literal IP
$mail->SMTPAutoTLS = false;
$mail->SMTPSecure = false;

Или используйте локальный почтовый сервер вашего сервера, чтобы выполнить ретрансляцию за вас:

$mail->isSMTP();

(свойства по умолчанию будут работать, поэтому все, что вам нужно сделать, это включить SMTP).

person Synchro    schedule 11.09.2019