Що таке повідомлення "У вас нова пошта" в Linux / UNIX?


426

Іноді, коли я входжу в поле і 'су', щоб отримати корінь, я отримую миле маленьке повідомлення про те, що я маю пошту (дякую БОГУ, що це не AOL).

  • Де ця пошта?
  • Що він містить?
  • Хто / що надіслав?
  • Наскільки це важливо?

Це навіть фактична «пошта» в тому ж сенсі, що й електронна пошта? Або це просто моя система мені щось говорить?

EDIT: Що стосується цього питання, чи зможу я надіслати собі пошту за допомогою програми sendmail так email@localhost:?


У мене є одне повідомлення там, де написано "Цей текст є частиною внутрішнього формату вашої поштової папки, ...", тому, звичайно, кожного разу, коли я входжу в систему, мені повідомляють, що у мене є пошта.
GEdgar

1
@GEdgar: Зазвичай це означає, що ви повинні перестати використовувати поштові скриньки mbox та перейти на Maildir :)
grawity


1
Як переслати пошту: unix.stackexchange.com/questions/26666/…
Мелебій

1
У випадку, якщо хтось дивиться, ось одношаровий powerhshell розбиває його на єдині файли, які можна прочитати за $i=0;(gc .\mail\root -raw) -split '[^, ]From '|%{$i++;sc mail$i.eml -value ("From " + $_)}
прогнозами

Відповіді:


354

Де ця пошта?

Ймовірно, це у файлі золотниці: /var/mail/$USERабо /var/spool/mail/$USERце найпоширеніші місця в Linux та BSD.

(Можливі й інші місцеположення - перевірте, чи $MAILвстановлено, але за замовчуванням система лише інформує про вас /var(/spool)/mail.)

Зазвичай файл котушки має дуже простий формат mbox , тому його можна відкрити в текстовому редакторі чи пейджері.

Дещо зручнішим способом більшість дистрибутивів є програма, що називається mail(або Mail, mailx). Ви можете спробувати muttабо alpine; Ви навіть можете налаштувати його для надсилання на зовнішню поштову скриньку. (Дивіться "це справжня пошта?" Нижче.)

Що він містить, і хто / що надіслав?

Найчастіше повідомлення містять вихідні завдання cron, або звіт про безпеку системи за допомогою лотчергу , або подібні непотрібні. Прочитайте і дізнайтеся.

Наскільки це важливо?

Значно залежить від вмісту кожного повідомлення.

Ви повинні принаймні скануванні предметних заголовків - часто люди ігнорують пошту в протягом декількох місяців не розуміючи , що їх щоденні хрон робочі місця зазнають невдачі.

Це навіть фактична «пошта» в тому ж сенсі, що й електронна пошта? Або це просто моя система мені щось говорить?

Так для обох - це генерується вашою системою, яка вам щось повідомляє, але це також фактична електронна пошта і може оброблятися як така.

Ви можете (і повинні) налаштувати своє поштове програмне забезпечення - "MTA" aka /usr/sbin/sendmail- для переадресації повідомлень на вашу особисту поштову адресу. Точні вказівки змінюються залежно від того, який MTA (якщо такий є) ви встановили, чи це персональний комп’ютер чи сервер, чи є у вас власний домен чи ви використовуєте @ gmail.com тощо.

Зауважте, що /usr/sbin/sendmailнині це спільний API і не обов'язково означає оригінальний MTA Sendmail. Насправді, ви не повинні використовувати Sendmail, а щось більш сучасне, як OpenSMTPD, Postfix або Exim4. Усі вони надають однаковий /usr/sbin/sendmailінструмент, але їх простіше конфігурувати, захистити і настільки ж потужно.


3
Хороша відповідь. Якби ви додали посилання з інформацією про те, як налаштувати OpenSMTPD, Postfix або Exim4 для пересилання пошти на вашу звичайну адресу електронної пошти, було б ще краще.
imolit

1
Ось відповідне питання, яке показує, як налаштувати mutt : askubuntu.com/a/499335/75735
KalenGi

Чудова відповідь. Але як я можу mailчитати електронну пошту? На сторінці не вказано .
jpaugh

1
Я переглянув свою пошту з командою cat / var / mail / $ USER і видалив її командою rm -rf / var / mail / $ USER.
Сінан Елдем

@grawity я повинен видалити файли, /var/mail/коли я їх читаю, або просто очистити текст всередині них? спасибі!
yaylitzis

205

Найпростішим для мене способом було запустити наступне в терміналі:

cat /var/spool/mail/root

5
Найкраща практична відповідь на даний момент, що насправді доповнює знання. Тепер я можу прочитати пошту. Цікаво, чому це найсуворіша відповідь.
CDR

37
Я усвідомлюю, що це досить старе питання / відповідь, але цей XKCD має відношення до дискусії. (натяк: наведіть текст)
Blackhawk

11
Або просто less $MAILякщо ви хочете орієнтуватися.
Вальф

7
Або less +G $MAILдля початку з кінця.
Чарлі Горічаназ

4
@Blackhawk А тепер ще більше цей XKCD .
десерт

56

Для тих, хто цікавиться, як читати ці повідомлення одне за одним, ви можете просто скористатися "поштою"

$ mail

Потім введіть номер повідомлення зі списку, який ви хочете прочитати.

Щоб перейти до наступного повідомлення, ви можете ввести "next", інша корисна команда - "delete".

Щоб дізнатись більше про те, як mailпрацює програма, дивіться вихідні дані man mail.


3
//, насправді це не працює на CEntOS 6. У цьому випадку потрібно використовувати $ mailx.
Натан Басанес

6
У Ubuntu 16.04 мені потрібно спочатку встановити mailutils, запустившиapt install mailutils
Edwin Yip

