Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LMTP Support #267

Open
MHillyer opened this issue Sep 9, 2024 · 1 comment
Open

LMTP Support #267

MHillyer opened this issue Sep 9, 2024 · 1 comment
Labels
enhancement New feature or request

Comments

@MHillyer
Copy link
Collaborator

MHillyer commented Sep 9, 2024

No description provided.

@MHillyer MHillyer converted this from a draft issue Sep 9, 2024
@MHillyer MHillyer added this to the Fall 24 Release milestone Sep 9, 2024
@MHillyer MHillyer added the enhancement New feature or request label Sep 9, 2024
@wez wez removed their assignment Sep 16, 2024
@wez
Copy link
Collaborator

wez commented Sep 16, 2024

rfc: https://www.rfc-editor.org/rfc/rfc2033

Expand https://docs.kumomta.com/reference/kumo/make_queue_config/protocol/ to allow specifying that lmtp should be used.

Add an LHLO method similar to

pub async fn ehlo(

Teach

// Say EHLO
let pretls_caps = client
.ehlo(&ehlo_name)
.await
.with_context(|| format!("{address:?}:{port}: EHLO after banner"))?;
to use it when lmtp is enabled

wez added a commit that referenced this issue Dec 17, 2024
This enables LMTP over TCP by setting `use_lmtp = true` in the
egress path configuration.

refs: #267
wez added a commit that referenced this issue Dec 17, 2024
One frustration I have with the Rust standard library types is
that while it has a SocketAddr type, that type doesn't include
unix domain addressing like the underlying unix OS does in the
underlying system type.

I understand why it is that way, it's still a bit of a PITA.

Since we want to enable the use of unix domain sockets for
outbound LMTP support, our internal addressing type needs to
be able to represent a unix domain address.

This commit introduces our own HostAddress (equivalent to IpAddr,
but not limited to IP addresses) and SocketAddress (equivalent to
SockAddr, but not limited to IP sockets) types.

The ResolvedAddress type has been cut over from IpAddr to HostAddress
and the fan out addressed.

This commit does not add support for establishing unix domain
connections, it is merely the ability to recognize/report on them.

refs: #267
wez added a commit that referenced this issue Dec 17, 2024
This commit allows setting the queue config to use a unix domain socket
path:

```
        protocol = {
          smtp = {
            mx_list = { '/some/path' },
          },
        },
```

and the smtp dispatcher will attempt to connect to it via a unix domain
socket.

It is anticipated that this will be used together with an egress path
config set to `use_lmtp = true`.

I've tested the ability to attempt to connect, but I don't have a
convenient implementation of SMTP/LMTP to test against here, so all I've
tested if that we can successfully fail to connect to a unix domain
socket.

refs: #267
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: Todo
Development

No branches or pull requests

2 participants