จำเป็นต้องตั้งค่าเซิร์ฟเวอร์อีเมลก่อนที่จะสามารถใช้mail
คำสั่งlinux ได้หรือไม่
จำเป็นต้องตั้งค่าเซิร์ฟเวอร์อีเมลก่อนที่จะสามารถใช้mail
คำสั่งlinux ได้หรือไม่
คำตอบ:
ไม่คุณไม่จำเป็นต้องใช้เซิร์ฟเวอร์อีเมลในการส่งจดหมาย ฉันคุ้นเคยกับ Sendmail มากที่สุดและมีฟังก์ชั่นการจำแนก 3 ประเภทที่ตอบสนองอีเมลเป็นบริการ MDA (Mail Delivery Agent) คือ 1 และ MTA (Mail Transfer Agents) คือ 2 และ 3 คือ MUA (Mail User Agent)
คำศัพท์สับสน แต่คุณไม่ต้องการให้ MTA ทำงานตลอดเวลา MTA จะถูกเรียกทุกครั้งที่ MUA ( mail
) ต้องการ "ส่ง" เมล
เมื่อคุณเรียกใช้และคุณระบุที่อยู่ที่จะส่งจดหมายไปmail
sam@example.com
ไคลเอนต์อีเมลจะเรียก MTA ( /usr/bin/sendmail
) ซึ่งจะทำการสืบค้น DNS สำหรับโฮสต์ / โดเมนนั้น (example.com) และค้นหาว่ามีการกำหนดค่าใดสำหรับเรคคอร์ด MX MX ย่อมาจาก Mail Exchanger
คุณสามารถใช้dig
คำสั่งเพื่อดูสิ่งนี้:
$ dig gnu.org mx
; <<>> DiG 9.7.4-P1-RedHat-9.7.4-2.P1.fc14 <<>> gnu.org mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21053
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; QUESTION SECTION:
;gnu.org. IN MX
;; ANSWER SECTION:
gnu.org. 299 IN MX 10 eggs.gnu.org.
;; ADDITIONAL SECTION:
eggs.gnu.org. 299 IN A 208.118.235.92
eggs.gnu.org. 299 IN AAAA 2001:4830:134:3::10
;; Query time: 218 msec
;; SERVER: 192.168.1.8#53(192.168.1.8)
;; WHEN: Thu Oct 3 17:27:22 2013
;; MSG SIZE rcvd: 90
ดังนั้นลูกค้าจะพยายามเชื่อมต่อกับ eggs.gnu.org บนพอร์ต 25 เพื่อส่งอีเมลนี้
@puk ถามคำถามติดตามผลต่อไปนี้:
นี่เป็น DNS บนเครื่องท้องถิ่นของฉันหรือไม่
ที่ฉันตอบว่า:
@puk - มันอาจเป็นไปในลักษณะเดียวกับที่เมลเซิร์ฟเวอร์สามารถเป็นได้ แต่โดยทั่วไปแล้วไม่ใช่ ดูใน/etc/resolv.conf
ไฟล์ของคุณและเมื่อคุณเรียกใช้dig
คำสั่งคุณจะสังเกตเห็นSERVER: ...
บรรทัดที่ด้านล่าง นั่นคือเซิร์ฟเวอร์ DNS ที่ให้บริการตามคำขอของคุณ
/etc/resolv.conf
ไฟล์ของฉันมีดังต่อไปนี้:
nameserver 192.168.1.8
และแบบสอบถามเช่นนี้โดยใช้dig
:
$ dig gnu.org mx
ส่งผลให้ด้านล่าง:
;; Query time: 259 msec
;; SERVER: 192.168.1.8#53(192.168.1.8)
;; WHEN: Thu Oct 3 17:46:13 2013
;; MSG SIZE rcvd: 90
และสำหรับผู้อ่านที่ฉลาดคนหนึ่งถามว่าจะกำหนดค่านี้ได้อย่างไร คำตอบคือ/etc/nsswitch.conf
ไฟล์ บรรทัดนี้โดยเฉพาะ:
hosts: files mdns4_minimal [NOTFOUND=return] dns
ที่บอกว่าใช้ไฟล์แรก ( /etc/hosts
) mdns4_minimal
ตามด้วย นั่นคือมัลติคาสต์ DNS มันเป็นแคชของการค้นหาก่อนหน้านี้ สุดท้ายจะใช้dns
ซึ่งเป็นที่อยู่ IP ของที่nameserver
กำหนดไว้ใน/etc/resolv.conf
ไฟล์
ขึ้นอยู่กับเวอร์ชันของmail
คุณที่ใช้
ทุกรุ่นต้องใช้ MTA เพื่อส่งเมลจริง แต่บางรุ่นมีความสามารถในการใช้ SMTP เพื่อพูดคุยกับ MTA ระยะไกล ("smarthost" เช่นเซิร์ฟเวอร์อีเมลของ ISP) และบางรุ่นสามารถส่งข้อความไป/usr/sbin/sendmail
ยังเมล์ผ่านทางเท่านั้น MTA ท้องถิ่น
ในกรณีหลังเอ็มทีท้องถิ่นอาจจะเป็นเอ็มทีเต็มเปี่ยมเช่นsendmailหรือeximหรือpostfix หรือมันอาจจะเป็นเอ็มทีส่งเพียงง่ายๆเช่นnullmailerหรือssmtp หรือ mini-MTA ที่ซับซ้อนกว่าเล็กน้อยเช่นmsmtpซึ่งรองรับเมลที่รอคิวสำหรับการจัดส่งในภายหลัง
ในโลกซอฟต์แวร์ฟรีและเปิดแหล่งที่มามีสองสายพันธุ์หลักของmailx
แพคเกจ (ซึ่งมีmail
คำสั่ง) และbsd-mailx
heirloom-mailx
bsd-mailxไม่พูดถึง SMTP และสามารถส่งจดหมายได้โดยการส่งไปที่/usr/sbin/sendmail
hierloom-mailxสามารถพูดคุยกับ SMTP กับสมาร์ทโฮสต์เช่นเดียวกับวิธีการ 'ไปสู่ sendmail' แบบดั้งเดิม
ดังนั้นเพื่อตอบคำถามของคุณ "คุณต้องการเซิร์ฟเวอร์อีเมลหรือไม่" ใช่แล้ว คุณต้องมี แต่ขึ้นอยู่กับรุ่นของจดหมายที่คุณติดตั้งคุณอาจไม่ต้องติดตั้งและกำหนดค่าบนระบบของคุณเอง
IMO คุณจะดีกว่าด้วย MTA ที่น้อยที่สุดเช่นmsmtp
อาศัยสมาร์ทโฮสต์เพียงอย่างเดียวheirloom-mailx
เพราะคุณยังต้องจัดคิวเมลสำหรับการส่งในภายหลังเมื่อการเชื่อมต่ออินเทอร์เน็ตของคุณหยุดทำงานหรือสมาร์ทโฮสต์ของคุณไม่สามารถเข้าถึงได้ ด้วยคิวโลคัลmail
และcrond
โปรแกรมอื่น ๆ ก็สามารถส่งและลืมเมลใดก็ได้ หากไม่มีคิวท้องถิ่นพวกเขาจะต้องจัดการกับเงื่อนไขข้อผิดพลาดอย่างใดอย่างหนึ่งหากสมาร์ทโฮสต์ไม่พร้อมใช้งาน