ทำไมจึงส่งผ่านพอร์ต 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 ติดตั้ง
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 ไม่ผ่าน เริ่มด้วยการตั้งค่าที่รับเพียงรายงานตามด้านล่าง
_dmarc.example.com TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com"ดูรายงานสักสองสามสัปดาห์จนแน่ใจว่าอีเมลทั้งหมดผ่าน แล้วยกระดับเป็น p=quarantine และต่อด้วย p=reject เพื่อป้องกันการปลอมแปลงโดเมน
การรับอีเมลและขั้นต่อไป
หากต้องการรับอีเมลที่ส่งมายังโดเมนของคุณ ให้ใส่ระเบียน MX ของบริการโฮสต์อีเมลในโดเมน ให้โฮสต์อีเมลดูแลอีเมลขาเข้า และบริการส่งดูแลอีเมลแจ้งเตือนขาออก เซิร์ฟเวอร์ก็โฟกัสที่เว็บไซต์และแอปได้เต็มที่
วิธีส่งผ่านบริการส่งอีเมล แม้ย้ายหรือสร้างเซิร์ฟเวอร์ใหม่ ก็แค่ย้ายการตั้งค่าไม่กี่บรรทัดแล้วใช้ต่อได้ แม้ IP เซิร์ฟเวอร์เปลี่ยน ชื่อเสียงการส่งก็ยังอยู่ฝั่งบริการ เมื่อย้ายเว็บไปภูมิภาคอื่น อัตราการส่งถึงอีเมลก็ไม่สะดุด
พอร์ตอื่นเปิดใช้ได้อิสระตามบริการ วิธีเปิดเฉพาะพอร์ตที่ใช้อยู่ในคู่มือไฟร์วอลล์พื้นฐาน และกฎการใช้เซิร์ฟเวอร์อยู่ในนโยบายการใช้งาน
