On 02.11.2019 0:41, Reio Remma wrote:
On 31.10.2019 10:06, [email protected] wrote:
October 26, 2019 1:23 PM, "Reio Remma"<[email protected]> wrote:
On 26/10/2019 14:18, Reio Remma wrote:
On the subject of catch all aliases, I tried adding one to my setup > with odd
results.
My usual setup with virtual users:
action deliver_lmtp lmtp "/var/run/dovecot/lmtp" rcpt-to virtual > <virtuals>
userbase <userinfo>
match from any for domain <domains> rcpt-to <recipients> action > deliver_lmtp
To get catch all working, I had to remove rcpt-to <recipients> from > the match:
match from any for domain <domains> action deliver_lmtp
Otherwise the response was: 550 Invalid recipient:<[email protected]>
One I removed the actual catch all alias and sent mail to a > non-existent
account, the usual:
550 Invalid recipient:<[email protected]>
turned into:
524 5.2.4 Mailing list expansion problem:<[email protected]>
Any ideas how I could use a catch all alias _and_ get a proper 550 > Invalid
recipient if I don't?
This is all with the current (v6.6) portable from a week ago or so.
This error occurs when aliases expansion encounters an error during its
processing,
there's not enough info here to understand what happened in the expansion loop:
- it is likely a table content issue either in virtuals or in userinfo table or
both
- using `smtpd -dv -T expand` will help you understand what went wrong during
expansion
Gilles
A couple of hours reading code and I'm fairly certain catchall aliases
don't work at all with database backends.
Mailaddr lookups from static tables use mailaddr_match to compare
address parts with catchall aliases, but table-mysql for example
doesn't do any extra work.
expand: 0x23b6628: expand_insert() called for
address:[email protected][parent=(nil), rule=(nil)]
expand: 0x23b6628: inserted node 0x23b8320
expand: lka_expand: address: [email protected] [depth=0]
lookup: match "209.85.167.41" as NETADDR in table static:<anyhost> -> true
lookup: match "domain.com" as DOMAIN in table static:<anydestination> ->
true
lookup: match "[email protected]" as MAILADDR in table proc:blacklist ->
false
lookup: match "209.85.167.41" as NETADDR in table static:<anyhost> -> true
lookup: match "domain.com" as DOMAIN in table proc:domains -> true
lookup: match "[email protected]" as MAILADDR in table proc:recipients ->
false
lookup: match "209.85.167.41" as NETADDR in table static:<localhost> ->
false
lookup: match "209.85.167.41" as NETADDR in table static:<anyhost> -> true
lookup: match "domain.com" as DOMAIN in table static:<anydestination> ->
true
lookup: match "209.85.167.41" as NETADDR in table static:<localhost> ->
false
lookup: match "209.85.167.41" as NETADDR in table static:sources -> false
no rule matched
The only query I see in the query log is trying to match the full
recipient address:
SELECT mailaddr FROM virtuals WHERE mailaddr = '[email protected]'
This works:
match from any for domain <domains> rcpt-to {'@domain.com', ... } action
deliver
This doesn't:
match from any for domain <domains> rcpt-to <mysql-mailaddr-recipients>
action deliver