fix(smtp): add STARTTLS support for port 587
- Add STARTTLS handshake after EHLO for port 587 - Upgrade socket to SSL after STARTTLS command - Perform second EHLO over encrypted connection - Resolves authentication issues with Hetzner and other SMTP providers - Fixes 'Must issue a STARTTLS command first' error Closes #113
This commit is contained in:
parent
9cd8f4bce0
commit
304b010a56
1 changed files with 27 additions and 0 deletions
27
src/smtp.lua
27
src/smtp.lua
|
|
@ -237,6 +237,33 @@ function SMTP:send_email(to_address, subject, message, from_name)
|
||||||
return cleanup_and_fail("EHLO failed: " .. response)
|
return cleanup_and_fail("EHLO failed: " .. response)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- STARTTLS hinzufügen für Port 587
|
||||||
|
if self.port == 587 and self.use_ssl then
|
||||||
|
-- STARTTLS command
|
||||||
|
local success, response = self:send_command(sock, "STARTTLS", 220)
|
||||||
|
if not success then
|
||||||
|
return cleanup_and_fail("STARTTLS failed: " .. response)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Upgrade connection to SSL
|
||||||
|
local ssl_sock, err = self.ssl_compat:wrap_socket(sock, {
|
||||||
|
mode = "client",
|
||||||
|
protocol = "tlsv1_2"
|
||||||
|
})
|
||||||
|
|
||||||
|
if not ssl_sock then
|
||||||
|
return cleanup_and_fail("SSL upgrade failed: " .. err)
|
||||||
|
end
|
||||||
|
|
||||||
|
sock = ssl_sock
|
||||||
|
|
||||||
|
-- EHLO again over encrypted connection
|
||||||
|
local success, response = self:send_command(sock, "EHLO furt-lua", 250)
|
||||||
|
if not success then
|
||||||
|
return cleanup_and_fail("EHLO after STARTTLS failed: " .. response)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- AUTH LOGIN
|
-- AUTH LOGIN
|
||||||
local success, response = self:send_command(sock, "AUTH LOGIN", 334)
|
local success, response = self:send_command(sock, "AUTH LOGIN", 334)
|
||||||
if not success then
|
if not success then
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue