summaryrefslogtreecommitdiff
path: root/userforward
blob: 4c5cacac7a887a72d1c1d9ef803d10805fca4e54 (plain)
  1. #!/bin/sh
  2. if [ $# \< 2 -o $# \> 3 ]; then
  3. echo "Usage: userforward {account} {forward@address.somewhere} [force]"
  4. exit 1
  5. fi
  6. user=$1
  7. addr=$2
  8. force=$3
  9. set -e
  10. uid=`id -u $user`
  11. if [ $uid \< 1000 -a "x$force" != "xforce" ]; then
  12. echo "ERROR: User is not a real user (uid too low)!"
  13. exit 1
  14. fi
  15. homedir=`getent passwd $user | awk -F: '{print $6}';`
  16. if [ -e $homedir/.forward -a "x$force" != "xforce" ]; then
  17. echo "ERROR: User \"$user\" already has a .forward!"
  18. exit 1
  19. fi
  20. if [ -d $homedir ]; then
  21. touch $homedir/.forward
  22. echo "echo $addr>$homedir/.forward"
  23. echo $addr>$homedir/.forward
  24. chown $user. $homedir/.forward
  25. else
  26. echo "ERROR: Homedir \"$homedir\" of user \"$user\" doesn't exist!"
  27. exit 1
  28. fi
  29. mailspool=/var/mail/$user
  30. thismaildomain=`cat /etc/mailname 2> /dev/null || hostname -d`
  31. if [ -f $mailspool ]; then
  32. if [ -s $mailspool -a -x /usr/bin/formail -a -x /usr/lib/sendmail ]; then
  33. mv $mailspool $mailspool.off
  34. /usr/bin/formail -A "X-Resent-By: postmaster@$thismaildomain" -i "To: $addr" -R Cc: Old-Cc: -R Bcc: Old-Bcc: -s /usr/lib/sendmail -t < $mailspool.off
  35. rm -f $mailspool.off
  36. echo "Old incoming mails forwarded to new account."
  37. else
  38. echo "OBS! Old incoming mails not forwarded."
  39. fi
  40. fi
  41. echo "Done!"