email server และ inbox

ตั้ง Email Server บน VPS ด้วย Mailcow ควบคุม Email ได้เต็มที่

มิถุนายน 2026 · อ่าน 8 นาที

การตั้ง email server เองบน VPS ให้ความเป็นส่วนตัวและควบคุมได้เต็มที่ แต่ก็มีความรับผิดชอบที่ตามมาด้วย บทความนี้ใช้ Mailcow ซึ่งเป็น stack สำเร็จรูปที่ทำงานผ่าน Docker

ข้อควรรู้ก่อนเริ่ม: การตั้ง email server เองต้องการ IP ที่ไม่อยู่ใน blacklist และ PTR record ที่ถูกต้อง VPS บาง provider block port 25 โดยค่าเริ่มต้น ตรวจสอบก่อนเริ่ม

ทำไมถึงใช้ Mailcow

Mailcow รวม Postfix (MTA), Dovecot (IMAP), Rspamd (spam filter), SOGo (webmail), Nginx และ MariaDB เข้าด้วยกัน ทั้งหมดรันผ่าน Docker Compose ไม่ต้องติดตั้งและ configure ทีละตัว

ความต้องการของระบบ

ขั้นตอนติดตั้ง Mailcow

cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
./generate_config.sh   # จะถาม FQDN เช่น mail.example.com
docker compose pull
docker compose up -d

หลังจากนี้เปิด https://mail.example.com จะเห็น admin panel ค่าเริ่มต้น: user admin password moohoo เปลี่ยนทันที

DNS Records ที่ต้องตั้ง

# A Record สำหรับ mail server
mail.example.com    A     1.2.3.4

# MX Record ชี้มาที่ mail server
example.com         MX    10  mail.example.com.

# SPF: อนุญาตให้ mail server ส่ง email
example.com         TXT   "v=spf1 mx ~all"

# DKIM: Mailcow จะ generate key ให้ copy จาก admin panel
mail._domainkey     TXT   "v=DKIM1; k=rsa; p=..."

# DMARC
_dmarc.example.com  TXT   "v=DMARC1; p=quarantine; rua=mailto:[email protected]"

# Autoconfig สำหรับ email client
autoconfig          CNAME mail.example.com.
autodiscover        CNAME mail.example.com.

PTR Record: สำคัญมากสำหรับ Mail Server

ต้องตั้งผ่าน VPS provider ไม่ใช่ DNS panel ให้ IP ของ VPS มี reverse DNS ชี้กลับมาที่ mail.example.com ถ้าไม่มี PTR email ส่วนใหญ่จะ reject ทันที

ทดสอบหลังตั้งค่า


ทางเลือก: ใช้ Email Hosting แทน

การตั้ง email server เองต้องดูแลอย่างต่อเนื่อง อัปเดต, ตรวจสอบ blacklist, และ troubleshoot deliverability ถ้าไม่ต้องการรับผิดชอบเองทั้งหมด บริการ email hosting ก็เป็นทางเลือกที่สมเหตุสมผล

สำหรับธุรกิจในไทย บริการ hosting ของ asiagb มาพร้อม email hosting, spam filter และ support ภาษาไทย เหมาะกับทีมที่ไม่ต้องการดูแล mail server เอง

ก่อนตั้งค่าหรือย้าย email server อย่าลืมตรวจสอบสุขภาพโดเมนและ DNS records ด้วยเครื่องมืออย่าง dnsxray.com ซึ่งตรวจ MX, SPF, DKIM และ Security Headers ได้ฟรีในหน้าเดียว


สรุป

Mailcow ทำให้การตั้ง email server บน VPS ง่ายขึ้นมาก แต่ความซับซ้อนหลักอยู่ที่ DNS และ deliverability ไม่ใช่การติดตั้ง ถ้าพร้อมรับผิดชอบดูแลระบบเองก็คุ้มที่จะลอง แต่ถ้าต้องการความสะดวกกว่านี้ email hosting ก็เป็นทางเลือกที่ดี

ตรวจสอบว่าระบบทำงานถูกต้อง

# ตรวจ container ทั้งหมดกำลังรัน
cd /opt/mailcow-dockerized
docker compose ps

# ดู mail log
docker compose logs postfix-mailcow --tail=50

# ตรวจ DKIM ที่ได้ตั้งไว้
dig TXT mail._domainkey.example.com +short
ทดสอบ score: ส่ง email ไปที่ [email protected] จะได้รับ reply พร้อมผล SPF/DKIM/DMARC check อัตโนมัติ

แก้ปัญหาที่พบบ่อย

Error: Port 25 connection refused / email ส่งไม่ออก

VPS provider หลายรายบล็อก port 25 โดยค่าเริ่มต้น ต้องขอเปิดหรือใช้ relay:

# ทดสอบว่า port 25 เปิดได้ไหม
telnet mail.example.com 25
# ถ้า "connection refused" แปลว่าถูก block ที่ network level

# ทางเลือก: ส่งผ่าน port 587 (submission) แทน
# หรือใช้ relay ผ่าน SendGrid/Mailgun สำหรับ outbound

Email ตก Spam ที่ Gmail / Outlook

สาเหตุหลักคือ IP อยู่ใน blacklist หรือ PTR ไม่ถูกต้อง:

# ตรวจ PTR record
dig -x YOUR_VPS_IP +short
# ต้องได้ mail.example.com. กลับมา

# ตรวจ IP ว่าอยู่ใน blacklist
# ใช้เว็บ mxtoolbox.com/blacklists.aspx

Error: DKIM signature fail ใน email header

DKIM key ใน DNS ยังไม่อัพเดทหรือ copy ผิด:

# ดู DKIM key จาก Mailcow admin panel
# Email → Configuration → Domain → DKIM

# ตรวจว่า DNS propagate แล้ว
dig TXT mail._domainkey.example.com
# ต้องเห็น p=MIIBIj... (RSA public key)

Error: Docker container restart loop

# ดู log ของ container ที่มีปัญหา
docker compose logs dovecot-mailcow --tail=100

# Restart container เดียว
docker compose restart dovecot-mailcow

# Pull image ใหม่
docker compose pull && docker compose up -d

Webmail เข้าไม่ได้ / SSL error

# รัน Let's Encrypt renewal
docker compose exec acme-mailcow /root/start.sh

# ตรวจ cert expiry
echo | openssl s_client -connect mail.example.com:443 2>/dev/null | openssl x509 -noout -dates

คำถามที่พบบ่อย

ตั้ง email server เองได้หลาย domain ไหม?

ได้ Mailcow รองรับ multi-domain ได้ไม่จำกัด เพิ่ม domain ใหม่ใน admin panel แล้วตั้ง DNS records แยกต่างหากสำหรับแต่ละ domain

Mailcow ต้องการ resource เท่าไร?

ขั้นต่ำ RAM 2 GB แต่แนะนำ 4 GB สำหรับการใช้งานจริง disk ขึ้นอยู่กับ email volume แนะนำ 40 GB+ และ backup ตาม retention ที่ต้องการ

Backup email ทำได้ยังไง?

cd /opt/mailcow-dockerized
./helper-scripts/backup_and_restore.sh backup all
# ไฟล์จะถูกเก็บใน /opt/mailcow-dockerized/backups/

อัปเดต Mailcow ทำยังไง?

cd /opt/mailcow-dockerized
./update.sh

ควร backup ก่อน update ทุกครั้ง และอ่าน changelog ว่ามี breaking change ไหม