HELPER VPS

ส่งอีเมลจาก VPS: เชื่อมบริการส่ง SMTP ผ่านพอร์ต 587, 465

ทุกเซิร์ฟเวอร์ของ HELPER VPS ปิดพอร์ต 25 ขาออกไว้เพื่อป้องกันสแปม จึงช่วยรักษาชื่อเสียง IP ของทุกเซิร์ฟเวอร์ในเครือข่ายเดียวกันให้สะอาด ส่งอีเมลผ่านพอร์ต 587 หรือ 465 ของบริการส่งอีเมล จะถึงกล่องจดหมายได้ดีกว่า

ทำไมจึงส่งผ่านพอร์ต 587 และ 465

พอร์ต 25 คือพอร์ตที่เซิร์ฟเวอร์อีเมลใช้ส่งต่ออีเมลถึงกัน หากส่งจากเซิร์ฟเวอร์ตรงไปยังเซิร์ฟเวอร์อีเมลปลายทาง ต้องดูแลเองทั้งชื่อเสียง IP, reverse DNS และปริมาณการส่ง และอีเมลจาก IP เซิร์ฟเวอร์ใหม่มักเข้ากล่องสแปม

พอร์ต 587 และ 465 คือพอร์ตส่งเข้า (submission) สำหรับผู้ใช้ที่ล็อกอินแล้วฝากอีเมล ล็อกอินบริการส่งอีเมลด้วยชื่อผู้ใช้และรหัสผ่านแล้วฝากอีเมล เซิร์ฟเวอร์ส่งที่มีการดูแลชื่อเสียงจะส่งต่อให้ เป็นวิธีที่แน่นอนที่สุดที่ทำให้อีเมลยืนยันการสมัคร ลืมรหัสผ่าน และแจ้งคำสั่งซื้อถึงกล่องจดหมาย

  • พอร์ต 587: เชื่อมต่อแบบข้อความธรรมดาแล้วเริ่มเข้ารหัสด้วย STARTTLS เป็นพอร์ตเริ่มต้นที่บริการและโปรแกรมส่วนใหญ่ใช้
  • พอร์ต 465: เชื่อมต่อแบบเข้ารหัส TLS ตั้งแต่แรก ในหน้าตั้งค่ามักแสดงเป็น SSL หรือ SSL/TLS

เลือกบริการส่งอีเมล

บริการส่งอีเมลแบ่งเป็นสองแบบหลัก แบบแรกคือบริการอีเมล transactional ที่ส่งอีเมลแจ้งเตือนของเว็บและแอปจำนวนมาก แบบที่สองคือฟีเจอร์ SMTP ของอีเมลบริษัทหรือบัญชีอีเมลส่วนตัวที่ใช้อยู่ ไม่ว่าแบบใด ได้ข้อมูลสี่อย่างด้านล่างมาก็พร้อมตั้งค่า

  • ที่อยู่เซิร์ฟเวอร์ SMTP: เช่น smtp.example.com
  • พอร์ต: 587 (STARTTLS) หรือ 465 (SSL/TLS)
  • ชื่อผู้ใช้: ชื่อผู้ใช้หรือที่อยู่อีเมลที่บริการกำหนด
  • รหัสผ่าน: รหัสผ่าน SMTP เฉพาะของบริการหรือคีย์ API

ร้านค้าหรือบริการที่ส่งอีเมลมาก บริการอีเมล transactional จะดูแลประวัติการส่ง การจัดการอีเมลตีกลับ และการยกเลิกรับให้ จึงสะดวก หากแจ้งเตือนเพียงไม่กี่ฉบับ SMTP ของบัญชีอีเมลก็เพียงพอ

ตรวจการเชื่อมต่อ SMTP จากเซิร์ฟเวอร์

ก่อนตั้งค่า ตรวจว่าเซิร์ฟเวอร์เชื่อมต่อถึงบริการส่งได้ดี คำสั่งด้านล่างตรวจเฉพาะการเชื่อมต่อ ไม่ได้ส่งอีเมล