На примірниках Amazon EC2 ви можете встановити його за допомогоюsudo yum install mail
JonDoe297

1
Працює для мене на macOS
juanmirocks

39

Запропонуючи трохи роз'яснити, давно вже існує традиція, щоб у вікнах UNIX запускався "локально налаштований" демон пошти, який не здійснює маршрутизацію повідомлень по Інтернету, а лише копіює повідомлення іншим користувачам в каталоги котушок (як @John T згаданий). Це справжня електронна пошта, сумісна з SMTP, вона просто не маршрутизована через Інтернет, тому що цього не потрібно.

Отже, якщо ви запускаєте клієнт електронної пошти (наприклад, alpineабо mutt), ви можете надсилати пошту іншим користувачам у системі, звертаючись до user@hostnameабо у багатьох випадках, просто вказуючи користувача. Ви також mailxможете скористатися утилітою командного рядка, яку можна використовувати для надсилання швидкого електронного листа за допомогою оболонки.

Тепер, якщо ви хочете відправляти повідомлення користувачам у інших системах, ніж у тій, до якої ви ввійшли, саме тут починається справжня забава. Вам потрібно буде налаштувати демона пошти для розпізнавання та передачі зовнішньої електронної пошти агенту передачі, налаштування агента передачі та ще цілу купу речей, яких я ще не розумію.


24

Де ця пошта?

Дуже ймовірно, що він зберігається на вашій машині, у папці поштової скриньки для вашого кореневого користувача (де це залежить від того, який поштовий сервер ви встановили). Ви можете, ймовірно, отримати доступ до нього досить швидко через альпійські .

Що він містить?

Можливо, лише деякі типи системних звітів. "Так і так намагався ввійти 10 разів з неправильним паролем" .. "Я б хотів, щоб хтось запускав оновлення на мене", "драйвер такий-і-такий постійно виходить з ладу", "Бот NSA підвищив продуктивність на 1%" .. тощо.

Хто / що надіслав?

Послуги на вашому сервері, швидше за все.

Наскільки це важливо?

Залежить від того, наскільки важливий ваш сервер.


Я думаю, що пропозиція Джона про те, що він зберігається в / var / spool / mail / root, ґрунтується на (хорошому) припущенні, що у вас працює sendmail. Я думаю, що інші поштові сервери використовують різні місця для зберігання пошти.
Джеймс Т Снелл

Чи є спосіб користувачі використовувати підсистему пошти?
n0pe

Білий Фенікс: Я перегляну, коли моя пошта, коли я знову отримаю повідомлення :) Чи є спосіб, щоб я його викликав чи це занадто локалізовано питання?
n0pe

Якщо ви хочете вивчити свій власний поштовий сервер (який люди використовують у типовому сенсі електронної пошти), спочатку допоможе дізнатися, який дистрибутив ви працюєте? Без цієї інформації, все, що я скажу, це те, що я пропоную вам прочитати sendmail (як ви, мабуть, вже працюєте з sendmail) ..
James T Snell

Більшість з них працює на AIX, але я хотів би вивчити це на своїй робочій станції вдома під управлінням OpenSuSe
n0pe

14

Ця пошта, як правило, розміщена в тих випадках, /var/spool/mail/rootколи налаштований демон (звичайний) демон за замовчуванням sendmail. Він містить повідомлення електронної пошти RAW, яке може бути прочитане mailутилітою. Хто його надіслав, можна знайти, запустивши mailутиліту та підкачившись повідомленнями чи прочитавши заголовки RAW.

Важливість повідомлення зазвичай залежить від попереднього фактору, який його надіслав :)

Багато системні утиліти будуть використовувати підсистему поштового зв’язку як засіб звітування та ведення журналів. Утиліти для спостереження за журналом та інші сервіси можуть надсилати електронному листу місцевому користувачеві root як нагадування про певну подію, наприклад, мало місця на диску або помилки обладнання. Демон пошти також попередить вас, якщо не вдалося надіслати вихідну пошту.


Чи є спосіб побачити, як налаштована моя поштова підсистема?
n0pe

@Max sendmail.mcфайл керує конфігурацією демона sendmail для більшості встановлень за замовчуванням. Зазвичай він розташований під /etc/mail.
Джон Т

@Max Я настійно рекомендую ознайомитись з підручником, таким як linuxhomenetworking.com/wiki/index.php/…, щоб допомогти вам налаштувати демон поштової пошти за бажанням.
Джон Т

У ubuntu 16.4., У мене /etc/mail.rcце не пов’язаноsendmail
Тимо

12

less +G /var/spool/mail/root

показує останню пошту, наприкінці, якщо файл.

Безпосередньо показ файлу пошти є хорошою ідеєю, але використання catлегко може піти не так. Ви не хочете, щоб усі листи прокручувались, якщо у файлі багато повідомлень або дуже довгих повідомлень. Я щойно бачив один із 150MB, два мільйони рядків.

Якщо ви не root:

sudo less +G /var/spool/mail/root

Цей +Gпараметр використовується, щоб спочатку показати нове повідомлення; Це не вгорі файлу, а в кінці.

Це варіант less, щоб він показав останню сторінку файлу після запуску. Це відображає останнє повідомлення (новітнє), якщо воно підходить до однієї сторінки, або кінець цього в іншому випадку.

Ім'я файлу може бути /var/spool/mail/mailзамість/var/spool/mail/root


//, Відмінна поломка. Ця відповідь була б особливо корисною для тих, хто не легко знає, що робити з файлом.
Натан Басанес

4
Якщо хтось цікавиться, +G"змушує менше спочатку відображати кожен файл починаючи з кінця, а не з початку". ( linux.die.net/man/1/less )
Сем
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.