ข้อความ“ คุณมีจดหมายใหม่” ใน Linux / UNIX คืออะไร


426

บางครั้งเมื่อฉันเข้าสู่กล่องและ 'su' เพื่อรูทฉันได้รับข้อความเล็ก ๆ น่ารักบอกว่าฉันมีเมล (ขอบคุณพระเจ้าไม่ใช่ AOL)

  • เมลนี้อยู่ที่ไหน
  • มันมีอะไรบ้าง
  • ใคร / อะไรที่ส่งมา?
  • มันสำคัญแค่ไหน?

นี่เป็น "จดหมาย" ที่แท้จริงแม้ในความหมายเดียวกับอีเมลหรือไม่ หรือเป็นเพียงระบบของฉันที่บอกบางสิ่งบางอย่าง?

แก้ไข:ในความสัมพันธ์กับนี้คำถามที่ผมจะสามารถที่จะส่งตัวเองส่งโดยใช้โปรแกรม sendmail ชอบโดย: email@localhost?


ฉันมีข้อความเดียวในนั้นที่ระบุว่า "ข้อความนี้เป็นส่วนหนึ่งของรูปแบบภายในของโฟลเดอร์อีเมลของคุณ ... " ดังนั้นแน่นอนเมื่อใดก็ตามที่ฉันเข้าสู่ระบบฉันได้รับแจ้งว่ามีจดหมาย
GEdgar

1
@GEdgar: ซึ่งหมายความว่าคุณควรหยุดใช้กล่องจดหมายmboxและย้ายไปยังMaildir :)
grawity

ที่เกี่ยวข้อง: superuser.com/questions/149282/…
dmckee

1
วิธีส่งต่อจดหมาย: unix.stackexchange.com/questions/26666/…
Melebius

1
ในกรณีที่ใคร ๆ กำลังมองหานี่คือ powerhshell one-liner เพื่อแยกสิ่งเหล่านั้นออกเป็นไฟล์เดียวที่อ่านได้โดย outlook:$i=0;(gc .\mail\root -raw) -split '[^, ]From '|%{$i++;sc mail$i.eml -value ("From " + $_)}
JDuarteDJ

คำตอบ:


354

เมลนี้อยู่ที่ไหน

มีแนวโน้มที่จะอยู่ในไฟล์สปูล: /var/mail/$USERหรือ/var/spool/mail/$USERเป็นตำแหน่งที่พบบ่อยที่สุดใน Linux และ BSD

(สถานที่อื่น ๆ ที่เป็นไปได้ - ตรวจสอบว่า$MAILมีการตั้งค่า - แต่โดยค่าเริ่มต้นระบบจะแจ้งให้คุณทราบเท่านั้น/var(/spool)/mail)

โดยปกติแล้วไฟล์สปูลจะอยู่ในรูปแบบmbox ที่ง่ายมากดังนั้นคุณสามารถเปิดในตัวแก้ไขข้อความหรือเพจเจอร์ได้

เพื่อความสะดวกยิ่งขึ้นเล็กน้อยการแจกแจงส่วนใหญ่จะมาพร้อมกับโปรแกรมที่เรียกว่าmail(หรือMail, mailx) คุณสามารถลองmuttหรือalpine; คุณสามารถกำหนดค่าให้ส่งไปยังกล่องจดหมายภายนอกได้ (โปรดดู "นี่คือจดหมายจริงหรือไม่" ด้านล่าง)

มันประกอบด้วยอะไรและใคร / อะไรที่ส่งมา?

ส่วนใหญ่มักจะมีข้อความส่งออกของงาน cron หรือรายงานการรักษาความปลอดภัยของระบบโดยlogwatchหรือขยะที่คล้ายกัน อ่านและหา

มันสำคัญแค่ไหน?

ขึ้นอยู่กับเนื้อหาของแต่ละข้อความเป็นอย่างมาก

อย่างน้อยคุณควรสแกนหัวเรื่องหัวเรื่อง - บ่อยครั้งที่ผู้คนเพิกเฉยกับอีเมลเป็นเวลาหลายเดือนไม่เคยตระหนักว่างาน cron ประจำวันของพวกเขาล้มเหลว

นี่เป็น "จดหมาย" ที่แท้จริงแม้ในความหมายเดียวกับอีเมลหรือไม่ หรือเป็นเพียงระบบของฉันที่บอกบางสิ่งบางอย่าง?

ใช่ทั้งคู่ - มันถูกสร้างโดยระบบของคุณที่จะบอกคุณบางอย่าง แต่ก็เป็นอีเมลจริงและสามารถจัดการได้เช่นกัน

คุณสามารถ (และควร) กำหนดค่าซอฟต์แวร์อีเมลของคุณ - "MTA" aka /usr/sbin/sendmail- เพื่อส่งต่อข้อความไปยังที่อยู่อีเมลส่วนตัวของคุณ คำแนะนำที่แน่นอนจะแตกต่างกันไปตาม MTA (ถ้ามี) ที่คุณติดตั้งไม่ว่าจะเป็นคอมพิวเตอร์ส่วนบุคคลหรือเซิร์ฟเวอร์ไม่ว่าคุณจะมีโดเมนของคุณเองหรือใช้@ gmail.comเป็นต้น

โปรดทราบว่า/usr/sbin/sendmailทุกวันนี้เป็น API ที่แชร์และไม่จำเป็นต้องหมายถึง Sendmail MTA ดั้งเดิม ที่จริงแล้วคุณไม่ควรใช้ Sendmail แต่มีความทันสมัยกว่าเช่น OpenSMTPD, Postfix หรือ Exim4 พวกเขาทั้งหมดให้/usr/sbin/sendmailเครื่องมือเดียวกันแต่ง่ายต่อการกำหนดค่าความปลอดภัยมากขึ้นและมีประสิทธิภาพเช่นเดียวกับ


3
คำตอบที่ดี. หากคุณเพิ่มลิงก์พร้อมข้อมูลเกี่ยวกับวิธีกำหนดค่า OpenSMTPD, Postfix หรือ Exim4 เพื่อส่งต่อจดหมายไปยังที่อยู่อีเมลปกติของคุณมันจะดีขึ้นกว่าเดิม
imolit

1
ต่อไปนี้เป็นคำถามที่เกี่ยวข้องซึ่งแสดงวิธีการตั้งค่าmutt : askubuntu.com/a/499335/75735
KalenGi

คำตอบที่ดี แต่ฉันmailจะใช้อ่านอีเมลได้อย่างไร manpageไม่ได้พูด
jpaugh

1
ฉันดูเมลด้วยคำสั่ง cat / var / mail / $ USER และลบออกด้วยคำสั่ง rm -rf / var / mail / $ USER
Sinan Eldem

@grawity ฉันควรลบไฟล์ใน/var/mail/เมื่อฉันอ่านมันหรือแค่ลบข้อความในนั้น ขอขอบคุณ!
yaylitzis

206

วิธีที่ง่ายที่สุดสำหรับฉันคือการเรียกใช้สิ่งต่อไปนี้ในเทอร์มินัล:

cat /var/spool/mail/root

5
คำตอบที่ใช้ได้จริงที่ดีที่สุดจนถึงตอนนี้เพิ่มความรู้ ตอนนี้ฉันสามารถอ่านจดหมาย ฉันสงสัยว่าทำไมคำตอบที่ถูกที่สุด
CDR

37
ฉันรู้ว่านี่เป็นคำถาม / คำตอบที่ค่อนข้างเก่า แต่XKCDนี้เกี่ยวข้องกับการอภิปราย (คำใบ้: ข้อความโฉบ)
Blackhawk

11
หรือเพียงแค่less $MAILถ้าคุณต้องการนำทาง
Walf

7
หรือless +G $MAILจะเริ่มตอนท้าย
Charlie Gorichanaz

4
@Blackhawk และตอนนี้มากยิ่งขึ้นXKCD นี้
ของหวาน

56

สำหรับใครที่สงสัยว่าจะอ่านข้อความเหล่านี้ทีละคนคุณสามารถใช้ 'จดหมาย'

$ mail

จากนั้นพิมพ์หมายเลขข้อความจากรายการที่คุณต้องการอ่าน

เมื่อต้องการข้ามข้อความถัดไปคุณสามารถพิมพ์ 'ถัดไป' คำสั่งที่มีประโยชน์อื่นคือ 'ลบ' ..

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของโปรแกรมดูการส่งออกของmailman mail


3
// นี้ไม่ได้ทำงานจริงบน CentOS 6. $ mailxในกรณีที่ต้องใช้
นาธาน Basanese

6
ใน Ubuntu 16.04 ฉันต้องติดตั้งก่อนmailutilsโดยเรียกใช้apt install mailutils
Edwin Yip