เทอร์มินัล
nc -vz smtp.example.com 587
openssl s_client -starttls smtp -connect smtp.example.com:587 -crlf -quiet
openssl s_client -connect smtp.example.com:465 -crlf -quiet

หากบรรทัดแรกแสดง succeeded หรือ open และคำสั่ง openssl แสดงข้อความทักทายของเซิร์ฟเวอร์ที่ขึ้นต้นด้วย 220 แสดงว่าพร้อมแล้ว ออกด้วย Ctrl+C หากไม่มีคำสั่ง nc ให้ติดตั้งด้วย apt install -y netcat-openbsd บน Ubuntu และ Debian หรือ dnf install -y nmap-ncat บน AlmaLinux

เชื่อม Postfix กับบริการส่งอีเมล

หากต้องการรวมอีเมลที่โปรแกรมในเซิร์ฟเวอร์ การแจ้งเตือน cron และคำสั่ง mail ส่งไว้ในที่เดียว ให้ตั้งค่า Postfix เป็น relay ที่ส่งต่อให้บริการส่งอีเมล อีเมลทั้งหมดในเซิร์ฟเวอร์จะล็อกอินผ่านพอร์ต 587 แล้วส่งออก

ขั้นที่ 1 ติดตั้ง

Ubuntu, Debian
apt install -y postfix libsasl2-modules mailutils

ระหว่างติดตั้ง เมื่อถามชนิดการตั้งค่าอีเมล ให้เลือก Internet Site และใส่โดเมนของคุณในชื่ออีเมล AlmaLinux 10 ติดตั้งด้วย dnf install -y postfix cyrus-sasl-plain s-nail แล้วเปิดด้วย systemctl enable --now postfix

ขั้นที่ 2 ตั้งค่า relay

เทอร์มินัล
postconf -e 'relayhost = [smtp.example.com]:587'
postconf -e 'smtp_sasl_auth_enable = yes'
postconf -e 'smtp_sasl_password_maps = texthash:/etc/postfix/sasl_passwd'
postconf -e 'smtp_sasl_security_options = noanonymous'
postconf -e 'smtp_tls_security_level = encrypt'
postconf -e 'inet_interfaces = loopback-only'

inet_interfaces = loopback-only ทำให้รับเฉพาะอีเมลที่ส่งจากในเซิร์ฟเวอร์ ภายนอกจึงใช้เซิร์ฟเวอร์นี้เป็นตัวส่งต่ออีเมลไม่ได้

ขั้นที่ 3 บันทึกข้อมูลล็อกอิน

เทอร์มินัล
echo '[smtp.example.com]:587 SMTP_USER:SMTP_PASSWORD' > /etc/postfix/sasl_passwd
chmod 600 /etc/postfix/sasl_passwd
systemctl restart postfix

หากบริการใช้พอร์ต 465 ให้เปลี่ยนพอร์ตของ relayhost และ sasl_passwd เป็น 465 แล้วเพิ่มบรรทัด postconf -e 'smtp_tls_wrappermode = yes' อีกหนึ่งบรรทัด

ขั้นที่ 4 ทดสอบส่งและตรวจล็อก

เทอร์มินัล
echo "VPS mail test" | mail -s "Test from VPS" you@example.com
postqueue -p
journalctl -t postfix/smtp -n 20

หากล็อกแสดง status=sent แสดงว่าบริการส่งรับอีเมลไปแล้ว postqueue -p แสดงรายการอีเมลที่ยังส่งออกไม่ได้ หากแก้ข้อมูลล็อกอินแล้ว ให้รัน systemctl restart postfix แล้วส่งใหม่ด้วย postqueue -f

ตั้งค่า SMTP ใน WordPress และแอป

