Skip to content

Email verification will not work with email servers that enforce RFC 5321 #223

@mtomasek780

Description

@mtomasek780

What happened?

If you are self-hosting and use an email server that enforces RFC 5321 for EHLO messaging being a properly formatted domain, the email cannot be sent. By default, the stoat-api-1 container will send an email with the hostname of the docker container, which is just the container ID. RFC 5321 requires a domain name or IP address, so emails are rejected. Here's a log of the issue occurring from the email server side:

`026-02-22T13:46:09Z TRACE Raw SMTP output sent (smtp.raw-output) listenerId = "smtp", localPort = 25, remoteIp = redacted, remotePort = 57057, size = 43, contents = "220 example.com Lets Talk\r\n"

2026-02-22T13:46:09Z TRACE Raw SMTP input received (smtp.raw-input) listenerId = "smtp", localPort = 25, remoteIp = redacted, remotePort = 47460, size = 19, contents = "EHLO bb5b0be39583\r\n"

2026-02-22T13:46:09Z INFO Invalid EHLO command (smtp.invalid-ehlo) listenerId = "smtp", localPort = 25, remoteIp = redacted, remotePort = 47460, domain = "bb5b0be39583"

2026-02-22T13:46:09Z TRACE Raw SMTP output sent (smtp.raw-output) listenerId = "smtp", localPort = 25, remoteIp = redacted, remotePort = 47460, size = 32, contents = "550 5.5.0 Invalid EHLO domain.\r\n"`

A potential solution is have a variable called domain in [api.smtp] in Revolt.toml or just take the domain from the existing from_address variable. Workarounds can be done by relaying to a server that is more lax in enforcement or using legacy TCP/465 with TLS encryption, but not TCP/587.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions