Câu hỏi Thông báo “Bạn có thư mới” trong Linux / UNIX là gì?


Đôi khi, khi tôi đăng nhập vào một hộp và 'su' để root, tôi nhận được một tin nhắn nhỏ dễ thương nói rằng tôi có thư (cảm ơn GOD nó không phải là AOL).

  • Thư này ở đâu?
  • Nó chứa gì?
  • Ai / Gửi gì?
  • Nó quan trọng như thế nào?

Đây có phải là "thư" thực sự có cùng nghĩa với email không? Hay chỉ là hệ thống của tôi nói với tôi điều gì đó?

CHỈNH SỬA: Liên quan đến điều này câu hỏi, tôi có thể gửi thư cho mình bằng cách sử dụng chương trình sendmail như vậy không: email@localhost?


371
2017-07-04 15:23


gốc


Tôi có một tin nhắn trong đó nói rằng "Văn bản này là một phần của định dạng nội bộ của thư mục thư của bạn, ..." vì vậy tất nhiên bất cứ khi nào tôi đăng nhập, tôi được thông báo rằng tôi có thư. - GEdgar
@GEdgar: Điều này thường có nghĩa là bạn nên ngừng sử dụng mbox hộp thư và di chuyển đến Maildir :) - grawity
Liên quan: superuser.com/questions/149282/… - dmckee
Cách chuyển tiếp thư: unix.stackexchange.com/questions/26666/… - Melebius
Trong trường hợp bất cứ ai đang tìm kiếm, đây là powerhshell một lớp lót để chia tách thành các tệp đơn có thể đọc được bằng cách xem: $i=0;(gc .\mail\root -raw) -split '[^, ]From '|%{$i++;sc mail$i.eml -value ("From " + $_)} - JDuarteDJ


Các câu trả lời:


Thư này ở đâu?

Nó có thể nằm trong tệp spool: /var/mail/$USER hoặc là /var/spool/mail/$USER là các vị trí phổ biến nhất trên Linux và BSD.

(Các địa điểm khác có thể - kiểm tra xem $MAIL được đặt - nhưng theo mặc định, hệ thống chỉ thông báo cho bạn về /var(/spool)/mail.)

Thông thường các tập tin spool là rất đơn giản mbox định dạng, vì vậy bạn có thể mở nó trong một trình soạn thảo văn bản hoặc máy nhắn tin.

Đối với một cách thuận tiện hơn một chút, hầu hết các bản phân phối đi kèm với một chương trình gọi là mail (hoặc là Mail, mailx). Bạn co thể thử mutt hoặc là alpine; bạn thậm chí có thể cấu hình nó để được gửi đến một hộp thư bên ngoài. (Xem "đây có phải là thư thực sự không?" Bên dưới.)

Nó chứa gì và ai gửi cái gì?

Thông thường các tin nhắn chứa đầu ra của các công việc cron, hoặc một báo cáo bảo mật hệ thống bởi logwatch, hoặc rác tương tự. Đọc nó và tìm hiểu.

Nó quan trọng như thế nào?

Phụ thuộc rất nhiều vào nội dung của mỗi tin nhắn.

Bạn Nên ít nhất quét tiêu đề chủ đề - thường mọi người bỏ qua thư trong nhiều tháng không bao giờ nhận ra rằng công việc cron hàng ngày của họ không thành công.

Đây có phải là "thư" thực sự có cùng nghĩa với email không? Hay chỉ là hệ thống của tôi nói với tôi điều gì đó?

Có cho cả hai - nó được tạo ra bởi hệ thống của bạn cho bạn biết điều gì đó, nhưng nó cũng là email thực tế và có thể được xử lý như vậy.

Bạn có thể (và nên) cấu hình phần mềm mail của bạn - "MTA" aka /usr/sbin/sendmail - để chuyển tiếp thư đến địa chỉ thư cá nhân của bạn. Hướng dẫn chính xác khác nhau tùy thuộc vào MTA (nếu có) bạn đã cài đặt, cho dù đây là máy tính cá nhân hay máy chủ, cho dù bạn có tên miền riêng hay sử dụng @ gmail.com, v.v.

Lưu ý rằng /usr/sbin/sendmail ngày nay là một API được chia sẻ và không nhất thiết là MTA Sendmail gốc. Trong thực tế, bạn không nên sử dụng Sendmail, nhưng một cái gì đó hiện đại hơn như OpenSMTPD, Postfix, hoặc Exim4. Tất cả chúng đều giống nhau /usr/sbin/sendmail công cụ, nhưng chúng dễ cấu hình hơn, an toàn hơn và mạnh mẽ hơn.


308
2017-07-04 16:30



Câu trả lời tốt. Nếu bạn đã thêm các liên kết với thông tin về cách cấu hình OpenSMTPD, Postfix hoặc Exim4 để chuyển tiếp thư tới địa chỉ email bình thường của bạn, nó sẽ còn tốt hơn nữa. - imolit
Đây là câu hỏi liên quan cho thấy cách thiết lập mutt: askubuntu.com/a/499335/75735 - KalenGi
Câu trả lời chính xác. Nhưng làm thế nào để tôi sử dụng mail để đọc email? Các manpage không nói. - jpaugh
Tôi đã xem thư của mình bằng lệnh cat / var / mail / $ USER và xóa nó bằng lệnh rm -rf / var / mail / $ USER. - Sinan Eldem
@grawity tôi nên xóa các tệp trong /var/mail/ khi tôi đọc chúng hoặc chỉ cần xóa văn bản bên trong chúng? cảm ơn bạn! - yaylitzis


Cách dễ nhất đối với tôi là chạy các lệnh sau trong terminal:

cat /var/spool/mail/root

178
2017-11-25 11:46



Câu trả lời thực tế tốt nhất cho đến nay mà thực sự thêm vào kiến ​​thức. Bây giờ tôi có thể đọc thư. Tôi tự hỏi tại sao đó là câu trả lời thấp nhất. - CDR
Tôi nhận ra đây là một câu hỏi / câu trả lời khá cũ, nhưng XKCD này có liên quan đến cuộc thảo luận. (gợi ý: văn bản di chuột) - Blackhawk
Hay là less $MAIL nếu bạn muốn điều hướng. - Walf
Hoặc là less +G $MAIL để bắt đầu ở cuối. - Charlie Gorichanaz
@Blackhawk Và giờ đây còn hơn thế nữa XKCD này. - dessert


Chỉ cần cung cấp một số giải thích rõ ràng, đó là truyền thống trong một thời gian dài cho các hộp UNIX chạy một trình daemon "được cấu hình cục bộ" mà không định tuyến thư thông qua Internet, mà chỉ sao chép các thư đến các thư mục spool của người dùng khác (như @John T) đề cập). Đó là email tuân thủ SMTP thực, nó không được định tuyến qua Internet bởi vì nó không cần thiết.

Vì vậy, nếu bạn kích hoạt ứng dụng email (như alpine hoặc là mutt) bạn có thể gửi thư cho người dùng khác trên hệ thống bằng cách giải quyết user@hostnamehoặc trong nhiều trường hợp, chỉ cần chỉ định người dùng. Bạn cũng có thể có một tiện ích dòng lệnh gọi là mailx có thể được sử dụng để gửi email nhanh bằng cách sử dụng trình bao của bạn.

Bây giờ, nếu bạn muốn gửi tin nhắn cho người dùng trên các hệ thống khác với hệ thống bạn đã đăng nhập, đó là nơi niềm vui thực sự bắt đầu. Bạn sẽ cần phải cấu hình daemon bưu phẩm của bạn để nhận ra và gửi email bên ngoài cho một đại lý chuyển giao, cấu hình các đại lý chuyển giao, và làm một bó toàn bộ công cụ tôi chưa hiểu bản thân mình.


36
2017-07-04 16:31





Đối với bất cứ ai tự hỏi làm thế nào để đọc các tin nhắn này từng người một, bạn chỉ có thể sử dụng 'mail'

$ mail

Sau đó nhập một số tin nhắn từ danh sách mà bạn muốn đọc.

Để goto tin nhắn tiếp theo bạn có thể gõ 'next', một lệnh hữu dụng khác là 'delete'.

Để xem thêm về cách mail chương trình hoạt động, xem kết quả của man mail.


36
2017-08-30 19:47



//, Điều này không thực sự hoạt động, trên CEntOS 6. Trong trường hợp đó, người ta phải sử dụng $ mailx. - Nathan Basanese
Trên Ubuntu 16.04, trước tiên tôi cần cài đặt mailutils bằng cách chạy apt install mailutils - Edwin Yip
Trên các phiên bản Amazon EC2, bạn có thể cài đặt nó bằng cách sử dụng sudo yum install mail - JonDoe297
Làm việc cho tôi trên macOS - juanmirocks


Thư này ở đâu?

Rất có thể được lưu trữ trên máy tính của bạn, trong thư mục hộp thư cho người dùng root của bạn (trong đó R THNG phụ thuộc vào loại máy chủ thư bạn đã cài đặt). Bạn có thể truy cập nó khá nhanh chóng alpine.

Nó chứa gì?

Có lẽ chỉ là một số công cụ loại báo cáo hệ thống. "Vì vậy, và như vậy đã cố gắng để đăng nhập 10 lần với một mật khẩu không chính xác" .. "Tôi muốn ai đó sẽ chạy cập nhật về tôi", "trình điều khiển  như vậy và không ngừng liên tục "," Bot NSA đã tăng hiệu suất thêm 1% ".. v.v.

