foxcpp / foxcpp/maddy

SMTP Error code received doesn't match LMTP response

Open
#800 0 comments 0 reactions 1 assignee Claimed by @foxcpp View on GitHub
bug
Dominant language
Go
Stars
6.1k
Forks
327
PR merge metrics
No merged PRs in 30d

Description

# Description of the bug

When using LMTP to offload IMAP delivery to dovecot for instance, the return SMTP error code is not properly propagated

# Steps to reproduce

1. Send a mail to a maddy server that is using LTMP with dovecot as an IMAP backend
2. Let's say the recipient is exceeding its quota with this email
3. Maddy receives back a 552 error code from Dovecot
4. The error code is rewritten to 452 as per: https://github.com/foxcpp/maddy/blob/master/internal/smtpconn/smtpconn.go#L121 (for legacy support of too many RCPT If I got it correctly ?)
5. The sender mail server receives back a 554 (Internal server error) from maddy

# Log files

Here is a log of the different interaction (sender/receiver/dovecot). Both sender and receiver are running a maddy server:

https://hastebin.milkywan.fr/aqupejalus.pl

# Configuration file

Simple LMTP taget:
```
target.lmtp local_mailboxes {
targets unix:///var/run/dovecot2/lmtp-maddy
}
```
Called by a simple message pipeline:
```
msgpipeline local_routing {
destination $(local_domains) {
modify {
replace_rcpt &local_rewrites
}
deliver_to &local_mailboxes
}
default_destination {
reject 550 5.1.1 "User doesn't exist"
}
}
```
For dovecot:
```
service lmtp {
unix_listener lmtp-maddy {
mode = 0600
user = maddy
}
}
```

# Environment information

* maddy version: 0.8.1 linux/amd64 go1.24.6

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.