Mailman GID problem

Jean Milanez Melo jmelo at freebsdbrasil.com.br
Mon Apr 23 13:04:14 UTC 2007


Jeffrey Goldberg wrote:
> On Apr 20, 2007, at 9:26 PM, Paul Schmehl wrote:
> 
>> --On April 20, 2007 7:54:45 PM -0500 Jeffrey Goldberg
>> <jeffrey at goldmark.org> wrote:
> 
>>> So the first fix (modifying the owner of data/aliases{,.db}) is the
>>> right way to go, but instead of making those files owned by "nobody"
>>> (which does seem dangerous because than anything running as "nobody"
>>> could change those file) they should be owned by root with mailman as
>>> the group and permissions like 664.
>>>
>> Nobody is an unprivileged user.
> 
> Thank you.  I forgot about that.  I was treating "nobody" like "www" or
> "mail".  It entirely slipped my mind that "nobody" really is different.
> 
>>> it would break to ownership of the aliases file so that we would have
>>> the mismatch between what the uid postfix gives the the wrapper
>>> ("mailman") and what the wrapper demands ("nobody").
>>>
>> Nope.  I've been running mailman for years now, and it works perfectly
>> fine.  The owner of the data directory is mailman, and the group is
>> mailman.
>> ls -lsa /usr/local/mailman/data/
>> total 132
>> 2 drwxrwsr-x   2 mailman  mailman    512 Apr  7 19:47 .
>> 2 drwxrwsr-x  20 mailman  mailman    512 Nov 28 17:48 ..
>> 48 -rw-r--r--   1 mailman  mailman  65536 Sep  6  2005 .db
>> 2 -rw-r-----   1 mailman  mailman     41 Sep  6  2005 adm.pw
>> 6 -rw-r--r--   1 root     mailman   4383 Oct 14  2005 aliases
>> 4 -rw-r-----   1 mailman  mailman   3984 Sep  8  2005 aliases.bak
>> 48 -rw-r-----   1 mailman  mailman  49152 May  5  2006 aliases.db
>> 0 -rw-rw-rw-   1 mailman  mailman      0 Sep  9  2005
>> bounce-events-00446.pck
>> 0 -rw-rw-rw-   1 mailman  mailman      0 Sep  9  2005
>> bounce-events-00449.pck
>> 0 -rw-rw-rw-   1 mailman  mailman      0 Sep  9  2005
>> bounce-events-00467.pck
>> 0 -rw-rw-rw-   1 mailman  mailman      0 Jan 27  2006
>> bounce-events-00567.pck
>> 0 -rw-rw-rw-   1 mailman  mailman      0 Oct 13  2005
>> bounce-events-38840.pck
>> 2 -rw-r-----   1 mailman  mailman     41 Sep  6  2005 creator.pw
>> 2 -rw-r--r--   1 root     mailman     10 Nov 28 17:48
>> last_mailman_version
>> 2 -rw-rw----   1 mailman  mailman      4 Apr  1 08:31 master-qrunner.pid
>> 14 -rw-r--r--   1 root     mailman  14114 Nov 28 17:48 sitelist.cfg
> 
> I am fairly confident that if that is working for you, than you are not
> running with /usr/local/mailman/mail/mailman that was compiled with the
> current port with the postfix option set.  The binary mailman has a gid
> compiled into it.  Given the current port WITH_POSTFIX.
> 
> Installing the current port WITH_POSTFIX will produce a mailman binary
> which will only allow itself to be run by "nobody".  Yours must have
> "mailman" compiled in where "nobody" is in what I (and David) get.
> 
> [jeffrey at dobby /usr/local/mailman/mail]$ strings mailman | tail
> leave
> post
> owner
> request
> unsubscribe
> Mailman mail-wrapper
> nobody
> Illegal command: %s
> Usage: %s program [args...]
> $FreeBSD: src/lib/csu/i386-elf/crtn.S,v 1.6 2005/05/19 07:31:06 dfr Exp $
> 
> 
> What is your result on your system?  If you get "mailman" where I have
> "nobody" then one of my earlier suggestions (change MAIL_GID for the
> postfix setting from "nobody" to "mailman" in the port Makefile) may be
> the right thing.  That is what is most consistent with the mailman
> install instructions.
> 
> From /usr/local/share/doc/mailman/mailman-install.txt
> 
>  In section  6.1.1 Integrating Postfix and Mailman
> 
> 
>    * When you configure Mailman, use the --with-mail-gid=mailman
>      switch;
> 
> However, the current ports Makefile compiles mailman --with-mail-gid=nobody
> 
> The same section also says
> 
>        Make sure that the owner of the data/aliases and data/aliases.db
>        file is mailman, that the group owner for those files is mailman,
>        or whatever user and group you used in the configure command, and
>        that both files are group writable:
>        % su
>        % chown mailman:mailman data/aliases*
>        % chmod g+w data/aliases*
> 
>>
>> It is the *group* that matters to postfix, *not* the owner.  Per the
>> pkg-message file:
>> Mailman has been installed, but requires further configuration before
>> use!
>>
>> You will have to configure both your MTA (mail server) and web server to
>> integrate with Mailman.  If the port's documentation has been installed,
>> extensive post-installation instructions may be found in:
>>
>>  %%DOCSDIR%%/FreeBSD-post-install-notes
>>
>> Note (1):  If you use an alternate (non-Sendmail) MTA, you MUST be sure
>> that the correct value of MAIL_GID was used when this port or package
>> was built.  Performing a "make options" in the Mailman port directory
>> will list required values for various mail servers.
>>
>> Note that MAIL_GID is what matters.  That is the *group* not the owner
>> of the files.  Note also that the group only has read writes to the
>> aliases file, although it does have read/write access to the
>> bounce-events files.
> 
> However it is the owner of the file containing the pipe alias that
> matters to postfix local deliveries.  See local(8).
> 
> 
>>> So maybe the problem is with check_perms and not with the port at all
>>> (well the port would still need to get the aliases files owned by root).
>>>
>> There's nothing at all wrong with the check_perms script.
> 
> I am coming to that conclusion.  I now think that my second suggestion
> of changing the ports Makefile to set MAIL_GID to mailman instead of
> nobody when configuring for postfix is the correct direction to go.
> 
>> mailman owns the aliases db for mailman:
>> ls -lsa /usr/local/mailman/data/aliases*
>> 6 -rw-r--r--  1 root     mailman   4383 Oct 14  2005
>> /usr/local/mailman/data/aliases
>> 4 -rw-r-----  1 mailman  mailman   3984 Sep  8  2005
>> /usr/local/mailman/data/aliases.bak
>> 48 -rw-r-----  1 mailman  mailman  49152 May  5  2006
>> /usr/local/mailman/data/aliases.db
>>
>> And this is a working setup of mailman and postfix that's been running
>> for years.
> 
> But I don't believe that that set-up will work with the configure
> options that get passed for compiling mailman with the current port.
> 
> PORTNAME=       mailman
> DISTVERSION=    2.1.9
> PORTREVISION=   1
> CATEGORIES?=    mail
> 
> Thus, with a bit more confidence that before I present the same Makefile
> diff I recommend:
> 
> --- Makefile.orig       Fri Apr 20 14:17:08 2007
> +++ Makefile    Fri Apr 20 23:57:22 2007
> @@ -7,7 +7,7 @@
> PORTNAME=      mailman
> DISTVERSION=   2.1.9
> -PORTREVISION=  1
> +PORTREVISION=  2
> CATEGORIES?=   mail
> MASTER_SITES=  ${MASTER_SITE_SOURCEFORGE} \
>                 http://www.list.org/
> @@ -88,7 +88,7 @@
> .if defined(WITH_SENDMAIL) || defined(WITH_EXIM3) || defined(WITH_EXIM4)
> BROKEN=        choose only one MTA integration
> .endif
> -MAIL_GID?=     nobody
> +MAIL_GID?=     mailman
> .endif
> .if defined(WITH_CHINESE)
> 
> Cheers,
> 
> -j
> 
> --Jeffrey Goldberg                        http://www.goldmark.org/jeff/
> 

Dears,

I've just committed a patch with the correct MAIL_GID for postfix build
as Jeffrey sent.

If you have any other problems, please tell me.

Thank you for the report guys.

Cheers,

--
Jean


More information about the freebsd-ports mailing list