เว็บไซต์และแอปส่วนใหญ่มีช่องตั้งค่า SMTP จึงเชื่อมต่อบริการส่งอีเมลได้โดยตรงโดยไม่ต้องมี Postfix บนเซิร์ฟเวอร์ ใน WordPress ติดตั้งปลั๊กอิน SMTP แล้วใส่ค่าด้านล่าง อีเมลสมัครสมาชิกและลืมรหัสผ่านก็จะส่งผ่านบริการนั้น

  • โฮสต์ SMTP: ที่อยู่บริการส่งอีเมล
  • การเข้ารหัส: พอร์ต 587 ใช้ TLS (STARTTLS) พอร์ต 465 ใช้ SSL
  • พอร์ต: 587 หรือ 465
  • การยืนยันตัวตน: เปิด แล้วกรอกชื่อผู้ใช้และรหัสผ่าน
  • ที่อยู่ผู้ส่ง: ที่อยู่ในโดเมนของคุณ (เช่น no-reply@example.com)

แอป Node.js, PHP, Python ก็ตั้งค่าไลบรารีอีเมลด้วยค่าเดียวกัน ไม่ควรเขียนรหัสผ่านลงในโค้ดโดยตรง ใส่ไว้ในตัวแปรสภาพแวดล้อมหรือไฟล์ตั้งค่าจะเป็นระเบียบ การติดตั้ง WordPress อยู่ในคู่มือติดตั้ง WordPress

ใส่ SPF, DKIM, DMARC ใน DNS ของโดเมน

เซิร์ฟเวอร์อีเมลปลายทางตรวจจากระเบียน DNS ว่าอีเมลมาจากที่ที่โดเมนของคุณอนุญาตจริงหรือไม่ ใส่สามระเบียนไว้ อัตราการถึงกล่องจดหมายจะสูงขึ้นมาก

  • SPF: รายการเซิร์ฟเวอร์ที่ส่งอีเมลของโดเมนคุณได้ ใส่ค่า include ที่บริการส่งให้ไว้ในระเบียน TXT หนึ่งระเบียน
  • DKIM: ลายเซ็นอิเล็กทรอนิกส์ที่แนบไปกับอีเมล ใส่ระเบียน TXT หรือ CNAME ที่หน้าจอบริการส่งสร้างให้ตามเดิม
  • DMARC: กำหนดวิธีจัดการอีเมลที่ตรวจ SPF และ DKIM ไม่ผ่าน เริ่มด้วยการตั้งค่าที่รับเพียงรายงานตามด้านล่าง
DNS TXT
_dmarc.example.com  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@example.com"

ดูรายงานสักสองสามสัปดาห์จนแน่ใจว่าอีเมลทั้งหมดผ่าน แล้วยกระดับเป็น p=quarantine และต่อด้วย p=reject เพื่อป้องกันการปลอมแปลงโดเมน

การรับอีเมลและขั้นต่อไป

หากต้องการรับอีเมลที่ส่งมายังโดเมนของคุณ ให้ใส่ระเบียน MX ของบริการโฮสต์อีเมลในโดเมน ให้โฮสต์อีเมลดูแลอีเมลขาเข้า และบริการส่งดูแลอีเมลแจ้งเตือนขาออก เซิร์ฟเวอร์ก็โฟกัสที่เว็บไซต์และแอปได้เต็มที่

วิธีส่งผ่านบริการส่งอีเมล แม้ย้ายหรือสร้างเซิร์ฟเวอร์ใหม่ ก็แค่ย้ายการตั้งค่าไม่กี่บรรทัดแล้วใช้ต่อได้ แม้ IP เซิร์ฟเวอร์เปลี่ยน ชื่อเสียงการส่งก็ยังอยู่ฝั่งบริการ เมื่อย้ายเว็บไปภูมิภาคอื่น อัตราการส่งถึงอีเมลก็ไม่สะดุด

พอร์ตอื่นเปิดใช้ได้อิสระตามบริการ วิธีเปิดเฉพาะพอร์ตที่ใช้อยู่ในคู่มือไฟร์วอลล์พื้นฐาน และกฎการใช้เซิร์ฟเวอร์อยู่ในนโยบายการใช้งาน

คู่มือที่ควรอ่านต่อ

การตั้งค่าที่ควรทำต่อจากคู่มือนี้

ดูคู่มือทั้งหมด