How to change Environment Variable $MAIL on FreeBSD box Tired of "You have new mail in /var/mail/root (or other user)" messages on your FreeBSD box's shell prompt ?? Well this is how to change your environment variable $MAIL.
Environment variables are a set of values on which the way of your system's processes and well functioning depend on. They are stored in the shell’s environment space and they are used by processes to know binaries paths, application paths, values of variables that they will use, etc. This space can be used by any program invoked by the shell, and thus contains a lot of program configuration. FreeBSD (and Linux/AIX/HP-UX/Solaris/UNIX) process use environment variable for different purposes (SAP, Oracle, cron, etc). Running processes can access the values of environment variables for configuration purposes. Here are some examples:
Or you can just type set at the shell prompt and you will see all environment variables and all variables that you have set for your user.
Some environment variables are stored in /etc/profile, others in your ~/.profile file (overwrites /etc/profile), others in /etc/login.conf file.
In this case we will discuss how to change your $MAIL variable from /var/mail/root to what_ever@you_want.com or how you can change it for some other user (in case you are root).
I wanted to change my FreeBSD box's root's email which is the variable $MAIL, held in /etc/login.conf file. First thing to do is to check the login class for user root (of course, it's not set and it is default one, cat /etc/passwd|grep root | awk -F":" '{print $5}' = "")
[apophis:root:~]# pw user show root root:*:0:0::0:0:host &:/root:/usr/local/bin/bash
The login class for root is the default one (5th field is empty). Next we open /etc/login.conf (which contains various attributes and capabilities for users and login classes ) with your favourite editor (my case, vim ) and see that for default: class we have:
default: :passwd_format=md5: :copyright=/etc/COPYRIGHT: :welcome=/etc/motd: :setenv=MAIL=/var/mail/$,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES: #THIS IS WHAT IS INTERESTING FOR US :path=/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin /usr/X11R6/bin ~/bin: :nologin=/var/run/nologin: :cputime=unlimited: :datasize=unlimited: :stacksize=unlimited: :memorylocked=unlimited: :memoryuse=unlimited: :filesize=unlimited: :coredumpsize=unlimited: :openfiles=unlimited: :maxproc=unlimited: :sbsize=unlimited: :vmemoryuse=unlimited: :priority=0: :ignoretime@: :umask=022:
MAIL=/var/mail/$ means that for default login class, all users that have this login class set have their mail set to /var/mail/user uneless otherwise specified (as below). Next we go to root: section and modify it to be similar to this:
root: :ignorenologin: :setenv=MAIL=something@anything.com,BLOCKSIZE=K,FTP_PASSIVE_MODE=YES: ###We modify this line :tc=default:
Basically we modifed :setenv=MAIL=/var/mail/$ to :setenv=MAIL=something@anything.com. Exit your editor and save your changes (:x for vi/vim).
Now, at the shell prompt type the following command to create /etc/login.conf.db from /etc/login.conf:
$ cap_mkdb /etc/login.conf
Now you can logout and log back in and issue again the command echo $MAIL and you will see the change.
Designed and developed by Andrei Manescu. Optimized for Mozilla Firefox.
Copyright 2007 Andrei Manescu
All trademarks and copyrights on this page are owned by their respective owners. Comments are owned by those who posted them.