ทำไมส่งอีเมลจาก DigitalOcean Droplet ไม่ได้ — และวิธีแก้ 2026
SMTP ports are blocked by default on every Droplet — here's how to work around it.
สารบัญ
ปัญหา: ส่งอีเมลจาก Droplet ไม่ออก
ผู้ใช้ DigitalOcean จำนวนมากเจอปัญหาเดียวกันคือส่งอีเมลจากเว็บไซต์หรือแอปพลิเคชันบน Droplet ไม่ได้ ทั้งที่ตั้งค่า SMTP ถูกต้องแล้ว สาเหตุไม่ได้อยู่ที่โค้ดหรือการตั้งค่าเซิร์ฟเวอร์เมล แต่เป็นเพราะ DigitalOcean บล็อกพอร์ตที่ใช้ส่งอีเมลไว้ตั้งแต่ระดับเครือข่ายของแพลตฟอร์ม
Many DigitalOcean users hit the same wall: outbound email fails even with correct SMTP settings, because the platform blocks mail ports at the network level.
- เกิดขึ้นแม้ตั้งค่า SMTP ในโค้ดถูกต้องทุกอย่างแล้ว
- ไม่ใช่ปัญหาที่ตัวเว็บแอปหรือ mail library
- เป็นนโยบายระดับแพลตฟอร์ม ใช้กับทุก Droplet ไม่มีข้อยกเว้นอัตโนมัติ
พอร์ตที่ถูกบล็อก
จากการรีวิวหลายรอบ digitalOcean บล็อกพอร์ต SMTP มาตรฐานสามพอร์ตคือ 25, 465 และ 587 บน Droplet ทุกเครื่องโดยดีฟอลต์ ครอบคลุมทั้งการเชื่อมต่อผ่าน IP ปกติและ Reserved IP ด้วย หมายความว่าต่อให้ผูก Reserved IP เข้ากับ Droplet ก็ยังโดนบล็อกอยู่ดี
- พอร์ต 25: SMTP มาตรฐานแบบไม่เข้ารหัส (ใช้ส่งเมลระหว่างเซิร์ฟเวอร์)
- พอร์ต 465: SMTP over SSL
- พอร์ต 587: SMTP submission (มักใช้กับ client ส่งเมล)
- บล็อกทุก Droplet รวมถึงที่ผูก Reserved IP ไว้ด้วย
ทำไม DigitalOcean ถึงบล็อก
เหตุผลหลักคือการป้องกันสแปมและการใช้งานในทางที่ผิด เพราะ Cloud provider ราคาย่อมเยาที่เปิดพอร์ต 25 ให้อิสระมักถูกมิจฉาชีพใช้สร้างเซิร์ฟเวอร์ส่งสแปมจำนวนมาก ซึ่งจะทำให้ IP range ทั้งหมดของผู้ให้บริการถูกขึ้นบัญชีดำ (blacklist) และกระทบผู้ใช้สุจริตทุกคนที่ใช้ IP ในช่วงเดียวกัน การบล็อกไว้ตั้งแต่ต้นจึงเป็นการป้องกันปัญหาระดับแพลตฟอร์ม
- ป้องกันไม่ให้ Droplet ถูกใช้เป็นเครื่องส่งสแปม
- ปกป้องชื่อเสียง (reputation) ของ IP range ทั้งหมดบนแพลตฟอร์ม
- ลดความเสี่ยงที่ IP ของผู้ใช้สุจริตจะติด blacklist ไปด้วย
ทำไมไม่ควรตั้งเมลเซิร์ฟเวอร์เอง
แม้จะขอปลดบล็อกพอร์ตได้สำเร็จ DigitalOcean เองก็แนะนำว่าไม่ควรรันเมลเซิร์ฟเวอร์บน Droplet เอง เพราะการดูแลเมลเซิร์ฟเวอร์ให้ปลอดภัยและไม่ถูกมองว่าเป็นสแปมเป็นงานที่ซับซ้อนและต้องดูแลต่อเนื่อง ตั้งแต่การตั้งค่า SPF/DKIM/DMARC ไปจนถึงการเฝ้าระวังชื่อเสียงของ IP ตลอดเวลา
- ต้องตั้งค่า SPF, DKIM, DMARC ให้ถูกต้องเพื่อไม่ให้เมลเข้า spam folder
- ต้องเฝ้าระวัง IP reputation ตลอดเวลา ไม่ให้หลุดไปอยู่ใน blacklist
- ใช้ทรัพยากรเซิร์ฟเวอร์และเวลาดูแลมากกว่าที่คิด
ทางเลือก: ใช้บริการ SMTP relay / Email API
ในประสบการณ์ของเรา วิธีที่ใช้กันทั่วไปในทางปฏิบัติคือเปลี่ยนไปใช้บริการส่งอีเมลของบุคคลที่สาม (Email-as-a-Service) แทนการรันเมลเซิร์ฟเวอร์เอง บริการเหล่านี้ดูแลเรื่อง IP reputation, DKIM/SPF และ deliverability ให้อยู่แล้ว เชื่อมต่อผ่าน API หรือ SMTP relay ก็ได้ ตัวอย่างผู้ให้บริการที่นิยมใช้กันในกลุ่มนักพัฒนา ได้แก่ SendGrid, Mailgun, Postmark และ Amazon SES
- SendGrid, Mailgun, Postmark, Amazon SES — ตัวอย่างที่นักพัฒนานิยมใช้
- ส่วนใหญ่มี free tier ให้ทดลองใช้สำหรับโปรเจกต์ขนาดเล็ก
- เชื่อมต่อผ่าน SMTP relay (ใช้พอร์ตของผู้ให้บริการ ไม่ใช่พอร์ต 25 ตรงๆ) หรือผ่าน API
- ดูแล deliverability, bounce handling และ analytics การเปิดอ่านให้ในตัว
วิธีติดตั้ง SMTP relay กับเว็บ/แอปบน Droplet
ขั้นตอนโดยรวมคล้ายกันไม่ว่าจะใช้ผู้ให้บริการเจ้าไหน คือสมัครบัญชี รับค่า SMTP credentials หรือ API key มา แล้วนำไปตั้งค่าในระบบส่งเมลของเว็บแอป เช่น ปลั๊กอิน WordPress, ไฟล์ .env ของ Laravel หรือ environment variable ของแอป Node.js จากนั้นทดสอบส่งเมลจริงก่อนใช้งานโปรดักชัน
- สมัครบัญชีกับผู้ให้บริการ SMTP relay ที่เลือก
- คัดลอก SMTP host/port/username/password หรือ API key มาใส่ในแอป
- ยืนยันโดเมนของคุณกับผู้ให้บริการ (เพิ่ม DNS record ตามที่แจ้ง) เพื่อผลลัพธ์ deliverability ที่ดีขึ้น
- ส่งอีเมลทดสอบก่อน deploy ขึ้นโปรดักชันจริงเสมอ
ขอปลดบล็อกพอร์ตกับ DigitalOcean Support
จากการรีวิวหลายรอบ สามารถติดต่อ DigitalOcean Support เพื่อสอบถามเรื่องปลดบล็อกพอร์ต SMTP ได้ แต่ไม่มีการรับประกันว่าจะได้รับการปลดบล็อกเสมอไป เพราะเป็นการพิจารณาเป็นกรณีไป และเป็นส่วนหนึ่งของนโยบายป้องกันสแปมของทั้งแพลตฟอร์ม ในทางปฏิบัติ ทีมงานส่วนใหญ่แนะนำให้ใช้บริการ SMTP relay แทนตั้งแต่แรกเพื่อความรวดเร็ว
- ติดต่อผ่าน Support ticket ในหน้า Control Panel
- ไม่รับประกันผลลัพธ์ เพราะเป็นนโยบายป้องกันสแปมระดับแพลตฟอร์ม
- อาจใช้เวลาพิจารณานานกว่าการเปลี่ยนไปใช้ SMTP relay
- ถ้าต้องการความรวดเร็ว แนะนำใช้บริการ third-party ไปเลยตั้งแต่แรก
ทางเลือกพอร์ตอื่น
ผู้ให้บริการ SMTP relay บางเจ้าเปิดให้ใช้พอร์ตทางเลือกอื่นนอกเหนือจาก 25/465/587 เช่นพอร์ต 2525 เพื่อหลีกเลี่ยงพอร์ตที่ผู้ให้บริการ Cloud มักบล็อก ควรตรวจสอบเอกสารของผู้ให้บริการที่เลือกใช้ว่ารองรับพอร์ตทางเลือกนี้หรือไม่ก่อนตั้งค่า
- พอร์ต 2525 เป็นทางเลือกที่บาง provider รองรับ
- ต้องเช็คเอกสารของผู้ให้บริการที่ใช้ก่อนว่ารองรับพอร์ตนี้หรือไม่
- ยังคงต้องผ่านบริการ third-party อยู่ดี ไม่ใช่การปลดบล็อกพอร์ต 25 โดยตรง
Checklist ก่อน deploy ระบบที่ต้องส่งอีเมล
ก่อนขึ้นโปรดักชันจริง ควรตรวจสอบให้ครบทุกจุดเพื่อไม่ให้อีเมลสำคัญ เช่น อีเมลยืนยันการสมัครสมาชิกหรือใบเสร็จ หลุดหายไป
- ยืนยันว่าใช้ SMTP relay หรือ Email API แทนการรันเมลเซิร์ฟเวอร์เอง
- ยืนยันโดเมน + ตั้งค่า SPF/DKIM ตามที่ผู้ให้บริการแนะนำ
- ทดสอบส่งอีเมลจริงในทุก flow สำคัญ (สมัครสมาชิก, ลืมรหัสผ่าน, ใบเสร็จ)
- ตั้งระบบแจ้งเตือนเมื่ออีเมลส่งไม่สำเร็จ (bounce/failure webhook)