VERP and Bounce ( Mailer-Delivery) emails.

Dear KumoMTA Team,

I need assistance regarding VERP and Bounce emails.

KumoMTA Version: 2024.09.02-c5476b89
OS: Linux smtp-iunox 6.8.4-2-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.4-2 (2024-04-10T17:36Z) x86_64 x86_64 x86_64 GNU/Linux

We have successfully configured KumoMTA as an outgoing SMTP server for a newsletter system, handling multiple tenants and source IPs. So far, it has been working well.

It became necessary to configure VERP. We managed to send emails to Gmail and Yahoo successfully, with the return-path being set correctly. However, when sending to non-existent addresses, the Mail Delivery email does not arrive at the address specified in the return-path. We can see the email in the logs under the bounce category, but it doesn’t show up in the email account.

I tried configuring this, but it had no effect. I’m not even sure if this is what I need in my case:
https://docs.kumomta.com/userguide/configuration/bounce/

Using the same VERP test email on a Postfix server, all mail delivery emails arrive at the address specified in the return-path.

I’m a bit lost among DNS / MDN / NDN issues. Could it be that this needs to be approached differently, or is it related to this?
https://github.com/KumoCorp/kumomta/issues/198

Thanks for your help in advance.

Read the READ ME FIRST above and provide the additional information required.

SWAKS

 swaks --to asdasdasdbranko@indamail.hu --from bounce+brankovics.teszt=gmail.com@iuno.hu --server smtp-iunox.webdream.lan --port 25
=== Trying smtp-iunox.webdream.lan:25...
=== Connected to smtp-iunox.webdream.lan.
<-  220 iunox.webdream.hu Welcome to WebdreamMTA - IunoX
 -> EHLO prometheus
<-  250-iunox.webdream.hu Aloha prometheus
<-  250-PIPELINING
<-  250-ENHANCEDSTATUSCODES
<-  250 STARTTLS
 -> MAIL FROM:<bounce+brankovics.teszt=gmail.com@iuno.hu>
<-  250 OK EnvelopeAddress("bounce+brankovics.teszt=gmail.com@iuno.hu")
 -> RCPT TO:<asdasdasdbranko@indamail.hu>
<-  250 OK EnvelopeAddress("asdasdasdbranko@indamail.hu")
 -> DATA
<-  354 Send body; end with CRLF.CRLF
 -> Date: Thu, 19 Sep 2024 15:22:58 +0200
 -> To: asdasdasdbranko@indamail.hu
 -> From: bounce+brankovics.teszt=gmail.com@iuno.hu
 -> Subject: test Thu, 19 Sep 2024 15:22:58 +0200
 -> Message-Id: <20240919152258.078129@prometheus>
 -> X-Mailer: swaks v20190914.0 jetmore.org/john/code/swaks/
 -> 
 -> This is a test mailing
 -> 
 -> 
 -> .
<-  250 OK ids=49b8002b768a11efaf8dbc2411885e85
 -> QUIT
<-  221 So long, and thanks for all the fish!
=== Connection closed with remote host.

KumoMTA Log:

