From owner-freebsd-questions@FreeBSD.ORG Thu Oct 4 16:34:23 2007 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 04DEF16A417 for ; Thu, 4 Oct 2007 16:34:23 +0000 (UTC) (envelope-from smithi@nimnet.asn.au) Received: from gaia.nimnet.asn.au (nimbin.lnk.telstra.net [139.130.45.143]) by mx1.freebsd.org (Postfix) with ESMTP id 46F5313C4A3 for ; Thu, 4 Oct 2007 16:34:20 +0000 (UTC) (envelope-from smithi@nimnet.asn.au) Received: from localhost (smithi@localhost) by gaia.nimnet.asn.au (8.8.8/8.8.8R1.5) with SMTP id CAA25909; Fri, 5 Oct 2007 02:33:24 +1000 (EST) (envelope-from smithi@nimnet.asn.au) Date: Fri, 5 Oct 2007 02:33:23 +1000 (EST) From: Ian Smith To: Erik Trulsson In-Reply-To: <20071004081607.GA65363@owl.midgard.homeip.net> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: Mike Makonnen , freebsd-questions@freebsd.org, Lisa Casey Subject: Re: FreeBsd e-mail question X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Oct 2007 16:34:23 -0000 On Thu, 4 Oct 2007, Erik Trulsson wrote: > On Thu, Oct 04, 2007 at 04:56:35PM +1000, Ian Smith wrote: > > On Wed, 3 Oct 2007 16:30:54 -0400 Lisa Casey wrote: > > > > > The problem comes in when a customer cancels his account. We remove users by > > > rmuser username. That command removes the user from the password file, > > > removes his home directory and removes the mailspool. What it doesn't do is > > > to remove the .username.pop file associated with that mailbox. This isn't a > > > problem unless we add another account with the same username. The new > > > account cannot pop his mail because he gets the following error messge: > > > > > > -ERR [SYS/PERM] Temporary drop /var/mail/.jjvc.pop not owned by jjvc. > > > > > > If I take a look at /var/mail/.jjvc.pop it isn't owned by anyone, the > > > ownership of the file is the group number of the original jjvc. > > > > > > -rw-rw---- 1 1473 mail 0 Sep 11 19:15 > > > .jjvc.pop > > > > > > Is there anyway to have rmuser remover the mail drop file associated with > > > that account also, or am I just going to have to remove these manually? > > > > I've read this whole thread, and what's strange is that this used to > > work. I just checked our old FreeBSD 2.2.6 system where rmuser always > > cleaned up /var/mail/.{$user}.pop properly. Its /usr/sbin/rmuser had: > > > > # Remove some pop daemon's leftover file > > $file = "$mail_dir/.${login_name}.pop"; > > if (-e $file || -l $file) { > > print STDERR "Removing pop daemon's temporary mail file ${file}:"; > > unlink $file || > > print STDERR "\n${whoami}: Warning: unlink on $file failed ($!) - continuing\n"; > > print STDERR " done.\n"; > > } > > > > So I wonder whether it's a bug - or maybe a later popper update? - that > > has the present version of rmuser looking for ${MAILSPOOL}/${login}.pop > > instead? > > As far as I can tell the change was introduced back in 2002 when rmuser was > changed from a Perl program into a shell script - presumably as part of the > process of removing Perl from the base system. > FreeBSD versions 2.2 - 4.11 used the Perl version of rmuser, while all > 5.x and 6.x releases have used the shell script version. > > I have no idea if the difference - if the file rmuser looks for has a leading > '.' in the filename or not - was deliberate or simply a mistake, but I > suspect the latter: it is the kind of thing that is very easy to miss when > rewriting a program in another language. Looks like that's exactly right. Copying the maintainer and suggesting the no-brain patch, pardon the broken tabs from pasting, against the head / stable versions (checked) .. I should sendPR I guess .. time! Cheers, Ian --- /usr/sbin/rmuser Sat Mar 3 16:48:29 2007 +++ /home/smithi/rmuser Fri Oct 5 00:30:51 2007 @@ -86,10 +86,10 @@ echo -n " mailspool" rm ${MAILSPOOL}/$login fi - if [ -f ${MAILSPOOL}/${login}.pop ]; then - verbose && echo -n " ${MAILSPOOL}/${login}.pop" || + if [ -f ${MAILSPOOL}/.${login}.pop ]; then + verbose && echo -n " ${MAILSPOOL}/.${login}.pop" || echo -n " pop3" - rm ${MAILSPOOL}/${login}.pop + rm ${MAILSPOOL}/.${login}.pop fi verbose && echo '.' }