เช็กลิสต์สำหรับการส่งและการตรวจสอบการนำส่งเมลให้สำเร็จ
ซอฟต์แวร์ต่อไปนี้จำเป็นสำหรับการตรวจสอบเพิ่มเติม:
-
ยูทิลิตี host
- Debian/Ubuntu:
apt-get install bind9-host - CentOS:
yum install bind9-host
- Debian/Ubuntu:
-
ยูทิลิตี Telnet
- Debian/Ubuntu:
apt-get install telnet - CentOS:
yum install telnet
- Debian/Ubuntu:
เรคคอร์ด MX
เรคคอร์ด MX เป็นเรคคอร์ด DNS ชนิดหนึ่งที่ออกแบบมาเพื่อระบุเมลเซิร์ฟเวอร์ที่ใช้โปรโตคอล SMTP เรคคอร์ดนี้มีหน้าที่กำหนดเซิร์ฟเวอร์ที่อีเมลต้องถูกส่งไปโดยเมลเอเจนต์ของผู้ส่ง ในหนึ่งโดเมนสามารถมีเรคคอร์ดหลายประเภทที่มีลำดับความสำคัญแตกต่างกันได้
คุณสามารถตรวจสอบได้ว่าเมลทำงานภายในเครื่องหรือใช้เมลเซิร์ฟเวอร์ของบุคคลที่สามโดยใช้คำสั่ง host:
host -t MX example.com
เมื่อทำงานกับเมลเซิร์ฟเวอร์ภายในเครื่อง เอาต์พุตจะแสดงดังนี้:
อีเมลของ example.com ถูกจัดการโดย 10 mail.example.com.
ควรกล่าวถึงว่าเรคคอร์ด mail.example.com อาจชี้ไปยังเซิร์ฟเวอร์อื่นได้เช่นกัน นอกจากนี้ จำเป็นต้องทราบว่า mail.example.com ต้องเป็นเรคคอร์ด A ที่มีอยู่จริงและชี้ไปยังเซิร์ฟเวอร์ที่คุณใช้ส่งเมล
คุณยังสามารถรันคำสั่งเหล่านี้เพื่อตรวจสอบได้:
host example.com
host mail.example.com
และเปรียบเทียบ IP address ที่โดเมนหลัก ในกรณีนี้คือ example.com และ mail.example.com ชี้ไปถึง
ต้องมีการตั้งค่าเรคคอร์ด MX เพื่อให้เมลเซิร์ฟเวอร์สามารถรับอีเมลของคุณได้
ตัวอย่างเรคคอร์ด MX:
Name: example.com.
Type: MX
Value: mail.example.com.
Priority: 10
ลายเซ็น DKIM
ด้วยความช่วยเหลือของ FASTPANEL® สามารถรับลายเซ็น DKIM ได้ใน เมนูจัดการ → ส่วน "Mail" โดยคลิก "DKIM" ตรงหน้าโดเมนเมลที่ต้องการ

