Nikita Kipriyanov a écrit :
> We run a mail server with virtual domains (mainly there are mailbox
> domains).
> 
> For a certain things same aliases needed in the each and every virtual
> domain in the system. For example, all these domains maintained by same
> people, so it is good thing to have each domain's postmaster mapped to
> the same internal distribution list. There are also other common aliases.
> 
> To simplify things, I added a regexp table
> (/etc/postfix/virtual_alias_maps-special):
> 
> /^postmaster@/     postmaster
> 
> This table is referenced in the main.cf this way:
> virtual_alias_maps = regexp:/etc/postfix/virtual_alias_maps-special
> mysql:/etc/postfix/virtual_alias_maps.cf
> 
> There is no address rewriting, masqerading and other things that change
> destination or source address. We're using only local aliases and
> virtual aliases. There is also no per-recipient transports and
> relayhost, any mail is delivered directly to recipient's MX servers.
> 
> The local alias table redirects postmaster's mail further.
> 
> Of course, this catches all mail for each domain's postmaster. But, now
> I'm not able to send any mail to any external postmaster
> (postmas...@some.domain, some.domain isn't a virtual, relay or canonical
> domain) with this server. If I try to send mail, for example, to
> postmas...@postfix.org, it's getting catched and delivered to my
> postmaster list.


virtual_alias_maps apply to _all_ domains. you should only setup these
aliases for your own domains. since you are using mysql, let mysql do it
for you:

virtual_alias_maps =
        mysql:/etc/postfix/virtual_alias_maps.cf
        mysql:/etc/postfix/standard_aliases.cf

and in the latter, use something like:

query = select 'postmas...@example.com'
        from YourDomainTable
        where
                '%u' = 'postmaster'
        AND
                '%d' = domain

(Note: the query only returns a result if the domain part is listed in
your domains table).

now, once you do this, you could build a table for the "standard"
aliases instead of hardcoding 'postmaster'...

> Still, if I try to deliver mail to postmas...@postfix.org through this
> server from external systems without SMTP authentication, it rejects
> with "Relay access denied".
> 

relay access control and delivery (including alias expansion) are two
different things.

> Why Postfix behaves like this? How to catch only 'incoming' mail, and to
> send it away it if recipiend domain isn't listed in the virtual, local,
> and relay domain tables?

all mail is "incoming" when it is received and becomes "outgoing" when
it is forwarded. an MTA is not a mail user agent.

note that you can't simply separate reception and submission
functionalities (by using different instances or different
smtpd+cleanup... etc), because even an "inbound only" MTA needs to reach
the sender in some cases (bounce, DSN, ...).

Reply via email to