LuKreme: > On 17-Mar-2009, at 08:52, Victor Duchovni wrote: > > On Tue, Mar 17, 2009 at 10:01:53AM -0400, Charles Marcus wrote: > >> On 3/17/2009 9:43 AM, Erwan David wrote: > >>> You may generate the pcre file with a line > >>> /recipient_([...@_]+)@localdomain/ recipient+$...@localdomain > >>> > >>> for each valid recipient. This would preserve the validation of > >>> recipient at RCPT TO stage. > >> > >> Interesting... and maybe a good candidate for my first usable > >> scripting > >> attempt. > > > > Perl is the natural choice for this: > > > > $ echo u...@example.com | > > domain=example.com perl -lpe ' > > s{^(.*)\...@\q$env{domain}\e$} > > {/^\Q$1\E_(.*)\...@\q$env{domain}\e\$/ > > $1+\${...@$env{domain}}o;' > > /^user_(.*)@example\.com$/ user+$...@example.com > > > > In practice instead of "echo ... |" Perl would read a list of > > addresses from > > a file. The "\Q...\E" construct is the critical ingredient for > > quoting PCRE > > special characters in the address localpart and domain. > > I came up with this one liner: > > $ ls -1 /usr/local/virtual/ | grep "@" | sed 's/^\([...@]*\)@\(.*\)$/\/ > ^\1_\(.*\)@\2$\/ \1+$...@\2/' > > testu...@example.com => /^testuser_(.*)@example.com$/ > testuser+$...@example.com
This is BROKEN. You are not escaping any of the regexp metacharacters such as '.' and so on. Wietse