From owner-freebsd-questions@FreeBSD.ORG Sun Apr 13 07:50:00 2003 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 47D3037B401 for ; Sun, 13 Apr 2003 07:50:00 -0700 (PDT) Received: from mired.org (ip68-97-54-220.ok.ok.cox.net [68.97.54.220]) by mx1.FreeBSD.org (Postfix) with SMTP id 469C343F75 for ; Sun, 13 Apr 2003 07:49:59 -0700 (PDT) (envelope-from mwm-dated-1050677398.69b027@mired.org) Received: (qmail 14302 invoked from network); 13 Apr 2003 14:49:58 -0000 Received: from localhost.mired.org (HELO guru.mired.org) (127.0.0.1) by localhost.mired.org with SMTP; 13 Apr 2003 14:49:58 -0000 Received: by guru.mired.org (tmda-inject, from uid 100); Sun, 13 Apr 2003 09:49:58 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <16025.30997.412672.836740@guru.mired.org> Date: Sun, 13 Apr 2003 09:49:57 -0500 To: Matthew Seaman In-Reply-To: <20030413142842.GB25131@happy-idiot-talk.infracaninophi> References: <007a01c301b8$c329c290$3800000a@LAPDANCE> <20030413142842.GB25131@happy-idiot-talk.infracaninophi> X-Mailer: VM 7.07 under 21.1 (patch 14) "Cuyahoga Valley" XEmacs Lucid X-face: "5Mnwy%?j>IIV\)A=):rjWL~NB2aH[}Yq8Z=u~vJ`"(,&SiLvbbz2W`; h9L,Yg`+vb1>RG% *h+%X^n0EZd>TM8_IB;a8F?(Fb"lw'IgCoyM.[Lg#r\ From: Mike Meyer X-Delivery-Agent: TMDA/0.73 (Jet Pilot) cc: questions@freebsd.org Subject: Re: mail to all users on a system (from root) X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 13 Apr 2003 14:50:00 -0000 In <20030413142842.GB25131@happy-idiot-talk.infracaninophi>, Matthew Seaman typed: > On Sun, Apr 13, 2003 at 02:32:35PM +0200, Aslak Evang wrote: > > I've searched for ways for root to email all users on a system. The only > > easy solution I found included making a shellscript and setting it as an > > alias for "everybody". Problem was that in the script you had to insert > > all your users manually. > > Does anybody know of other methods for sending announcements to all > > users on a system? Could have done it with MOTD but few of them actually > > log-in. Most just read mail. > > Try the attached script which I just slung together. To use, save the > script into a defined place on your HD, say /usr/local/sbin/everybody, > and then set up an alias: > > everybody: "| /usr/local/sbin/everybody" > > This script will resend the message to all users with an account on > the system -- I've assumed that real people have UIDs over 1000 and > system accounts have UIDs less than that. Note that this is just a > quick hack and could be vastly improved --- certainly made much more > efficient --- with a little effort. Only minimally tested: use very > cautiously. The script is a nice effort, but has a serious efficiency problem - it's going to fork a sendmail for every user on the system. For small numbers of users, that's acceptable. The attached everybody script will connect to the SMTP server on the local system and send just one copy of the message, allowing the SMTP server to deal with making multiple copies to send to everyone. The downside of this script is that it's going to keep the list uf usernames in memory, which will eventually cause problems - but not before you've reached numbers that would make spammers notice. 1000 and pwd[0] != 'nobody'] mailer = smtplib.SMTP('localhost') mailer.sendmail(os.environ['USER'], users, sys.stdin.read()) -- Mike Meyer http://www.mired.org/consulting.html Independent Network/Unix/Perforce consultant, email for more information.