I don't think it's possible to have one postfix process listen on all addresses but use multiple hostnames for eg HELO headers, because the SMTP protocol doesn't support any way for the client to specify the hostname.
Consider for a moment HTTP Virtual hosting as a similar scenairo, perhaps the one you have in mind. The client resolves the hostname, then makes an HTTP request, specifying the hostname in the Host
header. This header is what makes virtual hosting possible.
Now consider HTTPS. Until relatively recently, there was no way to host multiple HTTPS virtual hosts on a server because the Host
header was part of the encrypted payload, and thus the TLS session had to be established before the Host header would be sent. But since the certificate provided by the server was dependent on the Host
name used, this meant that an IP address had to be dedicated to each distinct HTTPS server name ( or more accurately, each https certificate common name. Wildcards could match multiples ).
Relatively recently the SNI extension was added to HTTPS to alleviate that problem, so now the Host
header is available to the server before the TLS session is established.
OK, let's jump back to SMTP. An SMTP client doesn't specify a particular server name when it connects. The server actually identifies itself before the host asks anything!
$ telnet gmail-smtp-in.l.google.com. 25
Trying 74.125.29.27...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP 11si20717228qkl.61 - gsmtp
There is, however, something you can do in your situation, but it's rather inconvenient. You can run multiple postfix servers, each listening on a dedicated IP, and each configured to respond with the appropriate name. It is in my understanding the only way to achieve what you want, and analogous to running https servers on dedicated IPs in the pre-SNI days.
Hope it helps.