{"type":"Reception","id":"49b8002b768a11efaf8dbc2411885e85","sender":"bounce+brankovics.teszt=gmail.com@iuno.hu","recipient":"asdasdasdbranko@indamail.hu","queue":"Site-A@indamail.hu","site":"","size":1166,"response":{"code":250,"enhanced_code":null,"content":"","command":null},"peer_address":{"name":"prometheus","addr":"10.252.1.187"},"timestamp":1726752178,"created":1726752178,"num_attempts":0,"bounce_classification":"Uncategorized","egress_pool":null,"egress_source":null,"source_address":null,"feedback_report":null,"meta":{},"headers":{"To":"asdasdasdbranko@indamail.hu","Subject":"test Thu, 19 Sep 2024 15:22:58 +0200","From":"bounce+brankovics.teszt=gmail.com@iuno.hu"},"delivery_protocol":null,"reception_protocol":"ESMTP","nodeid":"160e1749-8eb7-4d0d-b589-e107a8eb556e"}
/srv/kumomta/log/20240919-132303_bounce
{"type":"Bounce","id":"49b8002b768a11efaf8dbc2411885e85","sender":"bounce+brankovics.teszt=gmail.com@iuno.hu","recipient":"asdasdasdbranko@indamail.hu","queue":"Site-A@indamail.hu","site":"site-a-pool-src-1->mx.dka.mailcore.net@smtp_client","size":1166,"response":{"code":550,"enhanced_code":{"class":5,"subject":1,"detail":1},"content":"<asdasdasdbranko@indamail.hu>: Recipient address rejected: User unknown in relay recipient table","command":"RCPT TO:<asdasdasdbranko@indamail.hu>\r\n"},"peer_address":{"name":"mx.dka.mailcore.net.","addr":"185.138.56.208"},"timestamp":1726752183,"created":1726752178,"num_attempts":0,"bounce_classification":"InvalidRecipient","egress_pool":"site-a-pool","egress_source":"site-a-pool-src-1","source_address":{"address":"10.1.1.32:51613"},"feedback_report":null,"meta":{},"headers":{"From":"bounce+brankovics.teszt=gmail.com@iuno.hu","To":"asdasdasdbranko@indamail.hu","Subject":"test Thu, 19 Sep 2024 15:22:58 +0200"},"delivery_protocol":"ESMTP","reception_protocol":"ESMTP","nodeid":"160e1749-8eb7-4d0d-b589-e107a8eb556e","tls_cipher":"TLS13_AES_256_GCM_SHA384","tls_protocol_version":"TLSv1_3","tls_peer_subject_name":["CN=mx.dka.mailcore.net"]}
[10.252.1.187:34978->10.1.1.32:25]   0ns === Connected 2024-09-19 13:22:58.556823854 UTC
[10.252.1.187:34978->10.1.1.32:25]   0ns === conn_meta hostname="iunox.webdream.hu"
[10.252.1.187:34978->10.1.1.32:25]   0ns === conn_meta received_from="10.252.1.187:34978"
[10.252.1.187:34978->10.1.1.32:25]   0ns === conn_meta received_via="10.1.1.32:25"
[10.252.1.187:34978->10.1.1.32:25]   0ns === conn_meta reception_protocol="ESMTP"
[10.252.1.187:34978->10.1.1.32:25]  58µs <-  220 iunox.webdream.hu Welcome to WebdreamMTA - IunoX
[10.252.1.187:34978->10.1.1.32:25]   9ms  -> EHLO prometheus
[10.252.1.187:34978->10.1.1.32:25]   9ms === smtp_server_ehlo: Ok
[10.252.1.187:34978->10.1.1.32:25]   9ms <-  250-iunox.webdream.hu Aloha prometheus
[10.252.1.187:34978->10.1.1.32:25]   9ms <-  250-PIPELINING
[10.252.1.187:34978->10.1.1.32:25]   9ms <-  250-ENHANCEDSTATUSCODES
[10.252.1.187:34978->10.1.1.32:25]   9ms <-  250 STARTTLS
[10.252.1.187:34978->10.1.1.32:25]  25ms  -> MAIL FROM:<bounce+brankovics.teszt=gmail.com@iuno.hu>
[10.252.1.187:34978->10.1.1.32:25]  25ms === smtp_server_mail_from: Ok
[10.252.1.187:34978->10.1.1.32:25]  25ms <-  250 OK EnvelopeAddress(\"bounce+brankovics.teszt=gmail.com@iuno.hu\")
[10.252.1.187:34978->10.1.1.32:25]  40ms  -> RCPT TO:<asdasdasdbranko@indamail.hu>
[10.252.1.187:34978->10.1.1.32:25]  40ms === get_listener_domain domain=iuno.hu: Ok
[10.252.1.187:34978->10.1.1.32:25]  40ms === get_listener_domain domain=indamail.hu: Ok
[10.252.1.187:34978->10.1.1.32:25]  40ms === smtp_server_rcpt_to: Ok
[10.252.1.187:34978->10.1.1.32:25]  40ms <-  250 OK EnvelopeAddress(\"asdasdasdbranko@indamail.hu\")
[10.252.1.187:34978->10.1.1.32:25]  48ms  -> DATA
[10.252.1.187:34978->10.1.1.32:25]  48ms <-  354 Send body; end with CRLF.CRLF

You received a bounce email, it logged a bounce email.

Yes, but not sending an NDR email to the mailbox.

So you don’t parse the logs?

We do not yet use webhook or other analytics.
We wanted the basic MailDelivery report email to arrive in the inbox so that we could analyse it via imap.

And what if the bounce happens during a live connection and not as an incoming bounce?

Yes, we have dug deeper into this.
The soft and hard bounce category came in.
We can only get a complete picture if we analyse the smtp logs and the delivery reports received in the mailbox together.

But the delivery report sent back is recorded in that same log file.

We just didn’t understand why kuma doesn’t generate this NDR email, while postfix does:

Sep 19 14:38:12 smtp postfix/bounce[1908888]: C88B24036E: sender non-delivery notification: 1031140433

It’s not generating it, it’s a question of relaying it onward.

How?

You didn’t share your configs as per the READ ME FIRST so it’s hard to advice on specifically what you need to change.

I attach the init.lua file

But, if you’re using listener_domains.lua as a helper, then you have a config file for it with the incoming domain listed. You must have enabled log_oob, you also need to enable relay_to.

And then look at Configuring Bounce Classification - KumoMTA Docs