เหตุใด OS X จึงสามารถส่งอีเมลโดยไม่มีการกำหนดค่า SMTP เป็นครั้งแรก


9

เมื่อฉันลองคำสั่งในเทอร์มินัลอีเมลจะถูกส่ง ฉันตรวจสอบแล้วว่าไม่ได้มีการใช้งาน SMTP ในเครื่องดังนั้นกลไกที่ Apple ใช้อยู่เบื้องหลังคืออะไร

echo "Hello" | mail -s "Test" foo@bar.com

คำตอบ:


4

mail บน OS X ดูเหมือนว่าจะวางไข่ Postfix นานพอที่จะจัดการกับเมลจากนั้นก็ฉีกทิ้งในเวลาอันสั้น

หากต้องการดูสิ่งนี้ให้ลองใช้telnet localhost 25ก่อนคำสั่ง mail จากนั้นทันทีหลังจากนั้นจากนั้นรอ 5 นาทีแล้วลองอีกครั้ง

ฉันไม่แน่ใจว่าจริง ๆ แล้วนี่เป็นคำตอบที่ถูกต้องสำหรับคำถามเพราะมันไม่ได้อธิบายว่า Postfix จะถูกวางและฉีกขาดได้อย่างไร แต่หวังว่ามันจะช่วยตอบคำถามได้


7

SMTP daemons หรือเซิร์ฟเวอร์มีไว้เพื่อรับจดหมายไม่ใช่ส่ง ในตัวอย่างของคุณmailเป็นไคลเอนต์อีเมลอย่างแท้จริงและเชื่อมต่อกับเซิร์ฟเวอร์ใดก็ตามที่กำหนดโดยระเบียน DNS MX ที่เหมาะสมbar.comและไม่มีข้อกำหนดสำหรับเซิร์ฟเวอร์ท้องถิ่นที่จะทำงานเพื่อให้สามารถดำเนินการได้

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

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

nslookup
set type=mx
bar.com
exit

telnet MXServer 25 (where MXServer is one of the results returned above and 25 is the port number for SMTP servers)

อ่านสิ่งนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการส่งอีเมลผ่าน telnet - เป็นเครื่องมือดีบั๊ก


ในขณะที่คำตอบของคุณได้รับคะแนนสูงสุด แต่มันผิด Mac จะวาง Postfix เพื่อรับอีเมลและปิดโดยอัตโนมัติตามที่ @zigg แนะนำไว้ข้างต้น ขอบคุณสำหรับความพยายามของคุณ
โยคะ

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

@stuffe กล่าวว่า "มี daemons หรือเซิร์ฟเวอร์ SMTP เพื่อรับอีเมลไม่ใช่ส่ง" ฉันต้องขอแตกต่าง เช่นนี้เป็นความคิดเห็นฉันจะอ้างจาก Wikipedia: "แอปพลิเคชันเมลไคลเอ็นต์ระดับผู้ใช้มักใช้ SMTP สำหรับส่งข้อความเท่านั้น"
Seamus

1

ฉันคิดว่าmailใช้ sendmail ในเครื่องเพื่อส่งจดหมายเสมอ ที่OSX sendmail คือ postfix และมันถูกใช้อย่างแน่นอน

Received: by [Your-Mac] (Postfix, from userid ...คุณสามารถตรวจสอบส่วนหัวจดหมาย

อย่างไรก็ตามมันไม่ควรใช้mail(หรือดีกว่าpostfix) เช่นนี้ แนวทางปฏิบัติที่ดีที่สุดคือการใช้Smart Hostสำหรับ Postfix ในพื้นที่ของคุณเพื่อหลีกเลี่ยงข้อ จำกัด ไฟร์วอลล์ที่ใช้บ่อย

คุณสามารถหาวิธีแก้ไขได้ที่การตั้งค่าโฮสต์ SMTP สมาร์ทสำหรับ Postfix ใน Snow Leopardซึ่งใช้ได้กับฉัน (เช่น Lion, Mountain Lion)


จากส่วนหัวฉันพบ ... ได้รับ: โดย 10.194.242.101 ด้วย SMTP id xxx; ... ได้รับ X: โดย 10.68.92.196 ด้วย SMTP id yyy; ... แต่ IP ภายในของฉันคือ 192.168.xx
โยคะ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.