Hi Weitsie,
Shortly after I sent my first reply, I also replied with:
Also, I can't bind all IPs on the same box as I'm short of IPs in the
location where Postfix-INT is located. The ip5 is located on
Postfix-INT and not Postfix-EXT. The above table also has an exception
that if they're are internal mails, meaning mails from A1.com to
A1.com or A1.com to A2.com, they're lmtp'ed directly from postfix-INT
itself. (This is done to save bandwidth and unnecessary queueing)
I am sorry I missed that part in a hurry. So, ip5 lies on the
postfix-INT instance and not postfix-EXT. I could do what all you said
and everything would be fine but that doesn't take into consideration
the part of internal mails being delivered via lmtp on postfix-INT
itself.
This all happens on Postfix-INT. (This pseudocode is perfect without
any errors, please see my C-style comments)
1. If header is L1 or L2, REJECT (done via milter_header_checks)
2. If internal domains (even that have header L3)
/* If I relay mails to postfix-EXT, how do I make sure
that internal mails are always lmtp'ed? /*
3. then deliver it to our storage servers (through lmtp, as
explained above, it's done via transport_maps)
4. else if external domains
5. If the header value is L3
6. deliver via postfix-INT (Because I don't care much about
the IP bound in postfix-INT)
/* Not sure how to do this. How do I not relay mails
when header value is, say L3 */
7. else
8. relay mails to Postfix-EXT. ( * record in transport_maps.
Note that this comes after the lmtp delivery part and is the last
entry there)
The part where I do use sender_transport happens on Postfix-EXT, that
was kind of clear to me. As my mail's subject, problem is of deciding
transport based on milter_header_checks (line 2, 5, 6). The stuff that
you mentioned can be done on postfix-EXT for domain-wise transport and
it solves part of the problem. Thanks for that. This solved "Line 8
and beyond" of pseudo code.
- The reason I can't I can't forward internal mails to postfix-EXT
from postfix-INT is, my internal mails have address like
"shadyabhi:[email protected]" which if relayed via
postfix-EXT will cause "MX not found" errors.
Line 2, meaning, delivering mails via lmtp is still not done. No
matter what header does internal mails contain, I want them delivered
via lmtp itself.
I'm sorry for the inconvenience caused by dividing text among two
mails. This is really bad but I am still dying to find the solution to
this. Hope to see a reply soon.
On Mon, Aug 19, 2013 at 5:49 PM, Wietse Venema <[email protected]> wrote:
> Abhijeet Rastogi:
>> Domain Pure_Traffic Suspect_Traffic
>> A1.com ip1 ip5
>> A2.com ip2 ip5
>> A3.com ip3 ip5
>> A4.com ip4 ip5
>
> In that case, use sender_dependent_default_transport_maps to choose
> an SMTP client with a the appropriate smtp_bind_address setting,
> and use a FILTER action to override this for low-reputation mail.
>
> /etc/postfix/main.cf:
> sender_dependent_default_transport_maps =
> hash:/etc/postfix/sender_transport
> milter_header_checks = pcre:/etc/postfix/milter_header_checks
> smtp1_bind_address = 1.2.3.1
> smtp2_bind_address = 1.2.3.2
> ....
> smtp5_bind_address = 1.2.3.5
>
> /etc/postfix/sender_transport:
> A1.com smtp1:
> A2.com smtp2:
> ... ....
>
> /etc/postfix/milter_header_checks:
> /^X-Foobar-Precedence: junk/ FILTER smtp5:
>
> /etcv/postfix/master.cf:
> smtp1 ... .... ... smtp -o smtp_bind_address=$smtp1_bind_address
> smtp2 ... .... ... smtp -o smtp_bind_address=$smtp2_bind_address
> ...
> smtp5 ... .... ... smtp -o smtp_bind_address=$smtp5_bind_address
>
> Wietse
--
Regards,
Abhijeet Rastogi (shadyabhi)
http://blog.abhijeetr.com