> On 16 Sep 2014, at 13:00 , Viktor Dukhovni <postfix-us...@dukhovni.org> wrote:
> 
> On Tue, Sep 16, 2014 at 01:41:36PM -0500, Noel Jones wrote:
> 
>> I've used the below for a few years with good results.  It's better,
>> but surely not perfect.
>> 
>> 
>> # block windows executables PCRE
>> /^\s*Content-(Disposition|Type).*name\s*=\s*"?(.*(\.|=2E)(
>> ade|adp|bas|bat|chm|cmd|com|cpl|crt|dll|exe|hlp|hta|
>> inf|ins|isp|js|jse|lnk|mdb|mde|mdt|mdw|msc|msi|msp|mst|nws|
>> ops|pcd|pif|prf|reg|scf|scr|sct|shb|shs|shm|swf|
>> vb|vbe|vbs|vbx|vxd|wsc|wsf|wsh))(\?=)?"?\s*$/x
> 
> This assumes that "name" or "filename" is the last attribute in
> the header.  It might instead be followed by a ";" and more
> attributes.  So for a bit more generality, try the below:
> 
>    # block windows executables PCRE
>    /^\s*Content-(?:Disposition|Type): # Header label
>      (?:.*?;)? \s*                    # Any prior attributes
>      (?:file)?name\s*=\s*"?           # name or filename
>       (                               # Capture name for response
>        .*?(\.|=2E)                    # File basename and "."
>         (ade|adp|bas|bat|chm|cmd|com|cpl|crt|dll|exe|hlp|hta|
>          inf|ins|isp|js|jse|lnk|mdb|mde|mdt|mdw|msc|msi|msp|mst|nws|
>          ops|pcd|pif|prf|reg|scf|scr|sct|shb|shs|shm|swf|
>          vb|vbe|vbs|vbx|vxd|wsc|wsf|wsh)      # Capture risky extensions
>       )                               # Close capture
>       (?:\?=)?                                # Trailer of ad-hoc RFC 2047 
> encoding
>       "?                              # Optional close quote
>       \s*(;|$)                                # End of attribute or header
>     /x
> 
> [ untested ]

Hmm. I’ve been using the same check as Noel for many years. More than 10. I’ve 
never received an attachment in that list, so … 

-- 
The Earth is like a tiny grain of sand, only much, much heavier.

Reply via email to