ในอินสแตนซ์ Amazon EC2 คุณสามารถติดตั้งได้โดยใช้sudo yum install mail
JonDoe297

1
ได้ผลสำหรับฉันใน macOS
juanmirocks

39

เพียงเพื่อให้ความกระจ่างบางอย่างมันเป็นประเพณีมานานแล้วที่กล่องยูนิกซ์เรียกใช้ mailer daemon "ที่ตั้งค่าไว้ในเครื่อง" ซึ่งไม่ได้กำหนดเส้นทางข้อความผ่านอินเทอร์เน็ต แต่คัดลอกข้อความไปยังไดเรกทอรีสปูลของผู้ใช้รายอื่น ๆ กล่าวถึง) มันเป็นอีเมลที่เข้ากันได้กับ SMTP จริง ๆ มันไม่ได้ถูกส่งผ่านทางอินเทอร์เน็ตเพราะมันไม่จำเป็นต้องเป็น

ดังนั้นหากคุณใช้ไคลเอ็นต์อีเมล (เช่นalpineหรือmutt) คุณสามารถส่งอีเมลไปยังผู้ใช้รายอื่นในระบบโดยการระบุที่user@hostnameอยู่หรือในหลาย ๆ กรณีเพียงระบุผู้ใช้ คุณอาจมียูทิลิตีบรรทัดคำสั่งmailxที่สามารถใช้ส่งอีเมลด่วนโดยใช้เชลล์ของคุณ

ตอนนี้ถ้าคุณต้องการส่งข้อความถึงผู้ใช้ในระบบอื่น ๆ นอกเหนือจากที่คุณเข้าสู่ระบบนั่นคือที่ที่ความสนุกที่แท้จริงเริ่มต้นขึ้น คุณจะต้องกำหนดค่า mailer daemon ของคุณเพื่อรับรู้และส่งอีเมลภายนอกไปยังตัวแทนการโอนย้ายกำหนดค่าตัวแทนการโอนย้ายและทำสิ่งต่าง ๆ มากมายที่ฉันยังไม่เข้าใจตัวเอง


24

เมลนี้อยู่ที่ไหน

มีโอกาสมากที่จะเก็บไว้ในเครื่องของคุณในโฟลเดอร์กล่องจดหมายสำหรับผู้ใช้รูทของคุณ (ซึ่งขึ้นอยู่กับประเภทของเมลเซิร์ฟเวอร์ที่คุณติดตั้ง) คุณอาจจะสามารถเข้าถึงได้อย่างรวดเร็วผ่านเทือกเขาแอลป์

มันมีอะไรบ้าง

อาจเป็นเพียงบางประเภทรายงานของระบบ "ดังนั้นพยายามเข้าสู่ระบบ 10 ครั้งด้วยรหัสผ่านที่ไม่ถูกต้อง" .. "ฉันต้องการให้ใครบางคนใช้งานการอัปเดตกับฉัน", "ไดรเวอร์ดังกล่าวและล้มเหลวอย่างต่อเนื่อง", "บอท NSA เพิ่มประสิทธิภาพ 1%" .. ฯลฯ

ใคร / อะไรที่ส่งมา?

บริการบนเซิร์ฟเวอร์ของคุณมีแนวโน้มมากที่สุด

มันสำคัญแค่ไหน?

ขึ้นอยู่กับความสำคัญของเซิร์ฟเวอร์ของคุณ


ฉันคิดว่าคำแนะนำของ John ที่เก็บไว้ใน / var / spool / mail / root ขึ้นอยู่กับสมมติฐาน (ดี) ที่คุณใช้ sendmail ฉันคิดว่าเซิร์ฟเวอร์อีเมลอื่นใช้ตำแหน่งที่ตั้งต่าง ๆ เพื่อเก็บจดหมาย
James T Snell

มีวิธีให้ผู้ใช้ใช้ระบบย่อยเมลหรือไม่?
n0pe

White Phoenix: ฉันจะดูเมื่อจดหมายของฉันคือเมื่อฉันได้รับข้อความอีกครั้ง :) มีวิธีที่ฉันจะเรียกมันหรือเป็นคำถามที่แปลเกินไป?
n0pe

หากคุณต้องการสำรวจการใช้งานเซิร์ฟเวอร์อีเมลของคุณ (คนที่ใช้ในความรู้สึกอีเมลทั่วไป) ก่อนอื่นจะช่วยให้คุณรู้ว่า distro คุณกำลังทำงานอะไรอยู่ หากไม่มีข้อมูลทั้งหมดที่ฉันจะบอกคือฉันขอแนะนำให้คุณอ่านบน sendmail (เพราะคุณอาจใช้ sendmail อยู่แล้ว) ..
James T Snell

ส่วนใหญ่ใช้งาน AIX แต่ฉันต้องการสำรวจสิ่งนี้บนเวิร์กสเตชันของฉันที่บ้านที่ใช้งาน
OpenSuSe

14

โดยทั่วไปแล้วอีเมลนี้จะอยู่ใน/var/spool/mail/rootเมื่อกำหนดค่า sendmail daemon เริ่มต้น (ปกติ) มันมีข้อความอีเมล RAW ที่mailยูทิลิตี้สามารถอ่านได้ ผู้ที่ส่งมันสามารถพบได้โดยการเรียกใช้mailยูทิลิตี้และเพจผ่านข้อความหรืออ่านส่วนหัว RAW

ความสำคัญของข้อความมักจะขึ้นอยู่กับปัจจัยก่อนหน้านี้ที่ส่งมัน :)

โปรแกรมอรรถประโยชน์ระบบจำนวนมากจะใช้ระบบย่อยจดหมายเป็นวิธีการรายงานและการบันทึก ยูทิลิตี้การเฝ้าดูบันทึกการทำงานและบริการอื่น ๆ อาจส่งอีเมลไปยังผู้ใช้รูทท้องถิ่นเพื่อเตือนความจำเกี่ยวกับเหตุการณ์เฉพาะเช่นพื้นที่ดิสก์เหลือน้อยหรือมีข้อผิดพลาดด้านฮาร์ดแวร์ mailer daemon จะแจ้งเตือนคุณหากไม่สามารถส่งอีเมลขาออกได้


มีวิธีดูว่าระบบย่อยเมลของฉันตั้งค่าหรือไม่?
n0pe

@Max sendmail.mcไฟล์ควบคุมการกำหนดค่าของ sendmail daemon ในการติดตั้งเริ่มต้นส่วนใหญ่ /etc/mailมันมักจะอยู่ภายใต้
John T

@ Max ฉันขอแนะนำให้อ่านผ่านการสอนเช่นlinuxhomenetworking.com/wiki/index.php/ ......เพื่อช่วยคุณกำหนดค่า mailer daemon ตามที่ต้องการ
John T

ใน Ubuntu 16.4. ฉันมี/etc/mail.rcสิ่งที่ไม่เกี่ยวข้องกับsendmail
Timo

12

less +G /var/spool/mail/root

แสดงเมลล่าสุดเมื่อสิ้นสุดไฟล์

การแสดงไฟล์เมลโดยตรงเป็นความคิดที่ดี แต่การใช้งานcatอาจผิดพลาดได้ง่าย คุณไม่ต้องการให้เมล์ทั้งหมดเลื่อนไปหากมีหลายข้อความหรือมีข้อความที่ยาวมากในไฟล์ ฉันเพิ่งเห็นหนึ่งด้วย 150MB สองล้านบรรทัด

หากคุณไม่รูท:

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

+Gตัวเลือกที่จะใช้ในการแสดงข้อความล่าสุด; มันไม่ได้อยู่ที่ด้านบนของไฟล์ แต่ท้ายที่สุด

มันเป็นตัวเลือกของlessทำให้มันแสดงหน้าสุดท้ายของไฟล์หลังจากเริ่มต้น นั่นแสดงข้อความสุดท้าย (ใหม่ที่สุด) หากตรงกับหน้าเดียวหรือท้ายข้อความนั้น

ชื่อไฟล์อาจเป็นชื่อ/var/spool/mail/mailแทน/var/spool/mail/root


//, การวิเคราะห์ที่ยอดเยี่ยม คำตอบนี้จะเป็นประโยชน์อย่างยิ่งสำหรับผู้ที่ไม่รู้ว่าจะทำอย่างไรกับไฟล์
นาธาน Basanese

4
ในกรณีที่มีคนอื่นสงสัยว่า+G"สาเหตุที่น้อยกว่าที่จะแสดงแต่ละไฟล์เริ่มต้นที่จุดสิ้นสุดมากกว่าจุดเริ่มต้น" ( linux.die.net/man/1/less )
แซม
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.