ปัญหาอีเมลตก Spam เป็นเรื่องที่ธุรกิจออนไลน์พบบ่อยที่สุด โดยเฉพาะเมื่อต้องส่งอีเมลยืนยันการสั่งซื้อ, OTP, รีเซ็ตรหัสผ่าน หรือ Newsletter ไปหาลูกค้าจำนวนมาก สาเหตุหลักคือการส่งตรงจาก IP ของเซิร์ฟเวอร์ที่ยังไม่มีชื่อเสียง (Reputation) ดีพอ SMTP Relay คือทางออกที่ถูกต้อง บทความนี้จะอธิบายหลักการทำงาน วิธีตั้งค่า และ Best Practice ที่ทำให้อีเมลของคุณเข้า Inbox ได้อย่างสม่ำเสมอ
SMTP Relay คืออะไร และทำงานอย่างไร
SMTP Relay หรือที่รู้จักในชื่อ Smart Host คือบริการที่ทำหน้าที่รับอีเมลจากแอปพลิเคชันหรือเซิร์ฟเวอร์ของคุณ แล้วส่งต่อไปยังผู้รับปลายทางอีกที แทนที่คุณจะส่งอีเมลตรงจาก IP ของตัวเอง (Direct Send) คุณส่งไปหา SMTP Relay ก่อน แล้ว Relay จะส่งต่อไปยัง Gmail, Outlook หรือ Email Provider ของผู้รับ
เหตุผลที่ใช้ Relay แทน Direct Send มีหลายประการ:
- IP Reputation — ผู้ให้บริการ SMTP Relay มี IP Pool ที่ Warmup มาแล้ว มี Reputation ดีในสายตาของ Gmail/Outlook ทำให้อีเมลผ่าน Spam Filter ได้ง่ายกว่า
- Rate Limiting — Relay จัดการ Queue และอัตราการส่งให้ไม่เกิน Threshold ที่ปลายทางกำหนด ลดโอกาสถูก Throttle
- Bounce Handling — จัดการ Hard Bounce และ Soft Bounce แบบอัตโนมัติ ช่วยรักษา Sender Reputation
- Analytics — มี Dashboard ติดตาม Delivery Rate, Open Rate, Bounce Rate ในที่เดียว
- Authentication พร้อมใช้ — DKIM Signing ทำที่ Relay Layer ช่วยให้อีเมลผ่านการตรวจสอบ
โครงสร้างการทำงานคือ: แอปพลิเคชัน → SMTP Relay (Port 587) → ผู้รับปลายทาง
เลือกผู้ให้บริการ SMTP Relay ให้เหมาะกับการใช้งาน
ในตลาดมีผู้ให้บริการ SMTP Relay หลายราย แต่ละรายเหมาะกับ Use Case ต่างกัน ก่อนเลือกควรพิจารณา 3 ปัจจัยหลักคือ ปริมาณอีเมลต่อเดือน, ประเภทอีเมล (Transactional vs Marketing) และงบประมาณ
| ผู้ให้บริการ | Free Tier | เหมาะกับ | จุดเด่น |
|---|---|---|---|
| SendGrid | 100 อีเมล/วัน | Transactional Email, SaaS | API ครบ, Analytics ละเอียด |
| Mailgun | 100 อีเมล/วัน (ทดลอง) | Developer, API-first | Webhook, Log ครบ |
| Amazon SES | 62,000/เดือน (ถ้าส่งจาก EC2) | ปริมาณสูง, ต้นทุนต่ำ | ราคาถูกมาก, Scalable |
| Brevo (Sendinblue) | 300 อีเมล/วัน | SME, Newsletter + Transactional | ใช้งานง่าย, มี Thai support |
| Email Hosting SMTP | ตามแพ็กเกจ | อีเมลธุรกิจ @โดเมน | ควบคุมเต็มที่, SPF/DKIM พร้อม |
สำหรับธุรกิจ SME ที่ส่งอีเมลธุรกิจ (ใบแจ้งหนี้, ยืนยัน Order, ติดตามลูกค้า) ผ่าน @โดเมนตัวเอง การใช้ Email Hosting ที่มี SMTP Server พร้อม SPF/DKIM/DMARC ครบอยู่แล้วเป็นตัวเลือกที่ประหยัดและตั้งค่าง่ายที่สุด
ตั้งค่า SPF, DKIM และ DMARC — รากฐานก่อน Relay
ก่อนตั้งค่า SMTP Relay ต้องทำให้ DNS Record ถูกต้องก่อน ไม่เช่นนั้นแม้จะใช้ Relay ดีแค่ไหนก็ยังตก Spam ได้
SPF Record
SPF (Sender Policy Framework) ระบุว่า IP ใดบ้างได้รับอนุญาตส่งอีเมลในนามโดเมนของคุณ เพิ่ม TXT Record ที่ DNS:
yourdomain.com IN TXT "v=spf1 include:sendgrid.net include:mail.yourdomain.com ~all"
ถ้าใช้ Email Hosting ของ AsiaGB ให้เพิ่ม include ของ Mail Server ที่ทางเราให้ไว้ ถ้าใช้ Relay Provider ภายนอกให้ดู Documentation ของแต่ละ Provider เพื่อหา include string ที่ถูกต้อง ห้ามมี SPF Record มากกว่า 1 บรรทัด เพราะจะทำให้ Fail ทันที รวมทุก include ไว้ในบรรทัดเดียว
DKIM Record
DKIM (DomainKeys Identified Mail) เป็น Digital Signature ที่ลงนามใน Header ของอีเมลทุกฉบับ ผู้รับตรวจสอบว่าอีเมลถูกแก้ไขระหว่างทางหรือไม่ ผู้ให้บริการ SMTP Relay จะออก Public Key ให้นำไปสร้าง TXT Record:
selector._domainkey.yourdomain.com IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBA..."
โดยที่ selector คือชื่อที่ Provider กำหนด เช่น s1, mail หรือ default ค่า p= คือ Public Key ที่ copy มาจาก Dashboard ของ Provider
DMARC Record
DMARC กำหนดว่าจะทำอะไรกับอีเมลที่ไม่ผ่าน SPF และ DKIM ควรเริ่มด้วย Policy none เพื่อ Monitor ก่อน:
_dmarc.yourdomain.com IN TXT "v=DMARC1; p=none; rua=mailto:[email protected]"
เมื่อ Monitor ไม่พบปัญหาสัก 2-4 สัปดาห์แล้ว ค่อยเปลี่ยนเป็น p=quarantine และสุดท้ายเป็น p=reject เพื่อป้องกัน Email Spoofing อย่างสมบูรณ์
ตั้งค่า Postfix ให้ส่งผ่าน SMTP Relay
ถ้าเซิร์ฟเวอร์ของคุณใช้ Postfix (Linux Mail Transfer Agent ที่พบบ่อยที่สุดบน Ubuntu/Debian/CentOS) ให้แก้ไข /etc/postfix/main.cf เพื่อกำหนด Relay Host:
# ตั้งค่า Smart Host (เปลี่ยน smtp.sendgrid.net ให้ตรงกับ Provider ของคุณ) relayhost = [smtp.sendgrid.net]:587 # เปิดใช้ SASL Authentication smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous # เปิดใช้ TLS smtp_use_tls = yes smtp_tls_security_level = encrypt smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
สร้างไฟล์ /etc/postfix/sasl_passwd เพื่อเก็บ Credentials:
[smtp.sendgrid.net]:587 apikey:SG.xxxxxxxxxxxxxxxxxxxx
แล้วสร้าง Hash Database และ Reload Postfix:
sudo postmap /etc/postfix/sasl_passwd sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db sudo systemctl reload postfix
ทดสอบด้วยการส่งอีเมลทดลอง:
echo "Test body" | mail -s "Test Subject" [email protected]
ตรวจ Log ที่ /var/log/mail.log เพื่อยืนยันว่า Relay ทำงานถูกต้อง:
tail -f /var/log/mail.log | grep "status=sent"
ตั้งค่า PHP Mailer ให้ใช้ SMTP Relay
สำหรับแอปพลิเคชัน PHP ที่ใช้ PHPMailer (Library ยอดนิยม) ตั้งค่าดังนี้:
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// Server settings
$mail->isSMTP();
$mail->Host = 'smtp.sendgrid.net'; // หรือ SMTP Host ของ Provider คุณ
$mail->SMTPAuth = true;
$mail->Username = 'apikey';
$mail->Password = 'SG.xxxxxxxxxxxxxxxxxxxx'; // API Key ของ SendGrid
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// Recipients
$mail->setFrom('[email protected]', 'Your Company Name');
$mail->addAddress('[email protected]', 'Customer Name');
$mail->addReplyTo('[email protected]', 'Support Team');
// Content
$mail->isHTML(true);
$mail->Subject = 'ยืนยันคำสั่งซื้อของคุณ';
$mail->Body = '<h1>ขอบคุณสำหรับคำสั่งซื้อ</h1><p>รายละเอียด Order ของคุณ...</p>';
$mail->AltBody = 'ขอบคุณสำหรับคำสั่งซื้อ รายละเอียด Order ของคุณ...';
$mail->send();
echo 'ส่งอีเมลสำเร็จ';
} catch (Exception $e) {
echo "เกิดข้อผิดพลาด: {$mail->ErrorInfo}";
}
?>
สิ่งสำคัญที่ต้องใส่ให้ครบคือ SMTPSecure และ Port ให้ตรงกัน ถ้าใช้ STARTTLS ให้ Port 587 ถ้าใช้ SSL ให้ Port 465 พร้อม PHPMailer::ENCRYPTION_SMTPS และอย่าลืม ใส่ AltBody เสมอ (Plain Text Fallback) เพราะ Spam Filter บางตัวให้คะแนนลบอีเมลที่มีแค่ HTML
ตั้งค่า WordPress ให้ส่งผ่าน SMTP Relay
WordPress ใช้ฟังก์ชัน wp_mail() ที่ส่งผ่าน PHP mail() ของเซิร์ฟเวอร์เป็นค่าเริ่มต้น ซึ่งมักตก Spam เพราะไม่มี DKIM Signing และ IP ของ Shared Hosting อาจถูก Blacklist ร่วมกับผู้ใช้รายอื่น วิธีแก้คือใช้ Plugin WP Mail SMTP:
- ติดตั้ง Plugin WP Mail SMTP จาก WordPress Repository
- ไปที่
Settings → WP Mail SMTP → Settings - ใส่ From Email: ต้องเป็นอีเมลในโดเมนที่ตั้งค่า SPF/DKIM ไว้
- เลือก Mailer: Other SMTP
- SMTP Host: ใส่ Host ของ Provider (เช่น
smtp.sendgrid.net) - Encryption: TLS (Port 587)
- Authentication: Yes → ใส่ Username และ Password
- คลิก Save Settings
- ไปที่ Tab Email Test ส่งทดสอบและยืนยันว่าเข้า Inbox
# ถ้าต้องการตั้งค่าใน wp-config.php แทน Plugin
define('WPMS_ON', true);
define('WPMS_SMTP_HOST', 'smtp.sendgrid.net');
define('WPMS_SMTP_PORT', 587);
define('WPMS_SSL', 'tls');
define('WPMS_SMTP_AUTH', true);
define('WPMS_SMTP_USER', 'apikey');
define('WPMS_SMTP_PASS', 'SG.xxxxxxxxxxxxxxxxxxxx');
เคล็ดลับ: ถ้าไซต์ WordPress มีหลายโดเมน หรือส่งอีเมลจากหลาย From Address ให้สร้าง API Key แยกกันในแต่ละโดเมน พร้อม SPF/DKIM ที่ตั้งค่าสำหรับโดเมนนั้นโดยเฉพาะ ไม่ควรใช้ API Key เดียวกันระหว่างหลายโดเมนเพราะ Reputation จะแชร์กัน ถ้าโดเมนหนึ่งมีปัญหา Bounce สูง จะกระทบโดเมนอื่นด้วย
Best Practice เพื่อ Deliverability สูงสุด
การตั้งค่า SMTP Relay ให้ถูกต้องเป็นเพียงขั้นแรก ในระยะยาวต้องดูแลสุขภาพของการส่งอีเมลอย่างต่อเนื่อง ประกอบด้วยแนวทางสำคัญดังนี้:
IP Warmup สำหรับ Volume สูง
ถ้าเพิ่งเริ่มส่งอีเมลผ่าน IP ใหม่หรือ Domain ใหม่ ควรทำ IP Warmup โดยค่อยๆ เพิ่มจำนวนการส่งทีละน้อยในช่วง 2-4 สัปดาห์แรก เช่น เริ่มที่ 50 ฉบับ/วัน → 200 → 500 → 1,000 → ตามต้องการ การส่งปริมาณมากตั้งแต่วันแรกจะทำให้ Gmail/Outlook มองว่าเป็น Spam ทันที
จัดการ Bounce List อย่างเคร่งครัด
Hard Bounce (Email ไม่มีจริง หรือโดเมนไม่มี) ต้องลบออกจากรายชื่อทันที อย่าส่งซ้ำ ผู้ให้บริการ Relay ส่วนใหญ่ Unsubscribe อัตโนมัติ แต่ควรซิงค์ข้อมูลกลับมายัง Database ของคุณด้วย Bounce Rate ที่สูงเกิน 2% จะส่งผลเสียต่อ Sender Reputation
ใช้ Dedicated IP เมื่อปริมาณสูง
ถ้าส่งอีเมลเกิน 100,000 ฉบับ/เดือน ควรขอ Dedicated IP จากผู้ให้บริการ Relay แทนการใช้ Shared IP Pool เพราะ Reputation จะเป็นของคุณคนเดียว ไม่ถูกกระทบจากผู้ใช้รายอื่น
Content ของอีเมลก็สำคัญ
แม้ Authentication จะผ่านแล้ว เนื้อหาของอีเมลยังถูกตรวจสอบโดย Content Filter ข้อควรหลีกเลี่ยง:
- หลีกเลี่ยงคำที่ Spam Filter ไม่ชอบ เช่น "FREE!!!", "ได้เงิน", "ราคาพิเศษสุดพิเศษ" เขียนในลักษณะ Natural มากขึ้น
- ไม่ใช้ URL Shortener (bit.ly, tinyurl) เพราะ Spam Filter ไม่ชอบ URL ที่ซ่อน Destination
- ใส่ Unsubscribe Link ทุกอีเมล Marketing — Gmail ใหม่บังคับแล้วสำหรับ Sender ที่ส่งเกิน 5,000 ฉบับ/วัน
- อัตราส่วน Text-to-Image ควรอยู่ที่ 60:40 หรือมากกว่า ไม่ใช่ภาพล้วน
- ตรวจสอบ Link ทุกจุดว่าใช้งานได้จริง และชี้ไปโดเมนที่ถูกต้อง
ตรวจสอบและ Monitor การส่งอีเมล
หลังตั้งค่าเสร็จควร Monitor อย่างสม่ำเสมอ ไม่ใช่แค่ตอนเริ่มต้น เครื่องมือสำคัญที่ควรใช้:
Google Postmaster Tools
เครื่องมือฟรีจาก Google ช่วยดู Domain Reputation, IP Reputation, Spam Rate และ DMARC Compliance ของอีเมลที่ส่งไปยัง Gmail ลงทะเบียนที่ https://postmaster.google.com แล้วยืนยัน Domain ผ่าน DNS TXT Record จะเห็นข้อมูลแบบ Real-time ว่าอีเมลที่ส่งไป Gmail มีกี่ % ที่ถูก Mark ว่าเป็น Spam
Mail-Tester.com
ส่งอีเมลทดสอบไปยังที่อยู่ที่ Mail-Tester กำหนด แล้วดูคะแนนตั้งแต่ 1-10 พร้อม Report ละเอียดว่ามีปัญหาอะไรบ้าง เช่น SPF ผ่านไหม, DKIM ถูกต้องไหม, Blacklist หรือเปล่า
ตรวจ Blacklist สม่ำเสมอ
ใช้บริการ MXToolbox (mxtoolbox.com/blacklists) ตรวจสอบ IP และ Domain ว่าติด Blacklist ไหม ควรตรวจอย่างน้อยเดือนละครั้ง ถ้าติด Blacklist ต้องแก้ไขสาเหตุ (มักเป็น Spam Complaint สูง หรือ Bounce Rate สูง) แล้ว Request ให้ถอดออก
Log Analysis
ดู SMTP Log ของ Relay Provider เพื่อหา Pattern ผิดปกติ เช่น Defer Rate สูงในช่วงเวลาใดเวลาหนึ่ง (แสดงว่า Rate Limit ถูก Throttle) หรือ Permanent Failure เพิ่มขึ้น (อาจมี Domain เสีย)
คำถามที่พบบ่อย (FAQ)
SMTP Relay กับการส่งอีเมลตรงต่างกันอย่างไร
การส่งอีเมลตรง (Direct Send) คือเซิร์ฟเวอร์ของคุณส่งหาปลายทางโดยไม่ผ่านตัวกลาง ทำให้ IP ของเซิร์ฟเวอร์ถูกตรวจสอบโดยตรง ถ้า IP ไม่มีชื่อเสียงดีหรือยังใหม่ อีเมลมักตกไปยัง Spam ส่วน SMTP Relay คือการส่งผ่าน Smart Host หรือผู้ให้บริการ SMTP เฉพาะทาง ซึ่งมี IP ที่มี Reputation ดีและผ่านการ Warmup มาแล้ว ทำให้ Deliverability สูงกว่ามาก เหมาะกับระบบที่ต้องส่ง Transactional Email หรืออีเมลธุรกิจในปริมาณมาก
ต้องตั้งค่า SPF และ DKIM ก่อนใช้ SMTP Relay ไหม
จำเป็นมาก — SPF ต้องเพิ่ม IP หรือ include ของผู้ให้บริการ SMTP Relay เข้าไปใน DNS Record เพื่อให้ได้รับอนุญาตส่งในนามโดเมนของคุณ ส่วน DKIM ต้องนำ Public Key ที่ผู้ให้บริการออกให้ไปสร้าง TXT Record ในโดเมน ทั้งสองอย่างนี้เป็นพื้นฐานของ Email Authentication ที่ปลายทาง (Gmail, Outlook) ใช้ตัดสินใจว่าจะรับหรือปฏิเสธอีเมล ถ้าไม่ตั้งค่า อีเมลมีโอกาสสูงมากที่จะตก Spam หรือถูก Reject ตั้งแต่แรก
ถ้าใช้ WordPress จะเชื่อมต่อ SMTP Relay ได้อย่างไร
WordPress ใช้ฟังก์ชัน wp_mail() ซึ่งโดยค่าเริ่มต้นส่งผ่าน PHP mail() ของเซิร์ฟเวอร์ ซึ่งมักตก Spam ให้ติดตั้ง Plugin WP Mail SMTP แล้วกรอก SMTP Host, Port (587 TLS หรือ 465 SSL), Username และ Password ของผู้ให้บริการ SMTP Relay Plugin จะ Hook เข้า wp_mail() และเปลี่ยนให้ส่งผ่าน SMTP แทน ควรกดทดสอบ Send Test Email ใน Plugin เพื่อยืนยันว่าส่งได้และเข้า Inbox จริง
Port SMTP 25, 465 และ 587 ใช้ต่างกันอย่างไร
Port 25 เป็น Port เดิมสำหรับรับส่งอีเมลระหว่าง Mail Server (MTA-to-MTA) แต่ ISP และ Cloud Provider ส่วนใหญ่บล็อก Port 25 สำหรับ Outbound เพื่อป้องกัน Spam ทำให้ไม่เหมาะสำหรับส่งจาก Application Port 465 คือ SMTPS ที่ใช้ SSL/TLS ตั้งแต่ต้น (Implicit TLS) บาง Provider รองรับ แต่ถูก Deprecated ใน RFC แล้ว Port 587 คือ Submission Port ที่ใช้ STARTTLS (Explicit TLS) เป็นมาตรฐานปัจจุบันที่แนะนำสำหรับ SMTP Relay จาก Application ไปยัง Smart Host โดยเฉพาะ
Email Hosting ธุรกิจ @โดเมนตัวเอง
AsiaGB Email พร้อม SPF DKIM DMARC Deliverability สูง เริ่มต้น 200 บาท/ปี
ดูแพ็กเกจ Email