[prev in list] [next in list] [prev in thread] [next in thread] 

List:       postfix-users
Subject:    Appropriate mydestination/local_transport setting for a split server config?
From:       Alexander Perlis <aperlis () math ! lsu ! edu>
Date:       2020-05-31 3:10:24
Message-ID: EAF01C63-E8CC-4FA1-AE2A-F901A38EA53D () math ! lsu ! edu
[Download RAW message or body]

Some of my users want to migrate to a cloud mail provider (with the same mail domain \
name), while others want to stay on my on-premise postfix server. Thus I seek to set \
up a "split server config", essentially using the cloud server as a smarthost to be \
both an outbound and inbound gateway. A complication is that the users who stay \
on-premise will continue submitting their mail to the on-premise server, but the \
on-premise server has no way of knowing which domain users are provisioned at the \
cloud mail provider, thus the on-premise server must hand all submitted mail (even \
for its own domain) to the cloud mail server, who in turn might possibly turn around \
and hand certain mail (for domain users unknown to it) back to the on-premise server \
(this time on port 25). Since the MX will point to the cloud server, the on-premise \
postfix will be contacted on port 25 only by that single cloud server, for local \
delivery mail. Adding

  relayhost=cloudmail-smtp-gateway

to main.cf takes care of getting external domain mail off to the cloud server. My \
difficulty lies with mail submission (MSA) via port 587. How to get all that handed \
to the gateway? I thought I could accomplish this with a simple change in master.cf \
by adding an option to clear out 'mydestination': 

  smtp       …
  submission ...
    …
     -o mydestination=

This was insufficient, as the separate trivial-rewrite daemon also needs that to know \
that mydestination is now empty. Next attempt:

  smtp       …
  submission …
     …
     -o mydestionation= -o rewrite_service_name=submission_rewrite
  submission_rewrite unix - - - - - trivial-rewrite
     -o mydestination=

This didn't work (more on that shortly). As an alternative to the above, I also tried \
just pointing local_transport back to the smtp transport:

  smtp       …
  submission …
     -o local_transport=smtp:cloudmail-smtp-gateway
     -o rewrite_service_name=submission_rewrite
  submission_rewrite unix - - - - - trivial-rewrite
     -o local_transport=smtp:cloudmail-smtp-gateway

With either of the above-style attempts, looking at "-vv" output, I am able to \
obtain:

  postfix/smtpd[PID]: resolve_clnt: `' -> `recipient@mydomain' -> transp=`smtp' \
host=`cloudmail-smtp-gateway:25' rcpt=`recipient@mydomain' flags= class=default

This seems to indicate the message will get queued up to eventually go out via SMTP \
to the cloud mail gateway, exactly what I want! Yet, later in the log, I am saddened \
to see

  postfix/local[PID]: MSGID: to=<recipient@mydomain>, relay=local, delay=0.42, \
delays=0.38/0.01/0/0.03, dsn=2.0.0, status=sent (delivered to command: procmail -a \
"$EXTENSION")

What went wrong? I don't understand postfix well enough to pinpoint what the issue \
might be. Somehow the transport switched from smtp back to local.

I also don't know whether my general approach (of either clearing out mydestination, \
or replacing local_transport, during mail submission conversations) is the best \
strategy for getting all submitted mail on port 587 (but not mail received on port \
25) handed off to the smarthost gateway? Perhaps there is an easier way to accomplish \
this?

Thank you,
Alex


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic