Что такое аргументы командной строки Curl SMTP для поддержки GMail TLS/STARTTLS vs SSL

Я использую Curl.exe в приложении для отправки писем. Мне нужно поддерживать большинство основных почтовых серверов. GMail предоставляет следующие порты и методы проверки подлинности.

  • TLS/STARTTLS (иногда называемый явным TLS): использует порт 587
  • SSL (иногда называемый неявным TLS): использует порт 465

Я получил Явный TLS для работы, используя следующую командную строку:

C:\>curl smtp://smtp.gmail.com:587 -v --mail-from "[email protected]" --mail-rcpt 
"[email protected]" --ssl -u [email protected]:password -T "c:\test.txt" -k --anyauth

Я попробовал следующее, чтобы заставить ImplicitTLS работать, но это не так.

C:\>curl smtp://smtp.gmail.com:465 -v --mail-from "[email protected]" --mail-rcpt 
"[email protected]" --ssl -u [email protected]:password -T "c:\test.txt" -k --anyauth

Каковы правильные параметры командной строки, чтобы заставить SSL/Implicit TLS работать?

Ответ 1

Используйте smtps:// для SMTPS (т.е. SMTP поверх существующего соединения SSL/TLS).

Это работает:

curl smtps://smtp.gmail.com:465 -v

Я также использовал бы --ssl-reqd для явного подключения STARTTLS, чтобы убедиться, что SSL/TLS используется, когда вы ожидаете, что это произойдет (в противном случае возможны атаки с понижением).

Не используйте -k, проверьте сертификат сервера: см. http://curl.haxx.se/docs/sslcerts.html

Ответ 2

Ну, я просто попробовал следующее, и он отлично работает:

curl smtps://smtp.gmail.com:465 -v --mail-from "[email protected]" --mail-rcpt "[email protected]" --ssl -u [email protected]:password -T "test.txt" -k --anyauth

надеюсь, что это поможет!