One thing I try to do is retrieve information from the system instead of hardcoding it.
For example, instead of
USER=mail
UID=8
use USER=mail
UID=$(id -u $USER)
It improves portability and removes potential sources of errors.Also note that this is something that should be done in any programming language, not just shell scripts.