How, exactly, do postfix and dovecot communicate when postfix attempts to determine whether to deliver a message to the dovecot LDA, or to bounce it? In other words, how does postfix decide to bounce foo, and deliver bar, in these log messages:
This would be better answered on the postfix mailing list.
Postfix does not communicate with dovecot to know if an address is valid. You have to configure both Postfix and Dovecot separately to check the same source.
http://www.postfix.org/DATABASE_README.html
where vdomains contains:
bar@sub.example.com example.com/test/ bar@example.com example.com/test/ @sub.example.com example.com/test/ @example.com example.com/test/
postfix will deliver to bar@example.com, but not foo@example.com. I can't deliver anything to the subdomain. The interesting thing is that 'bar' already has a dovecot mailbox (the 'test' mailbox), but 'foo' doesn't.
Because you have to configure both Postfix and Dovecot to look at the same source and they don't communicate, it is possible you told Postfix that @example.com is a valid catch-all while neglecting to inform dovecot of the same. Postfix will accept the mail from the internet, attempt to hand it off to dovecot which gets rejected by dovecot (not postfix) because dovecot thinks it's not valid.