Отправка почты через HTTP-прокси с помощью curl
Проверьте разрешения CONNECT, TLS для SMTP и отдельные учётные данные прокси и почтовой службы, прежде чем пытаться отправить письмо.
HTTP-прокси может передавать соединение SMTP, если он разрешает туннель CONNECT к порту почтового сервера. Это разрешение важнее того, загружается ли веб-страница через тот же прокси.
Отправка через SMTP с STARTTLS имеет такой общий вид:
curl --proxy http://203.0.113.10:8080 --proxytunnel \
--url smtp://mail.example.com:587 --ssl-reqd \
--user mail-user \
--mail-from [email protected] \
--mail-rcpt [email protected] \
--upload-file message.eml
Адреса — это заполнители. Используйте почтовую службу и отправителя, на которые у вас есть разрешение. curl запрашивает пароль, когда в параметре пользователя указано только имя пользователя. Файлу сообщения нужны подходящие почтовые заголовки, пустая строка и тело; это не только адрес получателя.
Ожидайте отдельных соединений и входов
Параметр туннеля HTTP заставляет curl запросить у прокси соединение с пунктом назначения SMTP. Прокси может потребовать собственные учётные данные через параметры аутентификации прокси в curl. Затем служба SMTP аутентифицирует почтового пользователя внутри этого соединения.
--ssl-reqd требует обновления до TLS для этого URL SMTP. Оставляйте проверку сертификатов включённой для нужного имени почтового хоста. Успешная аутентификация на прокси не доказывает, что TLS или вход в почту пройдут успешно.
Многие универсальные HTTP-прокси ограничивают порты CONNECT. Отказ для порта 587 может быть намеренной политикой. Запросите одобренный маршрут вместо того, чтобы снова и снова пробовать посторонние порты или считать ограничение сбоем.
Почтовые службы могут также применять права отправителя и правила отправки после того, как маршрут заработает. Читайте ответ SMTP. Письмо, отклонённое после аутентификации, требует иного решения, чем туннель, отклонённый до прихода приветствия SMTP.