Ai / Gửi gì?

Dịch vụ trên máy chủ của bạn, rất có thể.

Nó quan trọng như thế nào?

Phụ thuộc vào tầm quan trọng của máy chủ của bạn.


23
2017-07-04 15:29



Tôi nghĩ rằng gợi ý của John rằng nó được lưu trữ trong / var / spool / mail / root được dựa trên một giả định (tốt) rằng bạn đang chạy sendmail. Tôi nghĩ rằng các máy chủ thư khác sử dụng các vị trí khác nhau để lưu trữ thư. - James T Snell
Có cách nào để người dùng sử dụng hệ thống phụ thư không? - n0pe
White Phoenix: Tôi sẽ xem xét khi thư của tôi là khi tôi nhận được tin nhắn một lần nữa :) Có cách nào để tôi kích hoạt nó hoặc là quá địa phương hóa của một câu hỏi? - n0pe
Nếu bạn muốn khám phá việc chạy máy chủ thư của riêng mình (mà mọi người sử dụng theo nghĩa thông thường của email), trước tiên nó sẽ giúp bạn biết bạn đang chạy cái gì? Nếu không có thông tin đó, tất cả tôi sẽ nói, là tôi đề nghị bạn đọc lên trên sendmail (vì bạn có thể đang chạy sendmail rồi) .. - James T Snell
Hầu hết trong số họ đang chạy AIX nhưng tôi muốn khám phá điều này trên máy trạm của tôi ở nhà đang chạy OpenSuSe - n0pe


Thư này thường nằm ở /var/spool/mail/root khi daemon sendmail mặc định (thông thường) được cấu hình. Nó chứa một tin nhắn e-mail RAW có thể được đọc bởi mail tiện ích. Ai gửi nó có thể được tìm thấy bằng cách chạy mail tiện ích và phân trang qua tin nhắn hoặc đọc tiêu đề RAW.

Tầm quan trọng của thông điệp thường phụ thuộc vào yếu tố trước đó, ai đã gửi nó :)

Nhiều tiện ích hệ thống sẽ sử dụng hệ thống con thư làm phương tiện báo cáo và ghi nhật ký. Tiện ích của trình theo dõi nhật ký và các dịch vụ khác có thể gửi e-mail đến người dùng root cục bộ như một lời nhắc về một sự kiện cụ thể, chẳng hạn như lỗi đĩa cứng hoặc lỗi phần cứng. Các daemon bưu phẩm cũng sẽ cảnh báo bạn nếu nó không gửi một e-mail gửi đi.


13
2017-07-04 15:28



Có cách nào để xem hệ thống phụ thư của tôi được thiết lập như thế nào? - n0pe
@Max the sendmail.mc tập tin điều khiển cấu hình của daemon sendmail trên hầu hết các cài đặt mặc định. Nó thường nằm dưới /etc/mail. - John T
@Max Tôi thực sự khuyên bạn nên đọc qua một hướng dẫn như linuxhomenetworking.com/wiki/index.php/… để giúp bạn cấu hình daemon thư như mong muốn. - John T
Trên ubuntu 16.4., Tôi có /etc/mail.rc không liên quan đến sendmail - Timo


less +G /var/spool/mail/root

hiển thị các thư mới nhất, ở cuối nếu tệp.

Hiển thị trực tiếp tệp thư là một ý tưởng hay nhưng sử dụng cat có thể dễ dàng đi sai. Bạn không muốn tất cả các thư cuộn theo, nếu có nhiều thư hoặc các thư rất dài trong tệp. Tôi chỉ nhìn thấy một với 150MB, hai triệu dòng.

Nếu bạn không phải là root:

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

Các +G tùy chọn được sử dụng để hiển thị thông báo mới nhất trước tiên; Nó không phải ở trên cùng của tập tin, nhưng cuối cùng.

Nó là một lựa chọn của less, làm cho nó hiển thị trang cuối cùng của tập tin sau khi bắt đầu. Điều đó hiển thị thông báo cuối cùng (mới nhất), nếu nó phù hợp với một trang, hoặc kết thúc bằng cách khác.

Tên tệp có thể là /var/spool/mail/mail thay vì /var/spool/mail/root


10
2017-09-03 00:16



//, Sự cố tuyệt vời. Câu trả lời này sẽ đặc biệt hữu ích cho những người không dễ dàng biết phải làm gì với tệp. - Nathan Basanese
Trong trường hợp bất cứ ai khác đang tự hỏi, +G "gây ra ít hơn để hiển thị ban đầu mỗi tập tin bắt đầu từ cuối chứ không phải là bắt đầu." (linux.die.net/man/1/less) - Sam
@Sam Cảm ơn, tinh tế một số chi tiết. - Volker Siegel