Ralf Hildebrandt: > * Wietse Venema <wie...@porcupine.org>: > > Patrick Ben Koetter: > > > I have a question regarding the "Bounce-never mail sink" regexp: > > > > > > postconf(5) gives this example: > > > > > > /^(RCPT\s+TO:.*?)\bNOTIFY=\S+\b(.*)/ $1 NOTIFY=NEVER $2 > > > > > > Isn't there a '>' missing before the '?'. As I understand it the '?' > > > makes the > > > preceeding character optional e.g. example.com and example.co would match. > > > Shouldn't the '>' be optional instead and it is missing in the examples > > > above. > > > > > > My example here demonstrates the regexp as I would expect it: > > > > > > /^(RCPT\s+TO:.*>?)\bNOTIFY=\S+\b(.*)/ $1 NOTIFY=NEVER $2 > > > > If you believe that there is a problem, you need to demonstrate it > > with the postmap command. Note: the example is PCRE not REGEXP. > > I think for the general case the original PCRE expression is working. > But if I want to use this "trick" for specific recipient domains, then > it starts to change into something more complicated (?)_ > > /^(RCPT\s+TO:.*@recipient\.com\.invalid>?)\bNOTIFY=\S+\b(.*)/ $1 NOTIFY=NEVER > $2 >
The ? does not do what you guys are thinking. The .*? turns on lazy matching. Without this, .* would also match \bNOTIFY=\S+\b(.*) and that is not what we want. http://en.wikipedia.org/wiki/Regular_expression#Lazy_quantification Wietse