Britton wrote: >... >Lastly, does anyone have a clean way set up to invoke fetchmail as root >and get mail for all users? I would like to see that also.
This is my setup: I use fetchmail as a cron job to download mail and I pass it to procmail to distribute to users. I use sendmail. There is a script `poll.mail' to establish the dial-up connection and download mail; this has to be run as superuser. The only problem I have with it is that if I become superuser from another account than my own, a lot of the list mail for me ends up in that other user's mailbox. I don't know why this is. I also use this script to collect news for the groups I am interested in and download it to my local server. poll.mail is run by cron, as root. As superuser, run `crontab -e' and add this line: 2 4 * * * /usr/local/bin/poll.mail Alternatively, edit /etc/crontab; you have to add the root user name: 2 4 * * * root /usr/local/bin/poll.mail This runs the job at 4.02am every day. (I run it more often.) The fetchmail configuration is in /root/.fetchmail1rc, and is readable only by root. (This is required by fetchmail if it is running as root.) It says: poll mail.enterprise.net protocol pop3 username xxxxx password yyyyy smtphost localhost Mail is held by the ISP for user xxxxx [not really!] and /etc/aliases makes this go through procmail: # enterprise mail name xxxxx: "| /usr/bin/procmail -f -" Procmail configuration is in /etc/procmailrc. How well it works depends on how tightly you can define email addresses. The main problem comes from the wide variety of ways in which mailing lists forward messages.
#! /bin/bash # Poll for mail # May be run either by cron or at will by the superuser. PATH=/bin:/usr/bin:/etc:/sbin:/usr/sbin:/usr/local/bin # See if we already have PPP running if netstat -nr | grep ' ppp' >/dev/null then echo PPP already running ppp_running=TRUE else # if not, start it up... if [ -f /var/run/diald.pid ] && ps -p `cat /var/run/diald.pid` then echo diald is running ping -c 1 mail.enterprise.net ppp_running=TRUE else ppp_running=FALSE /usr/local/bin/ppp-on fi sleep 2 waitpd=0 until netstat -nr | grep ' ppp' >/dev/null do if ps -axu | grep -v grep | grep -E 'pppd|diald' >/dev/null then sleep 5 waitpd=`expr $waitpd + 5` if [ $waitpd -gt 120 ] then echo Timed out exit 2 fi else echo PPP session was not established exit 1 fi done fi sleep 5 # Collect any mail that is waiting for us echo "Calling for mail for lfix.co.uk" fetchmail -aF -f /root/.fetchmail1rc case $? in 0) :;; # no problem 1) echo No mail to collect;; 2) echo Could not open socket;; 3) echo User authentication failed;; 4) echo Fatal protocol error;; 5) echo syntax error in fetchmail command;; 6) echo Bad permissions for run control file;; 7) echo Server error reported, or time-out;; 8) echo Exclusion error - is another fetchmail running\?;; 9) echo Server reported \'Lock busy\';; 10) echo SMTP failure;; 11) echo Internal error;; *) echo Totally unexpected error in fetchmail;; esac # Send anything we have for the outside world sendmail -q & # Get news /usr/local/bin/slurp -d news.enterprise.net # If we started PPP, stop it again if [ "$ppp_running" = FALSE ] then /usr/local/bin/ppp-off fi
DEFAULT=olly LOGFILE=/var/log/procmail.log :0 * [EMAIL PROTECTED] !dan :0 * [EMAIL PROTECTED] !dan # :0E * [EMAIL PROTECTED] !ruth :0E * [EMAIL PROTECTED] !ruth # :0E * [EMAIL PROTECTED] !abby :0E * [EMAIL PROTECTED] !abby # :0E * [EMAIL PROTECTED] !hannah :0E * [EMAIL PROTECTED] !hannah # :0E * [EMAIL PROTECTED] !nick :0E * [EMAIL PROTECTED] !nick # :0E * [EMAIL PROTECTED] !tom :0E * [EMAIL PROTECTED] !tom
Oliver Elphick [EMAIL PROTECTED] Isle of Wight http://www.lfix.co.uk/oliver PGP key from public servers; key ID 32B8FAA1