ในส่วนของ DNS ต้องเพิ ่มเรคคอร์ดดังนี้:
Name: dkim._domainkey
Type: TXT
Value: v=DKIM1; k=rsa; p=public_key
นี่คือตัวอย่างของเรคคอร์ด DKIM ที่ถูกต้อง
dkim._domainkey TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpbBQ0T2xO3/SwziunIC/IFbsxBRub6WXiu8Kc2w7uB4GVw+SAB5wSEslDJbFXQRbdV9i/Duu8EQ9xik8dbqdLVyP4iAtw34g4j6QWKcfocgK4hEkwlPFff1dzUlNQONh2riNE5KVJXuWcizm8hub7nPnl36e7OnxiL0qIU7tT1QIDAQAB
ข้อมูลเพิ่มเติมเกี่ยวกับ DKIM ดูได้ที่ https://wikipedia.org/wiki/DomainKeys_Identified_Mail
เรคคอร์ด SPF
สามารถตรวจสอบการมีอยู่ของเรคคอร์ด SPF ได้โดยรันคำสั่ง host ในกรณีนี้ คำสั่งจะมีลักษณะดังนี้:
host -t TXT example.com
โดยจะได้เอาต์พุตล ักษณะดังนี้:
example.com ข้อความอธิบาย "v=spf1 ip4:ipv4_of_your_server ip6:ipv6_of_your_server a mx ~all"
โปรดทราบว่าอาจไม่มี ipv6 อยู่ในรายการนี้ ในกรณีนี้ ลายเซ็น SPF จะมีลักษณะดังนี้:
example.com ข้อความอธิบาย "v=spf1 ip4:ipv4_of_your_server a mx ~all"
จำเป็นต้องชี้ให้เห็นว่าจะต้องมีเรคคอร์ด SFP เพียงหนึ่งรายการเท่านั้น
ในส่วนของ DNS ควรเพิ่มเรคคอร์ดดังนี้:
Name: example.com.
Type: TXT
Value:
v=spf1 ip4:ipv4_of_your_server ip6:ipv6_of_your_server a mx ~all
หรือ (หากไม่ได้ใช้ ipv6)
v=spf1 ip4:ipv4_of_your_server a mx ~all
ตัวอย่างเช่น:
example.com TXT v=spf1 ip4:1.2.3.4 a mx ~all
ข้อมูลเพิ่มเติมเกี่ยวกับ SPF ดูได้ที่ https://wikipedia.org/wiki/Sender_Policy_Framework
เรคคอร์ด DMARC
ในกรณีส่วนใหญ่ ค่าเรคคอร์ด DMARC จะเหมือนกัน
ในส่วนของ DNS ต้องเพิ่มเรคคอร์ดดังนี้:
Name: _dmarc
Type: TXT
Value: v=DMARC1; p=none
ตัวอย่างเช่น:
_dmarc.example.com. TXT v=DMARC1; p=none
ข้อมูลเพิ่มเติมเกี่ยวกับ DMARC ดูได้ที่ https://wikipedia.org/wiki/DMARC
เรคคอร์ด PTR และ hostname ของเซิร์ฟเวอร์
เรคคอร์ด PTR คือเรคคอร์ด DNS แบบย้อนกลับที่แปลง IP address เป็นชื่อ วัตถุประสงค์หลักของเรคคอร์ดนี้สำหรับเมลเซิร์ฟเวอร์คือการลดสแปมส่วนใหญ่ เรคคอร์ดนี้ช่วยให้สามารถระบุชื่อของโฮสต์ที่อีเมลถูกส่งมาจากได้ โดยทั่วไป เรคคอร์ด PTR มักมีชื่อโดเมนที่ใช้งานอยู่บนเซิร์ฟเวอร์
เรคคอร์ด PTR เชื่อมโยง ip-address กับชื่อโฮสต์ หากระบุเรคคอร์ด PTR ไม่ถูกต้อง อีเมลของคุณจะถูกปฏิเสธและจะไม่ถึงผู้รับ
ควรกำหนด hostname เป็นชื่อของโดเมนจริงที่ชี้ไปยังเซิร์ฟเวอร์ และ PTR ควรชี้ไปยังโดเมนนั้น ซึ่งในทางกลับกันก็ชี้ไปยังเซิร์ฟเวอร์
ตัวอย่างเช่น คุณมีโดเมน example.com อยู่บนเซิร์ฟเวอร์ของคุณ
โดยรันคำสั่ง:
host example.com
คุณจะได้รับเอาต์พุต:
example.com มีที่อยู่ 1.2.3.4
อีเมลของ example.com ถูกจัดการโดย 10 mail.example.com.
เพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้น แนะนำให้ตั้งค่า hostname และเรคคอร์ด PTR เป็นซับโดเมนระดับที่สองที่มีอยู่จริง เช่น mail.example.com
ความพร้อมใช้งานของพอร์ต SMTP
ผู้ให้บริการโฮสติ้งบางรายปิดกั้นความเป็นไปได้ในการใช้พอร์ตที่ใช้สำหรับส่งหรือรับเมล พอร์ตสำหรับบริการเมลอาจเป็น 25, 587, 465, 143 และ 993
หนึ่งในวิธีที่ง่ายที่สุดในการตรวจสอบความพร้อมใช้งานของพอร์ตเหล่านี้คือการใช้คำสั่ง telnet
วิธีตรวจสอบการเชื่อมต่อขาเข้าจากเซิร์ฟเวอร์ของบุคคลที่สาม
รันคำสั่ง:
telnet ip_adress port
ตัวอย่างเช่น หากคุณพยายาม telnet ไปยังพอร์ต 25 ที่ 1.2.3.4 คำสั่งที่ต้องรันคือ:
telnet 1.2.3.4 25
หากเชื่อมต่อสำเร็จ คุณจะเห็นเอาต์พุตลักษณะดังนี้:
กำลังลอง 1.2.3.4...
เชื่อมต่อกับ 1.2.3.4 แล้ว
อักขระสำหรับออกคือ '^]'.
หากการเชื่อมต่อล้มเหลว เอาต์พุตจะมีลักษณะดังนี้:
กำลังเชื่อมต่อไปยัง 1.2.3.4 ...
ไม่สามารถเปิดการเชื่อมต่อไปยังโฮสต์บนพอร์ต some_port ได้: การเชื่อมต่อล้มเหลว
หรือ:
telnet: ไม่สามารถเชื่อมต่อไปยังโฮสต์ระยะไกลได้: การเชื่อมต่อหมดเวลา
สำหรับการเชื่อมต่อขาออก
จากเซิร์ฟเวอร์ของคุณ ให้รันคำสั่ง:
telnet smtp.gmail.com 25
หากเชื่อมต่อสำเร็จ คุณจะเห็นเอาต์พุตลักษณะดังนี้:
กำลังลอง 2a00:1450:4010:c0b::6c...
เชื่อมต่อกับ smtp.gmail.com แล้ว
อักขระสำหรับออกคือ '^]'.
220 smtp.gmail.com ESMTP j6-20020ac25506000000b004b53eb60e3csm1066162lfk.256 - gsmtp
โปรดทราบว่าหากคุณใช้คลาวด์โฮสติ้งและใช้พอร์ต 25 สำหรับเซิร์ฟเวอร์ SMTP ของคุณ มีความเป็นไปได้สูงว่าผู้ให้บริการโฮสติ้งของคุณจะบล็อกการเชื่อมต่อขาออกบนพอร์ต 25 โดยค่าเริ่มต้น ด้านล่างนี้คุณสามารถดูลิงก์พร้อมคำแนะนำในการแก้ปัญหานี้ได้:
- AWS: ฉันจะยกเลิกข้อจำกัดของพอร์ต 25 จากอินสแตนซ์ Amazon EC2 หรือฟังก์ชัน AWS Lambda ของฉันได้อย่างไร?
- Azure: แก้ไขปัญหาการเชื่อมต่อ SMTP ขาออกใน Azure
- GCP: การส่งอีเมลจากอินสแตนซ์
- DigitalOcean: เหตุใด SMTP จึงถูกบล็อก?
นอกจากการบล็อกพอร์ตโดยผู้ให้บริการโฮสติ้งของคุณแล้ว คุณยังต้องตรวจสอบด้วยว่าพอร์ตบนเซิร์ฟเวอร์ของคุณถูกปิดหรือไม่ ยกตัวอย่างเช่น iptables ซึ่งทำหน้าที่เป็นไฟร์วอลล์ โดยใช้แผงควบคุม FASTPANEL คำสั่งสำหรับตรวจสอบว่ามีกฎสำหรับพอร์ตที่กำหนดหรือไม่ ในกรณีนี้คือ 25 คือ:
iptables-save | grep 25
หากไม่มี rule สำหรับพอร์ตที่คุณต้องการตรวจสอบ จะไม่มีข้อมูลใดแสดงขึ้น มา หากคุณเห็นว่ามี rule ที่บล็อกพอร์ตของบริการเมล คุณต้องลบ rule นี้ด้วยคำสั่ง:
iptables -D rule chain
ตัวอย่างเช่น คุณได้รันคำสั่งและพบข้อมูลดังต่อไปนี้:
iptables-save | grep 25
-A INPUT -p tcp -m tcp --dport 25 -j DROP
กฎนี้ไม่อนุญาตให้เข้าถึงเซิร์ฟเวอร์ของคุณผ่านพอร์ต 25 ซึ่งจะทำให้ไม่สามารถส่งอีเมลได้
หากต้องการลบ rule ให้ใช้คำสั่ง:
iptables -D INPUT -p tcp -m tcp --dport 25 -j DROP
ตัวอย่างคำสั่งนี้ช่วยให้คุณตรวจสอบทุกพอร์ตที่ใช้สำหรับการส่งเมลได้
อิทธิพลของ IPv6 ต่อการส่งเมล
หากคุณจำเป็นต้องใช้ ipv6 สำหรับบริการเมลของคุณ สิ่งแรกที่ต้องทำคือ ตรวจสอบว่ามีเรคคอร์ด PTR สำหรับ ipv6 หรือไม่ และบริการเมลกำลังรับฟังบน ipv6 ในบางพอร์ตหรือไม่
คุณสามารถดำเนินการตรวจสอบได้โดยใช้คำสั่ง:
netstat -nltpp | grep tcp6
ผลลัพธ์ของเอาต์พุตจากคำสั่งนี้จะเป็นรายการของบริการทั้งหมดที่ใช้ ipv6 ซึ่งคุณสามารถตรวจสอบได้ทันทีว่าบริการเมลของคุณใช้ที่อยู่นี้หรือไม่ น่าเสียดายที่ในปัจจุบัน การใช้ ipv6 อาจไม่ทำงานอย่างถูกต้องแม้ว่าคุณจะตั้งค่าทุกอย่างถูกต้องแล้วก็ตาม
หากคุณตรวจสอบ log ของบริการเมลแล้วพบว่าข้อผิดพลาดเกี่ยวข้องกับ ipv6 และการกำหนดค่าทั้งหมดถูกต้อง คุณสามารถปิดใช้งาน ipv6 สำหรับบริการเมลได้
ในตัวอย่างของ exim4 การปิดใช้งาน ipv6 มีลักษณะดังนี้:
-
ตรวจสอบว่ามีการใช้ที่อยู่ ipv6 สำหรับบริการหรือไม่ด้วยคำสั่ง
netstat -nltp | grep exim
-
ในไฟล์คอนฟิกูเรชัน
/etc/exim4/exim4.conf.templateต้องเพิ่มบรรทัดต่อไปนี้ไว้บนสุดของไฟล์:disable_ipv6=true
-
บันทึกการเปลี่ยนแปลงในไฟล์ จากนั้นรีสตาร์ตบริการด้วยคำสั่งเช่น:
systemctl restart exim4 -
รันคำสั่ง:
netstat -nltp | grep eximเพื่อตรวจสอบว่าบริการไม่อยู่ในรายการอีกต่อไป
ตรวจสอบการส่งเมลโดยใช้บริการของบุคคลที่สาม
หลังจากที่คุณตรวจสอบรายการทั้งหมดข้างต้นแล้ว คุณสามารถตรวจสอบการส่งเมลจากเซิร์ฟเวอร์ของคุณโดยใช้ทรัพยากรของบุคคลที่สามได้
หนึ่งในบริการที่สะดวกและให้ข้อมูลมากที่สุดคือ https://www.mail-tester.com
เมื่อใช้บริการนี้ คุณจะสามารถตรวจสอบคะแนนปัจจุบันของอีเมล รับข้อมูลว่าชุดข้อมูลที่กล่าวถึงข้างต้นถูกต้องหรือไม่ รวมถึงรับคำแนะนำเพื่อปรับปรุงคะแนนได้
ในการดำเนินก ารนี้ เพียงส่งอีเมลไปยังที่อยู่ที่แสดงอยู่บนเว็บไซต์ จากนั้นคลิก "Then check your score"
