#!/bin/rc
exec echo user : $user
# This script utilises the upas/fs mounted mail system to mount a remote mailbox and then
# transfer the messages using the local smtp process.
# matt@proweb.co.uk
# 16/7/2002
# run our own copy of factotum so we dont use the current process's one
auth/factotum -n
# we're going to need a clean mail too
upas/fs
# read the parameters from /usr/$user/pop3
# the format of which is line separated records of space or tab separated fields :
# protocol domain username password
# Example :
# pop pop3.aol.om connie secret
#
# $key(1) $key(2) $key(3) $key(4)
#
fn init {
pwfile = /usr/$user/pop3
keep = 0
# -f pwfile <- use a different pw file
while(~ $1 -*){
switch($1){
case -f:
shift
pwfile = $1
case -k:
keep = '1'
}
shift
}
}
fn log_in {
# insert a key into the local factotum
echo 'key proto=pass service=pop dom=' ^$server ^' user=' ^$username ^' !password=' ^$password > /mnt/factotum/ctl
# open the mailbox, it get's mounted as /mail/fs/$username
echo 'open /pop/'^$server ^' ' ^$username > /mail/fs/ctl
}
fn log_out {
echo 'close ' ^$username > /mail/fs/ctl # close the mailbox
# delete the key from factotum so that we can process multiple pop3 boxes on the same domain
echo 'delkey proto=pass service=pop dom=' ^$server ^' user=' ^$username > /mnt/factotum/ctl
}
fn get_msg_list {
ls -d /mail/fs/$username/[0-9]*
}
init
{
key = `{read}
num_msgs = 0
while(test $#key '!=' '0') { # die when null/blank line
username = $key(3)
server = $key(2)
password = $key(4)
switch($key(1)) {
# made it a switch for expansion and comments
case pop3 :
# tell stdout what we're doing
log_in
echo from $username at $server to $user
for (msg in `{get_msg_list}) {
cat $msg/raw | upas/send -b $user
num_msgs = `{echo $num_msgs + 1 | bc}
echo From: `{cat $msg/from} # Tell stdout
echo Subject : `{cat $msg/subject}
if (test $keep '=' '0')
rm $msg # delete message from the remote server
}
log_out
}
key = `{read}
}
} < $pwfile
echo $num_msgs mails processed.
|