summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xuserforward30
1 files changed, 24 insertions, 6 deletions
diff --git a/userforward b/userforward
index 4aa4c21..88f2413 100755
--- a/userforward
+++ b/userforward
@@ -5,16 +5,22 @@ if [ $# \< 2 -o $# \> 3 ]; then
exit 1
fi
-uid=$1
+user=$1
addr=$2
force=$3
set -e
-homedir=`getent passwd $uid | awk -F: '{print $6}';`
+uid=`id -u $user`
+if [ $uid \< 1000 ]; then
+ echo "ERROR: User is not a real user (uid too low)!"
+ exit 1
+fi
+
+homedir=`getent passwd $user | awk -F: '{print $6}';`
if [ -e $homedir/.forward -a "x$force" != "xforce" ]; then
- echo "User \"$uid\" already has a .forward - (add \"force\" to overwrite...)"
+ echo "ERROR: User \"$user\" already has a .forward (add \"force\" to overwrite...)!"
exit 1
fi
@@ -22,9 +28,21 @@ if [ -d $homedir ]; then
touch $homedir/.forward
echo "echo $addr>$homedir/.forward"
echo $addr>$homedir/.forward
- chown $uid. $homedir/.forward
- echo "Done!"
+ chown $user. $homedir/.forward
else
- echo "Problem with user \"$uid\": Homedir \"$homedir\" doesn't exist - exiting..."
+ echo "ERROR: Homedir \"$homedir\" of user \"$user\" doesn't exist!"
exit 1
fi
+
+mailspool=/var/mail/$user
+thismaildomain=`cat /etc/mailname 2> /dev/null || hostname -d`
+
+if [ -f $mailspool ]; then
+ if [ -s $mailspool -a -x /usr/bin/formail -a -x /usr/lib/sendmail ]; then
+ /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
+ rm -f $mailspool
+ echo "Old incoming mails forwarded to new account."
+ else
+ echo "OBS! Old incoming mails not forwarded."
+fi
+echo "Done!"