0

When logged into my server via SSH the $ mail command doesn't work properly. Instead of returning the list of mail it returns No mail for <user>.

$ mail works correctly when on a terminal at the machine, so it's definitely an issue with using SSH, which is how I will need to access it.

6
  • 1
    What is the ssh command that you're using?
    – schaiba
    Jan 9, 2017 at 14:28
  • @schaiba, I'm just accessing the server like ssh user@server and then running the mail command at the prompt. $ mail.
    – Alxs
    Jan 9, 2017 at 14:37
  • 1
    What is the value of $MAIL in each case?
    – JigglyNaga
    Jan 9, 2017 at 14:42
  • @JigglyNaga, this seems to be the problem. when logged in via SSH (even as regular user) the path is set to /var/spool/mail/root. Via the actual console it is /var/spool/mail/alxs.
    – Alxs
    Jan 9, 2017 at 14:47
  • 1
    something is incorrectly setting $MAIL, then
    – Jeff Schaller
    Jan 9, 2017 at 14:48

2 Answers 2

2

I'm able to correctly read user mails by giving in input the file path:

mail -f /var/spool/mail/$USER

I also encountered some issue reading (root)user email, I ssh logged in with user phil, then I changed user to root typing sudo su and then issuing mail command I got:

No mail for phil

So it seems that mail command try to read the email of the user with whom you opened the ssh connection. And as it came out the cause is a wrong value of $MAIL variable:

[root@preprod ~]# echo $MAIL
/var/spool/mail/phil
3
  • Cheers @lese, That's what's happening. It's just a VM so I'm logging in as root and then su to a regular user. So the environment remains set from the original login. Thanks mate!
    – Alxs
    Jan 9, 2017 at 14:53
  • 1
    You need to use 'su - <user>'. That sets all the user's environment variables correctly
    – warren
    Jan 9, 2017 at 15:00
  • Yeah sudo - <user> correctly sets the environment variables. I'll get into the habit of doing it this way.
    – Alxs
    Jan 9, 2017 at 15:04
1

try using sudo su - the '-' would allow the profile and environment variable to be set for user you are switching to which would then allow the mail command to run as expected.

Note: It will be for all environment variables and not just $MAIL.

1
  • Thanks Kerbi. I'll get into the habit of doing it this way! Up-voted. :)
    – Alxs
    Jan 9, 2017 at 15:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .