ค้นหาเว็บไซต์

การตั้งค่าบริการอีเมล (SMTP, Imap และ Imaps) และการจำกัดการเข้าถึง SMTP - ตอนที่ 7


LFCE (Linux Foundation Certified Engineer) เป็นมืออาชีพที่ผ่านการฝึกอบรมซึ่งมีทักษะในการติดตั้ง จัดการ และแก้ไขปัญหาบริการเครือข่ายในระบบ Linux และรับผิดชอบด้าน การออกแบบ การใช้งาน และการบำรุงรักษาสถาปัตยกรรมระบบและการดูแลระบบผู้ใช้อย่างต่อเนื่อง

ขอแนะนำโปรแกรมการรับรอง Linux Foundation

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

ความต้องการ

  1. ติดตั้ง Postfix Mail Server และ Dovecot – ตอนที่ 1

ในโพสต์นี้ ฉันจะแสดงวิธีกำหนดค่าเมลเซิร์ฟเวอร์ของคุณ และวิธีดำเนินการต่อไปนี้:

  1. กำหนดค่านามแฝงอีเมล
  2. กำหนดค่าบริการ IMAP และ IMAPS
  3. กำหนดค่าบริการ smtp
  4. จำกัดการเข้าถึงเซิร์ฟเวอร์ smtp

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

แต่ก่อนอื่น เรามาเริ่มด้วยคำจำกัดความบางประการกันก่อน

องค์ประกอบของกระบวนการส่ง การขนส่ง และการจัดส่งทางไปรษณีย์

รูปภาพต่อไปนี้แสดงกระบวนการรับส่งอีเมลโดยเริ่มจากผู้ส่งจนกระทั่งข้อความไปถึงกล่องจดหมายของผู้รับ:

เพื่อให้สิ่งนี้เป็นไปได้ มีหลายสิ่งที่เกิดขึ้นเบื้องหลัง เพื่อให้ข้อความอีเมลถูกส่งจากแอปพลิเคชันไคลเอ็นต์ (เช่น Thunderbird, Outlook หรือบริการเว็บเมล เช่น Gmail หรือ Yahoo! Mail) ไปยังเซิร์ฟเวอร์อีเมลของเขา/เธอ และจากที่นั่นไปยังเซิร์ฟเวอร์ปลายทางและสุดท้ายไปยังผู้รับที่ต้องการ จะต้องให้บริการ SMTP (Simple Mail Transfer Protocol) ในแต่ละเซิร์ฟเวอร์

เมื่อพูดถึงบริการอีเมล คุณจะพบคำต่อไปนี้ที่กล่าวถึงบ่อยมาก:

ตัวแทนขนส่งข้อความ – MTA

MTA (ย่อมาจาก Mail หรือ Message Transport Agent) หรือที่รู้จักในชื่อ Mail Relay คือซอฟต์แวร์ที่มีหน้าที่ถ่ายโอนข้อความอีเมลจากเซิร์ฟเวอร์ ให้กับลูกค้า (และในทางกลับกัน เช่นกัน) ในชุดนี้ Postfix ทำหน้าที่เป็น MTA ของเรา

ตัวแทนผู้ใช้เมล – MUA

MUA หรือ Mail User Agent เป็นโปรแกรมคอมพิวเตอร์ที่ใช้ในการเข้าถึงและจัดการกล่องจดหมายอีเมลของผู้ใช้ ตัวอย่างของ MUA รวมถึงแต่ไม่จำกัดเพียง Thunderbird, Outlook และอินเทอร์เฟซเว็บเมล เช่น Gmail, Outlook.com เป็นต้น ในชุดนี้ เราจะใช้ Thunderbird ในตัวอย่างของเรา

ตัวแทนส่งไปรษณีย์

MDA (ย่อมาจาก ข้อความ หรือ Mail Delivery Agent) เป็นส่วนซอฟต์แวร์ที่ส่งข้อความอีเมลไปยังกล่องจดหมายของผู้ใช้จริงๆ ในบทช่วยสอนนี้ เราจะใช้ Dovecot เป็น MDA ของเรา Dovecot จะจัดการการรับรองความถูกต้องของผู้ใช้ด้วย

โปรโตคอลการถ่ายโอนจดหมายอย่างง่าย – SMTP

เพื่อให้ส่วนประกอบเหล่านี้สามารถ “พูดคุย ” ซึ่งกันและกันได้ องค์ประกอบเหล่านั้นจะต้อง “พูด ” “ภาษา ” เดียวกัน (หรือโปรโตคอล ) ซึ่งก็คือ SMTP (Simple Mail Transfer Protocol) ตามที่กำหนดไว้ใน RFC 2821 เป็นไปได้มากว่าคุณจะต้องอ้างอิงถึง RFC นั้นขณะตั้งค่าสภาพแวดล้อมเซิร์ฟเวอร์อีเมลของคุณ

โปรโตคอลอื่นๆ ที่เราต้องคำนึงถึงคือ IMAP4 (Internet Message Access Protocol) ซึ่งช่วยให้จัดการข้อความอีเมลได้โดยตรงบนเซิร์ฟเวอร์โดยไม่ต้องดาวน์โหลดลงในฮาร์ดไดรฟ์ของลูกค้าของเรา และ POP3 (Post Office Protocol) ซึ่งอนุญาตให้ดาวน์โหลดข้อความและโฟลเดอร์ไปยังคอมพิวเตอร์ของผู้ใช้

สภาพแวดล้อมการทดสอบของเรา

สภาพแวดล้อมการทดสอบของเรามีดังนี้:

การตั้งค่าเมลเซิร์ฟเวอร์
Mail Server OS	: 	Debian Wheezy 7.5 
IP Address	:	192.168.0.15
Local Domain	:	example.com.ar
User Aliases	:	[email  is aliased to [email  and [email 
การตั้งค่าเครื่องไคลเอนต์
Mail Client OS	: 	Ubuntu 12.04
IP Address	:	192.168.0.103

สำหรับ ไคลเอนต์ ของเรา เราได้ตั้งค่าการแก้ไข DNS เบื้องต้นโดยเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ /etc/hosts

192.168.0.15 example.com.ar mailserver

การเพิ่มนามแฝงอีเมล

ตามค่าเริ่มต้น ข้อความที่ส่งถึงผู้ใช้เฉพาะควรส่งถึงผู้ใช้รายนั้นเท่านั้น อย่างไรก็ตาม หากคุณต้องการส่งไปยังกลุ่มผู้ใช้ด้วย หรือผู้ใช้รายอื่น คุณสามารถสร้างอีเมลแทนหรือใช้รายการใดรายการหนึ่งที่มีอยู่ใน /etc/postfix/aliases ตามไวยากรณ์นี้:

user1: user1, user2

ดังนั้น อีเมลที่ส่งถึง user1 ก็จะถูกส่งไปยัง user2 ด้วย โปรดทราบว่าหากคุณละเว้นคำว่า user1 หลังเครื่องหมายทวิภาค เช่นใน

user1: user2

ข้อความที่ส่งถึง user1 จะถูกส่งไปยัง user2 เท่านั้น ไม่ใช่ user1

ในตัวอย่างข้างต้น user1 และ user2 ควรมีอยู่แล้วในระบบ คุณอาจต้องการอ้างอิงถึงส่วนที่ 8 ของซีรีส์ LFCS หากคุณต้องการรีเฟรชหน่วยความจำก่อนที่จะเพิ่มผู้ใช้ใหม่

  1. วิธีเพิ่มและจัดการผู้ใช้/กลุ่มใน Linux
  2. 15 คำสั่งเพื่อเพิ่มผู้ใช้ใน Linux

ในกรณีเฉพาะของเรา เราจะใช้นามแฝงต่อไปนี้ตามที่อธิบายไว้ก่อนหน้านี้ (เพิ่มบรรทัดต่อไปนี้ใน /etc/aliases)

sysadmin: gacanepa, jdoe

และเรียกใช้คำสั่งต่อไปนี้เพื่อสร้างหรือรีเฟรชตารางค้นหานามแฝง

postalias /etc/postfix/aliases

เพื่อให้ข้อความที่ส่งถึง [ป้องกันอีเมล] ถูกส่งไปยังกล่องจดหมายของผู้ใช้ที่ระบุไว้ข้างต้น

การกำหนดค่า Postfix – บริการ SMTP

ไฟล์การกำหนดค่าหลักสำหรับ Postfix คือ /etc/postfix/main.cf คุณจะต้องตั้งค่าพารามิเตอร์เพียงไม่กี่ตัวก่อนจึงจะสามารถใช้บริการอีเมลได้ อย่างไรก็ตาม คุณควรทำความคุ้นเคยกับพารามิเตอร์การกำหนดค่าแบบเต็ม (ซึ่งสามารถแสดงรายการด้วย man 5 postconf) เพื่อตั้งค่าเซิร์ฟเวอร์อีเมลที่ปลอดภัยและปรับแต่งได้อย่างเต็มที่

หมายเหตุ: บทช่วยสอนนี้มีไว้เพื่อให้คุณเริ่มต้นกระบวนการนั้นเท่านั้น และไม่ได้แสดงถึงคำแนะนำที่ครอบคลุมเกี่ยวกับบริการอีเมลกับ Linux

เปิดไฟล์ /etc/postfix/main.cf ด้วยโปรแกรมแก้ไขที่คุณเลือก และดำเนินการเปลี่ยนแปลงตามที่อธิบายไว้

vi /etc/postfix/main.cf

1. myorigin ระบุโดเมนที่ปรากฏในข้อความที่ส่งจากเซิร์ฟเวอร์ คุณอาจเห็นไฟล์ /etc/mailname ที่ใช้กับพารามิเตอร์นี้ อย่าลังเลที่จะแก้ไขหากจำเป็น

myorigin = /etc/mailname

หากใช้ค่าข้างต้น อีเมลจะถูกส่งเป็น [email โดยที่ผู้ใช้คือผู้ใช้ที่ส่งข้อความ

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

โดยที่ไฟล์ /etc/postfix/transport กำหนดความสัมพันธ์ระหว่างโดเมนและเซิร์ฟเวอร์ถัดไปที่ควรส่งต่อข้อความเมล ในกรณีของเรา เนื่องจากเราจะส่งข้อความไปยังเครือข่ายท้องถิ่นของเราเท่านั้น (ดังนั้นจึงข้ามการแก้ไข DNS ภายนอก) การกำหนดค่าต่อไปนี้จึงเพียงพอแล้ว

example.com.ar    local:
.example.com.ar    local:

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

postmap /etc/postfix/transport

คุณจะต้องจำไว้ว่าให้สร้างตารางนี้ขึ้นใหม่หากคุณเพิ่มรายการลงในไฟล์ข้อความที่เกี่ยวข้อง

3. mynetworks กำหนดเครือข่ายที่ได้รับอนุญาต Postfix จะส่งต่อข้อความจาก ค่าเริ่มต้น ซับเน็ต จะบอก Postfix ให้ส่งต่อเมลจากไคลเอนต์ SMTP ในเครือข่ายย่อย IP เดียวกันกับเครื่องท้องถิ่นเท่านั้น

mynetworks = subnet

4. relay_domains ระบุปลายทางที่ควรส่งอีเมลไป เราจะปล่อยให้ค่าเริ่มต้นไม่ถูกแตะต้อง ซึ่งชี้ไปที่ปลายทางของฉัน โปรดจำไว้ว่าเรากำลังตั้งค่าเมลเซิร์ฟเวอร์สำหรับ LAN ของเรา

relay_domains = $mydestination

โปรดทราบว่าคุณสามารถใช้ $mydestination แทนการแสดงเนื้อหาจริงได้

5. inet_interfaces กำหนดอินเทอร์เฟซเครือข่ายที่บริการอีเมลควรรับฟัง ค่าเริ่มต้นทั้งหมดจะบอก Postfix ให้ใช้อินเทอร์เฟซเครือข่ายทั้งหมด

inet_interfaces = all

6. สุดท้าย mailbox_size_limit และ message_size_limit จะถูกใช้เพื่อกำหนดขนาดของกล่องจดหมายของผู้ใช้แต่ละรายและขนาดสูงสุดที่อนุญาตของแต่ละข้อความ ตามลำดับ เป็นไบต์

mailbox_size_limit = 51200000
message_size_limit = 5120000

การจำกัดการเข้าถึงเซิร์ฟเวอร์ SMTP

เซิร์ฟเวอร์ Postfix SMTP สามารถใช้ข้อจำกัดบางประการกับคำขอเชื่อมต่อไคลเอ็นต์แต่ละรายการ ไม่ใช่ว่าไคลเอ็นต์ทั้งหมดจะได้รับอนุญาตให้ระบุตัวเองกับเซิร์ฟเวอร์อีเมลโดยใช้คำสั่ง smtp HELO และแน่นอนว่าไม่ใช่ทั้งหมดควรได้รับสิทธิ์ในการเข้าถึงการส่งหรือรับข้อความ

หากต้องการใช้ข้อจำกัดเหล่านี้ เราจะใช้คำสั่งต่อไปนี้ในไฟล์ main.cf แม้ว่าจะอธิบายได้ด้วยตนเอง แต่ก็มีการเพิ่มความคิดเห็นเพื่อวัตถุประสงค์ในการชี้แจง

Require that a remote SMTP client introduces itself with the HELO or EHLO command before sending the MAIL command or other commands that require EHLO negotiation.
smtpd_helo_required = yes

Permit the request when the client IP address matches any network or network address listed in $mynetworks
Reject the request when the client HELO and EHLO command has a bad hostname syntax
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_helo_hostname

Reject the request when Postfix does not represent the final destination for the sender address
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain

Reject the request unless 1) Postfix is acting as mail forwarder or 2) is the final destination
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination

หน้า postconf พารามิเตอร์การกำหนดค่า Postfix อาจมีประโยชน์ในการสำรวจตัวเลือกที่มีอยู่เพิ่มเติม

การกำหนดค่า Dovecot

หลังจากติดตั้ง dovecot ทันที ระบบจะรองรับโปรโตคอล POP3 และ IMAP ทันทีที่แกะกล่อง พร้อมด้วยเวอร์ชันที่ปลอดภัย POP3S และ IMAPS ตามลำดับ

เพิ่มบรรทัดต่อไปนี้ในไฟล์ /etc/dovecot/conf.d/10-mail.conf

%u represents the user account that logs in
Mailboxes are in mbox format
mail_location = mbox:~/mail:INBOX=/var/mail/%u
Directory owned by the mail group and the directory set to group-writable (mode=0770, group=mail)
You may need to change this setting if postfix is running a different user / group on your system
mail_privileged_group = mail

หากคุณตรวจสอบโฮมไดเร็กตอรี่ของคุณ คุณจะสังเกตเห็นว่ามีไดเร็กทอรีย่อยของเมลที่มีเนื้อหาดังต่อไปนี้

นอกจากนี้ โปรดทราบว่าไฟล์ /var/mail/%u เป็นที่จัดเก็บอีเมลของผู้ใช้ไว้ในระบบส่วนใหญ่

เพิ่มคำสั่งต่อไปนี้ใน /etc/dovecot/dovecot.conf (โปรดทราบว่า imap และ pop3 หมายถึง imap และ pop3s เช่นกัน)

protocols = imap pop3

และตรวจสอบให้แน่ใจว่า /etc/conf.d/10-ssl.conf มีบรรทัดต่อไปนี้ (มิฉะนั้น ให้เพิ่ม)

ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem

ตอนนี้เรามารีสตาร์ท Dovecot และตรวจสอบว่ามันฟังบนพอร์ตที่เกี่ยวข้องกับ imap, imap, pop3 และ pop3s

netstat -npltu | grep dovecot

การตั้งค่าไคลเอนต์เมลและการส่ง/รับเมล

บนคอมพิวเตอร์ไคลเอนต์ของเรา เราจะเปิด Thunderbird และคลิกที่ ไฟล์ใหม่บัญชีเมลที่มีอยู่ เราจะได้รับแจ้งให้ป้อนชื่อบัญชีและที่อยู่อีเมลที่เกี่ยวข้อง พร้อมด้วยรหัสผ่าน เมื่อเราคลิกดำเนินการต่อ Thunderbird จะพยายามเชื่อมต่อกับเซิร์ฟเวอร์อีเมลเพื่อตรวจสอบการตั้งค่า

ทำซ้ำขั้นตอนข้างต้นสำหรับบัญชีถัดไป ([email ) และกล่องจดหมายสองกล่องต่อไปนี้ควรปรากฏในบานหน้าต่างด้านซ้ายของ Thunderbird

บนเซิร์ฟเวอร์ของเรา เราจะเขียนข้อความอีเมลถึง sysadmin ซึ่งมีนามแฝงว่า jdoe และ gacanepa

ดูเหมือนว่าบันทึกอีเมล (/var/log/mail.log) จะระบุว่าอีเมลที่ส่งไปยัง sysadmin ได้รับการส่งต่อไปที่ [email และ [ป้องกันอีเมล] ดังที่เห็นในภาพต่อไปนี้

เราสามารถตรวจสอบได้ว่าอีเมลถูกส่งไปยังลูกค้าของเราจริงหรือไม่ โดยที่บัญชี IMAP ได้รับการกำหนดค่าใน Thunderbird

สุดท้ายนี้ เรามาลองส่งข้อความจาก [email  ไปยัง [email 

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

บทสรุป

ในโพสต์นี้ เราได้อธิบายวิธีการตั้งค่าเซิร์ฟเวอร์อีเมล IMAP สำหรับเครือข่ายท้องถิ่นของคุณ และวิธีการจำกัดการเข้าถึงเซิร์ฟเวอร์ SMTP หากคุณประสบปัญหาขณะใช้การตั้งค่าที่คล้ายกันในสภาพแวดล้อมการทดสอบของคุณ คุณจะต้องตรวจสอบเอกสารออนไลน์ของ Postfix และ Dovecot (โดยเฉพาะหน้าเกี่ยวกับไฟล์การกำหนดค่าหลัก /etc/postfix/main.cf และ/etc/dovecot/dovecot.conf ตามลำดับ) แต่ไม่ว่าในกรณีใด อย่าลังเลที่จะติดต่อฉันโดยใช้แบบฟอร์มแสดงความคิดเห็นด้านล่าง ฉันยินดีที่จะช่วยคุณมากกว่า