ข้ามไปยังเนื้อหาหลัก

เช็กลิสต์สำหรับการส่งและการตรวจสอบการนำส่งเมลให้สำเร็จ

ซอฟต์แวร์ต่อไปนี้จำเป็นสำหรับการตรวจสอบเพิ่มเติม:

  • ยูทิลิตี host

    • Debian/Ubuntu: apt-get install bind9-host
    • CentOS: yum install bind9-host
  • ยูทิลิตี Telnet

    • Debian/Ubuntu: apt-get install telnet
    • CentOS: yum install telnet

เรคคอร์ด 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" ตรงหน้าโดเมนเมลที่ต้องการ

เปิ��ดใช้งาน DKIM ใน FASTPANEL

ในส่วนของ 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 โดยค่าเริ่มต้น ด้านล่างนี้คุณสามารถดูลิงก์พร้อมคำแนะนำในการแก้ปัญหานี้ได้:

นอกจากการบล็อกพอร์ตโดยผู้ให้บริการโฮสติ้งของคุณแล้ว คุณยังต้องตรวจสอบด้วยว่าพอร์ตบนเซิร์ฟเวอร์ของคุณถูกปิดหรือไม่ ยกตัวอย่างเช่น 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 มีลักษณะดังนี้:

  1. ตรวจสอบว่ามีการใช้ที่อยู่ ipv6 สำหรับบริการหรือไม่ด้วยคำสั่ง

    netstat -nltp | grep exim

    ตรวจสอบว่ามีการใช้ที่อยู่ ipv6 โดย exim หรือไม่

  2. ในไฟล์คอนฟิกูเรชัน /etc/exim4/exim4.conf.template ต้องเพิ่มบรรทัดต่อไปนี้ไว้บนสุดของไฟล์:

    disable_ipv6=true

  3. บันทึกการเปลี่ยนแปลงในไฟล์ จากนั้นรีสตาร์ตบริการด้วยคำสั่งเช่น:

    systemctl restart exim4
  4. รันคำสั่ง:

    netstat -nltp | grep exim

    เพื่อตรวจสอบว่าบริการไม่อยู่ในรายการอีกต่อไป

    ตรวจสอบว่าปิดใช้งาน ipv6 สำหรับ exim แล้วหรือไม่

ตรวจสอบการส่งเมลโดยใช้บริการของบุคคลที่สาม

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

หนึ่งในบริการที่สะดวกและให้ข้อมูลมากที่สุดคือ https://www.mail-tester.com

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

ในการดำเนินการนี้ เพียงส่งอีเมลไปยังที่อยู่ที่แสดงอยู่บนเว็บไซต์ จากนั้นคลิก "Then check your score"

ทดสอบอีเมลของคุณด้วย mail-tester