Virtual home-directories

Matthias Andree matthias.andree at gmx.de
Thu Sep 17 09:43:56 CEST 2009


Am 16.09.2009, 14:00 Uhr, schrieb RW <rwmaillists at googlemail.com>:

> On Tue, 15 Sep 2009 21:11:50 -0400
> David Relson <relson at osagesoftware.com> wrote:
>
>> Bogofilter looks for a system config file in /etc/ and for the user
>> config file in ~/.bogofilter/
>
> ~/.bogofilter.cf according to the manpage
>
>> Since you're looking for per-user
>> configuration, you can use the user config file directory.
>
> I'm talking about virtual user configuration rather than unix users.
>
> As I understand it, a login shell sets HOME to the home directory set in
> the password file and thereafter the shell treats ~ as the current
> value of HOME. SpamAssassin follows this convention by keeping its
> user data under HOME. So if you use some kind of script to fetch the
> mail, you can set HOME to something like: "/var/db/mailhome/${USER}"
> for virtual users.
>
> When I tried this with Bogofilter I found that it only half works, it
> uses HOME for wordlist.db, but ignores it for .bogofilter.cf

While I cannot currently state (for lack of research) how shells *would*  
behave, I can say that bogofilter uses the passwd database (through libc  
functions such as getpwent(3)) to determine the home directory.

If you want the $HOME variable to take precedence, find this section in  
src/find_home_tildeexpand.c (the line numbers are not in the file) and  
change line 70 from the "false" to "true", then recompile and reinstall:

     57	    if (l > 0) {
     58		/* got a parameter to the tilde */
     59		tmp = xmalloc(l + 1);
     60		memcpy(tmp, &name[1], l);
     61		/* we want exactly the first l characters but as C string,
     62		 * so stuff the NUL byte */
     63		tmp[l] = '\0';
     64	
     65		home = find_home_user(tmp);
     66	
     67		xfree(tmp);
     68	    } else {
     69		/* plain tilde */
     70		home = find_home(false);
     71	    }


after modification, l. 70 should read:

	home = find_home(true);


I'm not sure if this is sufficient, so I will appreciate feedback.

HTH

-- 
Matthias Andree



More information about the Bogofilter mailing list