Bug 2555

Summary: Add Exim-like search algorithm for virtual-user config-files
Product: Spamassassin Reporter: Martin Treusch von Buttlar <martin+sa>
Component: spamc/spamdAssignee: SpamAssassin Developer Mailing List <dev>
Status: RESOLVED FIXED    
Severity: enhancement CC: billcole, dev, kmcgrail, martin+sa
Priority: P5    
Version: 2.60   
Target Milestone: 3.4.2   
Hardware: All   
OS: All   
Whiteboard:
Bug Depends on: 5138, 2536    
Bug Blocks:    
Attachments: Exim-style lookup for virtual-user config-files
Updated patch to v3.2.5
Updated patch to v3.3.1
Patch adapted to 3.4 and trunk of 2018-08-31
Patch to documentation, describing the addition of '%x' token

Description Martin Treusch von Buttlar 2003-10-06 05:18:04 UTC
This patch adds another search alogrithm for virtual-user config-files, trying
first the full email-address and if it fails it uses only the domain-part.

It applies to 2.55 and 2.60 (with offsets) and works with our setup for 3 months.
Comment 1 Martin Treusch von Buttlar 2003-10-06 05:18:37 UTC
Created attachment 1457 [details]
Exim-style lookup for virtual-user config-files
Comment 2 Malte S. Stretz 2003-10-06 05:31:41 UTC
currently working on that code, will have a look 
Comment 3 Daniel Quinlan 2005-03-30 01:08:23 UTC
move bug to Future milestone (previously set to Future -- I hope)
Comment 4 Martin Treusch von Buttlar 2009-06-23 15:10:10 UTC
Created attachment 4467 [details]
Updated patch to v3.2.5
Comment 5 Martin Treusch von Buttlar 2011-12-30 21:20:19 UTC
Created attachment 5029 [details]
Updated patch to v3.3.1
Comment 6 Kevin A. McGrail 2011-12-30 21:43:52 UTC
Martin,

Can I assume you've been using this since 2003 essentially?  Are their any caveats that you see to implementing this because it looks like it uses the defaults as a fall back.

At worst, it looks like this needs to be checked if it patches clean against trunk and the documentation updated about the feature.
Comment 7 Martin Treusch von Buttlar 2011-12-30 23:24:11 UTC
Kevin,

yes, you are right - this patch works with approximately 20,000 emails since 2003 per day. The default behaviour of spamassassin is retained, as the new code is only used if the newly introduced "%x" replacement appears in the configured directory.

I would be happy to provide additional documentation if you could point me to the appropriate section.
Comment 8 Kevin A. McGrail 2012-01-18 22:14:26 UTC
(In reply to comment #7)
> Kevin,
> 
> yes, you are right - this patch works with approximately 20,000 emails since
> 2003 per day. The default behaviour of spamassassin is retained, as the new
> code is only used if the newly introduced "%x" replacement appears in the
> configured directory.
> 
> I would be happy to provide additional documentation if you could point me to
> the appropriate section.

I'm targeting this for 3.4.0.  It won't block the release and I would like some votes on it but first, I need to see documentation.

From reviewing your patch, it changes the behavior of the --virtual-config-dir

So that is the documentation to change, I believe.

Specifically:

--virtual-config-dir=pattern
           This option specifies where per-user preferences can be found for virtual users, for the -x switch. The pattern is used as a base pattern for the directory name.  Any of the following escapes can be
           used:

           %u -- replaced with the full name of the current user, as sent by spamc.
           %l -- replaced with the 'local part' of the current username.  In other words, if the username is an email address, this is the part before the "@" sign.
           %d -- replaced with the 'domain' of the current username.  In other words, if the username is an email address, this is the part after the "@" sign.
           %% -- replaced with a single percent sign (%).

           So for example, if "/vhome/users/%u/spamassassin" is specified, and spamc sends a virtual username of "jm@example.com", the directory "/vhome/users/jm@example.com/spamassassin" will be used.

           The set of characters allowed in the virtual username for this path are restricted to:

                   A-Z a-z 0-9 - + _ . , @ =

           All others will be replaced by underscores ("_").

           This path must be a writable directory.  It will be created if it does not already exist.  If a file called user_prefs exists in this directory (note: not in a ".spamassassin" subdirectory!), it will be
           loaded as the user's preferences.  The Bayes databases for that user will be stored in this directory.

           Note that this requires that -x is used, and cannot be combined with SQL- or LDAP-based configuration.

           The pattern must expand to an absolute directory when spamd is running daemonized (-d).

           Currently, use of this without -u is not supported. This inhibits setuid.
Comment 9 Kevin A. McGrail 2013-06-21 16:25:27 UTC
Moving all open bugs where target is defined and 3.4.0 or lower to 3.4.1 target
Comment 10 Kevin A. McGrail 2015-04-07 13:38:31 UTC
Martin,

Would like to get this patched in but need a CLA (see https://www.apache.org/licenses/) and some pointers for documentation as noted. 

Moving to 3.4.2 unless you can respond in the next day or two.

Regards,
KAM
Comment 11 Bill Cole 2018-08-31 23:58:29 UTC
Created attachment 5591 [details]
Patch adapted to 3.4 and trunk of 2018-08-31

Do we really need a CLA for this relatively simple addition? 
Pushing to 3.4.3 pending a CLA or judgment of triviality
Comment 12 Kevin A. McGrail 2018-09-01 00:31:47 UTC
In reviewing again, it's trivial logic so I think you can do it without a CLA but see my note with all the documentation changes in comment 8
Comment 13 Martin Treusch von Buttlar 2018-09-04 06:09:58 UTC
I signed and sent the ICLA just now.

Cheers

Martin
Comment 14 Kevin A. McGrail 2018-09-04 14:37:10 UTC
Bringing back to 3.4.2 because it's trivial AND we have a CLA coming :-)


Bill, can you commit before our Noon deadline today?
Comment 15 Bill Cole 2018-09-04 15:21:59 UTC
(In reply to Kevin A. McGrail from comment #14)
> Bringing back to 3.4.2 because it's trivial AND we have a CLA coming :-)
> 
> 
> Bill, can you commit before our Noon deadline today?

Code committed to 3.4 and trunk r1839832 

Working on documentation.
Comment 16 Bill Cole 2018-09-04 16:25:17 UTC
Created attachment 5593 [details]
Patch to documentation, describing the addition of '%x' token

Documents code already committed. 

NEEDS REVIEW BEFORE COMMIT
Comment 17 Kevin A. McGrail 2018-09-04 16:32:33 UTC
Per https://wiki.apache.org/spamassassin/DevelopmentMode, documentation isn't required to follow R-T-C
Comment 18 Bill Cole 2018-09-04 22:35:24 UTC
Fixed in r 1840050