205

Any idea why my Mac terminal says:

You have mail in /var/mail/lofye

How can I make it stop saying that every time I open terminal?

quack quixote
  • 43,504
lo_fye
  • 2,391

9 Answers9

205

Somehow you've had a script or something similar deliver mail to your account on your local machine which is stored in /var/mail/$USER

You can either remove the file /var/mail/$USER which will remove the alert that you have mail (as it will alert you if that folder is present and/or has unread messages) or you can use mail to read the messages before deleting them.

Chealion
  • 26,327
64

Type mail to view the mail. Delete all messages with d *, then exit with q to save the changes.

srcerer
  • 123
Gren
  • 1,334
17

There are several ways to remove it. The simplest is:

> /var/mail/<whatever_user>

You need to include the '>'

Akhil
  • 179
6

Open mail and then put in d * and press Enter. The d command means delete and the * selects all mails in the list.

yagooar
  • 161
2

I'm willing to bet it's because there are files in that folder.

Have you actually looked at the contents of the folder? If there is something in there, it will more than likely give you an idea of what caused it, and how to prevent it in the future.

From the terminal:

cd /var/mail/lofye
ls

If you don't have mail, you won't see the message (there's not even a folder for my username under mail on my mac).

EvilChookie
  • 4,577
1

If you are running ClamAV for Mac this is a known issue. The system mails you after each update and scheduled scan.

Greenonline
  • 2,390
BinaryMisfit
  • 20,879
0

There is a trick way.

  1. completely empty the email file

: > /var/mail/$User

  1. change the attribute of email file

sudo chflags schg /var/mail/$User

As except "root", no one can change this file.

Then the annoying "You have mail" gone away.

-2

Just check if you have setup any cronjob in past and forgot to remove it, in my case that was the issue.

List the running cronjobs:

crontab -l

If you can see any unnecessary cronjob than remove it by editing crontab file

crontab -e

It will open nano or vim editor depending on the configuration, press dd in vim to delete the line.

After that clear the unread mail using the mail command, In my case this fixed the issue.

-3

I was able to just create a .hushlogin and I've a clean Terminal now.

$ touch .hushlogin