MS+Postfix, Selective HOLD
Glenn Steen
glenn.steen at gmail.com
Sat Apr 12 16:01:33 IST 2008
On 12/04/2008, Glenn Steen <glenn.steen at gmail.com> wrote:
> On 12/04/2008, Hugo van der Kooij <hvdkooij at vanderkooij.org> wrote:
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> >
> > Glenn Steen wrote:
> > | On 06/04/2008, Hugo van der Kooij <hvdkooij at vanderkooij.org> wrote:
> > |> -----BEGIN PGP SIGNED MESSAGE-----
> > |> Hash: SHA1
> > |>
> > |> Hi,
> > |>
> > |> I have been trying to get my head around this question before. I find
> > |> that I have a scalability problem that I could resolve if I can put
> > |> messages on HOLD for MS to pickup only if it is not for a certain
> > |> recipient.
> > |>
> > |> There is one recipient that goes straight into a procmail parser to
> > |> extract specific information. There is no need to fire up the whole MS
> > |> circus for each message. This is an automated system that will get 1
> > |> message per monitored SMTP server per minute.
> > |>
> > |> The normal config is:
> > |> # Do some header checks
> > |> # This includes setting almost anything on hold for MailScanner
> > to
> > |> pick up
> > |> header_checks =
> > regexp:/etc/postfix/regexp/header-checks
> > |>
> > |> So I have tried a number of setups. Most of them failed miserably.
> > |>
> > |> This morning I woke up whith what seems to be the answer so I gave it a
> > |> spin and here are my findings.
> > |>
> > |>
> > |> What does work is at the end of my smtpd checks add a table to list
> > |> explicit addresses to scan. In the main.cf it looks like:
> > |>
> > |> # Access rules
> > |> smtpd_client_restrictions =
> > |> ~ permit_mynetworks,
> > |> ~ permit_sasl_authenticated,
> > |> ....Long list removed.......
> > |> ~ reject_unauth_destination,
> > |> ~ check_recipient_access
> > |> hash:/etc/postfix/hash/valid-recipients
> > |>
> > |> And the hash tables explicit lists everyone for whome MS should be
> > |> called upon. Like:
> > |>
> > |> hugo at vanderkooij.org HOLD
> > |> hvdkooij at vanderkooij.org HOLD
> > |>
> > |> (I know putting email in the clear scares some people. But if you ever
> > |> see a Megalist without these two then do not buy it. ;-)
> > |>
> > |> But the drawback is it only works for a simple setup at home with only
> > a
> > |> moderate list of recipients. And where you actually know all the
> > |> recipients.
> > |>
> > | Actually... If you (as ) already use the relay_recipient_map thing,
> > | it'd be trivial to rewrite the script that generates the
> > | relay_recipient_map to also do an access_map...:).
> > | But then again...
> > |> But if you want to have just a few exceptions then you better use
> > |> regular expressions.
> > |>
> > |> So replace:
> > |> check_recipient_access
> > |> hash:/etc/postfix/hash/valid-recipients
> > |>
> > |> with:
> > |> check_recipient_access
> > |> regexp:/etc/postfix/regexp/MailScanner
> > |>
> > |> With /etc/postfix/regexp/MailScanner looking like:
> > |>
> > |> #
> > |> # header_checks - Postfix built-in header/body inspection
> > |> #
> > |> /exclusion at test\.example\.net/ OK
> > |>
> > |> # Everyone else will go through MailScanner!
> > |> /.*/ HOLD
> > |>
> > |> # EOF
> > |>
> > |>
> > |> This does the trick for me. It might work for others.
> > | This would be a better replacement for the header check thing, in
> > | cases where you'd like to be selective. Thanks for thinking it up, and
> > | sharing.
> >
> > Sharing is what make OS so much stronger.
> >
> > But I have found an issue I am not able to pinpoint yet. Every email to
> > my postmaster seems to bypass MailScanner as well. I have grepped my
> > config files untill my fingers grew tired. But I have no postmaster
> > exception in postfix anywhere. Nor do I have one in MailScanner.
> >
> > Is there an buildin option of postfix I am missing here?
>
> Nah, it likely is a regexp thing:-).
> Your pattern
> /.*/
> litteraly means "anything containing at least one character". So you
Correction. It _should_ mean anything containing 0 or more characters,
but seem to mean the above... Which will miss the empty string. Sigh.
> need match the empty recipient as well with a separate
> /^$/ HOLD
> pattern in there, or else the empty sender (==MAILER-DAEMON,
> postmaster or ...:-) will simply "fall through".
> Try it and tell us how you fare!
>
>
> Cheers
Cheers
--
-- Glenn
email: glenn < dot > steen < at > gmail < dot > com
work: glenn < dot > steen < at > ap1 < dot > se
More information about the MailScanner
mailing list