ปัญหาอีเมลตก 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 มีหลายประการ:

โครงสร้างการทำงานคือ: แอปพลิเคชัน → 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:

  1. ติดตั้ง Plugin WP Mail SMTP จาก WordPress Repository
  2. ไปที่ Settings → WP Mail SMTP → Settings
  3. ใส่ From Email: ต้องเป็นอีเมลในโดเมนที่ตั้งค่า SPF/DKIM ไว้
  4. เลือก Mailer: Other SMTP
  5. SMTP Host: ใส่ Host ของ Provider (เช่น smtp.sendgrid.net)
  6. Encryption: TLS (Port 587)
  7. Authentication: Yes → ใส่ Username และ Password
  8. คลิก Save Settings
  9. ไปที่ 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 ข้อควรหลีกเลี่ยง:

ตรวจสอบและ 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