drw@cullvax.UUCP (Dale Worley) (01/07/87)
We are using sendmail with uucp as the transport mechanism under Ultrix 1.2. If we cannot connect to one of our neighbors for too long, uuclean deletes the uucp request. What I would like to know is, does the originator of the message get any warning that his mail was flushed? Dale -- Dale Worley Cullinet Software UUCP: ...!seismo!harvard!mit-eddie!cullvax!drw ARPA: cullvax!drw@eddie.mit.edu
csg@pyramid.UUCP (Carl S. Gutekunst) (01/09/87)
In article <697@cullvax.UUCP> drw@cullvax.UUCP (Dale Worley) writes: >We are using sendmail with uucp as the transport mechanism under >Ultrix 1.2. If we cannot connect to one of our neighbors for too >long, uuclean deletes the uucp request. What I would like to know is, >does the originator of the message get any warning that his mail was >flushed? Probably not. Under practically all UUCP versions except HoneyDanBer, uuclean is totally ignorant of what it is deleting. The files are unlinked, the UUCP administrator is notified, and on some versions the originator of the request is also notified (this may be an option on uuclean). If the mail originated on the local machine, then the person who sent the mail may get a criptic notice about a uux request being deleted. But if the mail was "hopped" from another machine, the "originator" will be uucp, and the deletion message will go to the UUCP administrator. The uucleanup facility of HoneyDanBer (provided by AT&T in System VR2.0.4 and beyond) attempts to figure out what an queued item is, and send a warning to the real originator. (If you've ever had mail stranded at ihnp4, then you've seen the friendly message that HDB sends out.) <csg>
kwlalonde@watmath.UUCP (01/10/87)
In article <1364@pyramid.UUCP> csg@pyramid.UUCP (Carl S. Gutekunst) writes: >The uucleanup facility of HoneyDanBer (provided by AT&T in System VR2.0.4 and >beyond) attempts to figure out what an queued item is, and send a warning to >the real originator. (If you've ever had mail stranded at ihnp4, then you've >seen the friendly message that HDB sends out.) Here's a simple program we use to automatically return undelivered uucp mail to sender, for 4BSD uucp. It doesn't handle arbitrary uux or uucp requests, but for us that isn't worth fixing. Install uubounce in /usr/lib/uucp and run uu.daily once a day from the cron. #!/bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #!/bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # uu.daily # uubounce.c # This archive created: Fri Jan 9 23:19:46 1987 # By: watmath!root (Ken Lalonde) export PATH; PATH=/bin:$PATH if test -f 'uu.daily' then echo shar: over-writing existing file "'uu.daily'" fi cat << \SHAR_EOF > 'uu.daily' #!/bin/sh # Clean up uucp directories. # Assumes you have subdirectories. PATH=/usr/lib/uucp:/usr/ucb:/bin:/usr/bin ; export PATH umask 002 # For mail NAME=uucp; USER=uucp; export NAME USER SPOOL=/usr/spool/uucp OLDEST=30 # files older than 30 days will be cleaned HOURS=`expr ${OLDEST} '*' 24` SYSTEM=`uuname -l` uuclean -pLTMP. -n48 uuclean -d${SPOOL}/TM. -pTM. -n${HOURS} uuclean -d${SPOOL}/X. -pX. -n${HOURS} uuclean -d${SPOOL}/C. -pC. -n${HOURS} uuclean -d${SPOOL}/D.${SYSTEM}X -pD. -n${HOURS} # Save the D. and D.host stuff in /tmp so we can have a look. temp1=/tmp/uudaily1$$ temp2=/tmp/uudaily2$$ rm -f $temp2 for dir in ${SPOOL}/D.${SYSTEM} ${SPOOL}/D. ; do find $dir -type f -mtime +${OLDEST} -print > $temp1 if [ $dir = ${SPOOL}/D.${SYSTEM} -a -s $temp1 ]; then /usr/lib/uucp/uubounce `cat $temp1` find $dir -type f -mtime +${OLDEST} -print > $temp1 fi if [ -s $temp1 ]; then mv -f `cat $temp1` /tmp cat $temp1 >> $temp2 fi done if [ -s $temp2 ]; then Mail -s "$0: Expired files, moved to /tmp" uucp < $temp2 fi rm -f $temp1 $temp2 SHAR_EOF chmod +x 'uu.daily' if test -f 'uubounce.c' then echo shar: over-writing existing file "'uubounce.c'" fi cat << \SHAR_EOF > 'uubounce.c' /* * uubounce files ... * Attempt to return expired uucp mail files to sender. * Returned files are unlinked, non-mail files are left alone. * /usr/lib/uucp/uu.daily uses this. */ #include <stdio.h> char *myname; char hostname[64]; main(argc, argv) char **argv; { int i; FILE *f; myname = argv[0]; gethostname(hostname, sizeof hostname); /* should use uuname -l */ for (i = 1; i < argc; i++) { if ((f = fopen(argv[i], "r")) == NULL) { Perror("fopen", argv[i]); continue; } bounce(f, argv[i]); fclose(f); } exit(0); } bounce(f, fname) register FILE *f; char *fname; { register int c; register FILE *m; char buf[BUFSIZ], addr[BUFSIZ]; extern FILE *popen(); if (fgets(buf, sizeof buf, f) == NULL) return; if (strncmp("From ", buf, 5)) return; /* not a mail message */ if (sscanf(buf+5, "%s", addr) != 1) return; /* ? */ if (strlen(addr) < 2) return; /* sanity */ sprintf(buf, "Mail -s 'Returned mail' '%s'", addr); if ((m = popen(buf, "w")) == NULL) { Perror("popen", buf); return; } fprintf(m, "We have been unable to deliver the following letter\n\ in a reasonable length of time.\n"); if (hostname[0]) fprintf(m, "Sincerely,\n\t%s!uucp\n", hostname); putc('\n', m); rewind(f); while ((c = getc(f)) != EOF) putc(c, m); if (pclose(m) != 0) Perror("pclose", fname); else if (unlink(fname) < 0) Perror("unlink", fname); } Perror(a, b) char *a, *b; { fprintf(stderr, "%s: %s: ", myname, a); perror(b); } SHAR_EOF # End of shell archive exit 0 -- Ken Lalonde, U of Waterloo