การสนับสนุนโปรโตคอล RFC อีเมล - คู่มือมาตรฐานและข้อกำหนดฉบับสมบูรณ์
About This Document
เอกสารนี้สรุปโปรโตคอล RFC (Request for Comments) ที่รองรับสำหรับ Forward Email เนื่องจาก Forward Email ใช้ WildDuck เป็นพื้นฐานสำหรับฟังก์ชัน IMAP/POP3 การรองรับโปรโตคอลและข้อจำกัดที่ระบุไว้ที่นี่จึงสะท้อนการใช้งานของ WildDuck
Important
Forward Email ใช้ SQLite สำหรับการจัดเก็บข้อความแทน MongoDB (ซึ่ง WildDuck ใช้เดิม) ซึ่งส่งผลต่อรายละเอียดการใช้งานบางอย่างที่ระบุไว้ด้านล่าง
Source Code: https://github.com/forwardemail/forwardemail.net
Architecture Overview
Email Service Comparison - Protocol Support & RFC Standards Compliance
Important
การเข้ารหัสแบบ Sandboxed และ Quantum-resistant: Forward Email เป็นบริการอีเมลเพียงบริการเดียวที่จัดเก็บกล่องจดหมาย SQLite ที่เข้ารหัสแยกกันโดยใช้รหัสผ่านของคุณ (ซึ่งมีเพียงคุณเท่านั้นที่มี) แต่ละกล่องจดหมายถูกเข้ารหัสด้วย sqleet (ChaCha20-Poly1305) แบบแยกตัว, sandboxed และพกพาได้ หากคุณลืมรหัสผ่าน คุณจะสูญเสียกล่องจดหมายของคุณ — แม้แต่ Forward Email ก็ไม่สามารถกู้คืนได้ ดูรายละเอียดได้ที่ Quantum-Safe Encrypted Email
เปรียบเทียบการรองรับโปรโตคอลอีเมลและการปฏิบัติตามมาตรฐาน RFC ระหว่างผู้ให้บริการอีเมลหลัก:
| Feature | Forward Email | Postfix/Dovecot | Gmail | iCloud Mail | Outlook.com | Fastmail | Yahoo/AOL (Verizon) | ProtonMail | Tutanota |
|---|---|---|---|---|---|---|---|---|---|
| Custom Domain Price | ฟรี | ฟรี | $7.20/เดือน | $0.99/เดือน | $7.20/เดือน | $5/เดือน | $3.19/เดือน | $4.99/เดือน | $3.27/เดือน |
| IMAP4rev1 (RFC 3501) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ⚠️ ผ่าน Bridge | ❌ ไม่รองรับ |
| IMAP4rev2 (RFC 9051) | ⚠️ บางส่วน | ⚠️ บางส่วน | ⚠️ 31% | ⚠️ 92% | ⚠️ 46% | ⚠️ 69% | ⚠️ 85% | ⚠️ ผ่าน Bridge | ❌ ไม่รองรับ |
| POP3 (RFC 1939) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ⚠️ ผ่าน Bridge | ❌ ไม่รองรับ |
| SMTP (RFC 5321) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ⚠️ ผ่าน Bridge | ❌ ไม่รองรับ |
| JMAP (RFC 8620) | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ |
| DKIM (RFC 6376) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ |
| SPF (RFC 7208) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ |
| DMARC (RFC 7489) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ |
| ARC (RFC 8617) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ |
| MTA-STS (RFC 8461) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ |
| DANE (RFC 7671) | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ✅ รองรับ |
| DSN (RFC 3461) | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ✅ รองรับ | ⚠️ ไม่ทราบ | ❌ ไม่รองรับ | ⚠️ ผ่าน Bridge | ❌ ไม่รองรับ |
| REQUIRETLS (RFC 8689) | ✅ รองรับ | ✅ รองรับ | ⚠️ ไม่ทราบ | ⚠️ ไม่ทราบ | ⚠️ ไม่ทราบ | ⚠️ ไม่ทราบ | ⚠️ ไม่ทราบ | ⚠️ ผ่าน Bridge | ❌ ไม่รองรับ |
| ManageSieve (RFC 5804) | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ |
| OpenPGP (RFC 9580) | ✅ รองรับ | ⚠️ ผ่าน Plugins | ⚠️ บุคคลที่สาม | ⚠️ บุคคลที่สาม | ⚠️ บุคคลที่สาม | ⚠️ บุคคลที่สาม | ⚠️ บุคคลที่สาม | ✅ เนทีฟ | ❌ ไม่รองรับ |
| S/MIME (RFC 8551) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ⚠️ บางส่วน | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ |
| CalDAV (RFC 4791) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ ผ่าน Bridge | ❌ ไม่รองรับ |
| CardDAV (RFC 6352) | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ ผ่าน Bridge | ❌ ไม่รองรับ |
| Tasks (VTODO) | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ |
| Sieve (RFC 5228) | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ |
| Catch-All | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ❌ ไม่รองรับ | ✅ รองรับ |
| Unlimited Aliases | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ✅ รองรับ |
| Two-Factor Auth | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ |
| Push Notifications | ✅ รองรับ | ⚠️ ผ่าน Plugins | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ✅ รองรับ |
| Calendar/Contacts Desktop | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ |
| Advanced Search | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ | ✅ รองรับ |
| API/Integrations | ✅ 39 Endpoints | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ✅ รองรับ | ❌ ไม่รองรับ | ✅ รองรับ | ❌ ไม่รองรับ |
Protocol Support Visualization
โปรโตคอลอีเมลหลัก
การไหลของโปรโตคอลอีเมล
โปรโตคอลอีเมล IMAP4 และส่วนขยาย
Note
Forward Email รองรับ IMAP4rev1 (RFC 3501) พร้อมการรองรับบางส่วนสำหรับฟีเจอร์ IMAP4rev2 (RFC 9051)
Forward Email ให้การรองรับ IMAP4 อย่างแข็งแกร่งผ่านการใช้งานเซิร์ฟเวอร์เมล WildDuck เซิร์ฟเวอร์นี้ใช้งาน IMAP4rev1 (RFC 3501) พร้อมการรองรับบางส่วนสำหรับส่วนขยาย IMAP4rev2 (RFC 9051)
ฟังก์ชัน IMAP ของ Forward Email ถูกจัดเตรียมโดย WildDuck ซึ่งเป็นไลบรารีที่ใช้ โดย RFC อีเมลต่อไปนี้ได้รับการรองรับ:
| RFC | ชื่อเรื่อง | หมายเหตุการใช้งาน |
|---|---|---|
| RFC 3501 | Internet Message Access Protocol (IMAP) - Version 4rev1 | รองรับเต็มรูปแบบพร้อมความแตกต่างที่ตั้งใจไว้ (ดูด้านล่าง) |
| RFC 2177 | คำสั่ง IMAP4 IDLE | การแจ้งเตือนแบบ push |
| RFC 2342 | IMAP4 Namespace | การรองรับ namespace ของกล่องจดหมาย |
| RFC 2087 | ส่วนขยาย IMAP4 QUOTA | การจัดการโควต้าพื้นที่จัดเก็บ |
| RFC 2971 | ส่วนขยาย IMAP4 ID | การระบุไคลเอนต์/เซิร์ฟเวอร์ |
| RFC 5161 | ส่วนขยาย IMAP4 ENABLE | เปิดใช้งานส่วนขยาย IMAP |
| RFC 4959 | ส่วนขยาย IMAP สำหรับ SASL Initial Client Response (SASL-IR) | การตอบสนองเริ่มต้นของไคลเอนต์ |
| RFC 3691 | คำสั่ง IMAP4 UNSELECT | ปิดกล่องจดหมายโดยไม่ต้อง EXPUNGE |
| RFC 4315 | ส่วนขยาย IMAP UIDPLUS | คำสั่ง UID ที่ปรับปรุง |
| RFC 7162 | ส่วนขยาย IMAP: การเปลี่ยนแปลงแฟล็กอย่างรวดเร็ว (CONDSTORE) | การจัดเก็บแบบมีเงื่อนไข |
| RFC 6154 | ส่วนขยาย IMAP LIST สำหรับกล่องจดหมายใช้งานพิเศษ | คุณสมบัติพิเศษของกล่องจดหมาย |
| RFC 6851 | ส่วนขยาย IMAP MOVE | คำสั่ง MOVE แบบอะตอม |
| RFC 6855 | การรองรับ IMAP สำหรับ UTF-8 | รองรับ UTF-8 |
| RFC 3348 | ส่วนขยาย IMAP4 Child Mailbox | ข้อมูลกล่องจดหมายลูก |
| RFC 7889 | ส่วนขยาย IMAP4 สำหรับการโฆษณาขนาดอัปโหลดสูงสุด (APPENDLIMIT) | ขนาดอัปโหลดสูงสุด |
| ส่วนขยาย IMAP ที่รองรับ: |
| Extension | RFC | Status | Description |
|---|---|---|---|
| IDLE | RFC 2177 | ✅ Supported | การแจ้งเตือนแบบพุช |
| NAMESPACE | RFC 2342 | ✅ Supported | การรองรับ namespace ของกล่องจดหมาย |
| QUOTA | RFC 2087 | ✅ Supported | การจัดการโควต้าเก็บข้อมูล |
| ID | RFC 2971 | ✅ Supported | การระบุไคลเอนต์/เซิร์ฟเวอร์ |
| ENABLE | RFC 5161 | ✅ Supported | เปิดใช้งานส่วนขยาย IMAP |
| SASL-IR | RFC 4959 | ✅ Supported | การตอบสนองไคลเอนต์เริ่มต้น |
| UNSELECT | RFC 3691 | ✅ Supported | ปิดกล่องจดหมายโดยไม่ใช้ EXPUNGE |
| UIDPLUS | RFC 4315 | ✅ Supported | คำสั่ง UID ที่ปรับปรุงแล้ว |
| CONDSTORE | RFC 7162 | ✅ Supported | การจัดเก็บแบบมีเงื่อนไข |
| SPECIAL-USE | RFC 6154 | ✅ Supported | คุณสมบัติพิเศษของกล่องจดหมาย |
| MOVE | RFC 6851 | ✅ Supported | คำสั่ง MOVE แบบอะตอมิก |
| UTF8=ACCEPT | RFC 6855 | ✅ Supported | รองรับ UTF-8 |
| CHILDREN | RFC 3348 | ✅ Supported | ข้อมูลกล่องจดหมายย่อย |
| APPENDLIMIT | RFC 7889 | ✅ Supported | ขนาดอัปโหลดสูงสุด |
| XLIST | Non-standard | ✅ Supported | รายการโฟลเดอร์ที่เข้ากันได้กับ Gmail |
| XAPPLEPUSHSERVICE | Non-standard | ✅ Supported | บริการแจ้งเตือนพุชของ Apple |
ความแตกต่างของโปรโตคอล IMAP จากข้อกำหนด RFC
Warning
ความแตกต่างจากข้อกำหนด RFC ต่อไปนี้อาจส่งผลต่อความเข้ากันได้ของไคลเอนต์
Forward Email ตั้งใจเบี่ยงเบนจากข้อกำหนด RFC บางส่วนของ IMAP ความแตกต่างเหล่านี้สืบทอดมาจาก WildDuck และได้บันทึกไว้ดังนี้:
- ไม่มีแฟล็ก \Recent: แฟล็ก
\Recentไม่ได้ถูกใช้งาน ข้อความทั้งหมดจะถูกส่งกลับโดยไม่มีแฟล็กนี้ - RENAME ไม่ส่งผลต่อโฟลเดอร์ย่อย: เมื่อเปลี่ยนชื่อโฟลเดอร์ โฟลเดอร์ย่อยจะไม่ถูกเปลี่ยนชื่อโดยอัตโนมัติ โครงสร้างโฟลเดอร์ในฐานข้อมูลเป็นแบบแบน
- ไม่สามารถเปลี่ยนชื่อ INBOX ได้: RFC 3501 อนุญาตให้เปลี่ยนชื่อ INBOX แต่ Forward Email ห้ามอย่างชัดเจน ดูได้ที่ ซอร์สโค้ด WildDuck
- ไม่มีการตอบกลับ FLAGS แบบไม่ร้องขอ: เมื่อแฟล็กถูกเปลี่ยน จะไม่มีการส่ง FLAGS ตอบกลับแบบไม่ร้องขอไปยังไคลเอนต์
- STORE คืนค่า NO สำหรับข้อความที่ถูกลบ: การพยายามแก้ไขแฟล็กของข้อความที่ถูกลบจะคืนค่า NO แทนที่จะเพิกเฉยอย่างเงียบ ๆ
- ละเลย CHARSET ในคำสั่ง SEARCH: อาร์กิวเมนต์
CHARSETในคำสั่ง SEARCH จะถูกละเลย การค้นหาทั้งหมดใช้ UTF-8 - ละเลย metadata MODSEQ: metadata
MODSEQในคำสั่ง STORE จะถูกละเลย - SEARCH TEXT และ SEARCH BODY: Forward Email ใช้ SQLite FTS5 (การค้นหาข้อความเต็ม) แทนการค้นหา
$textของ MongoDB ซึ่งให้:- รองรับตัวดำเนินการ
NOT(MongoDB ไม่รองรับ) - ผลลัพธ์การค้นหาที่จัดอันดับ
- ประสิทธิภาพการค้นหาต่ำกว่า 100ms บนกล่องจดหมายขนาดใหญ่
- รองรับตัวดำเนินการ
- พฤติกรรม Autoexpunge: ข้อความที่ถูกทำเครื่องหมายด้วย
\Deletedจะถูกลบออกโดยอัตโนมัติเมื่อปิดกล่องจดหมาย - ความสมบูรณ์ของข้อความ: การแก้ไขข้อความบางอย่างอาจไม่รักษาโครงสร้างข้อความต้นฉบับอย่างแม่นยำ
การรองรับ IMAP4rev2 แบบบางส่วน:
Forward Email ใช้ IMAP4rev1 (RFC 3501) พร้อมการรองรับ IMAP4rev2 (RFC 9051) แบบบางส่วน ฟีเจอร์ IMAP4rev2 ต่อไปนี้ ยังไม่รองรับ:
- LIST-STATUS - คำสั่ง LIST และ STATUS รวมกัน
- LITERAL- - ตัวอักษรแบบไม่ซิงโครไนซ์ (แบบลบ)
- OBJECTID - ตัวระบุวัตถุเฉพาะ
- SAVEDATE - แอตทริบิวต์วันที่บันทึก
- REPLACE - การแทนที่ข้อความแบบอะตอมิก
- UNAUTHENTICATE - ปิดการยืนยันตัวตนโดยไม่ปิดการเชื่อมต่อ
การจัดการโครงสร้างเนื้อหาที่ผ่อนคลาย:
Forward Email ใช้การจัดการ "โครงสร้างเนื้อหาที่ผ่อนคลาย" สำหรับโครงสร้าง MIME ที่ผิดรูป ซึ่งอาจแตกต่างจากการตีความ RFC อย่างเข้มงวด วิธีนี้ช่วยเพิ่มความเข้ากันได้กับอีเมลในโลกจริงที่ไม่ได้เป็นไปตามมาตรฐานอย่างสมบูรณ์แบบ ส่วนขยาย METADATA (RFC 5464):
ส่วนขยาย IMAP METADATA ไม่รองรับ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับส่วนขยายนี้ ดูที่ RFC 5464 การอภิปรายเกี่ยวกับการเพิ่มฟีเจอร์นี้สามารถดูได้ที่ WildDuck Issue #937
ส่วนขยาย IMAP ที่ไม่รองรับ
ส่วนขยาย IMAP ต่อไปนี้จาก IANA IMAP Capabilities Registry ไม่รองรับ:
| RFC | ชื่อเรื่อง | เหตุผล |
|---|---|---|
| RFC 2086 | ส่วนขยาย IMAP4 ACL | โฟลเดอร์ที่แชร์ยังไม่ถูกนำมาใช้ ดูที่ WildDuck Issue #427 |
| RFC 5256 | ส่วนขยาย IMAP SORT และ THREAD | การจัดกลุ่มข้อความ (threading) ถูกนำมาใช้ภายในแต่ไม่ผ่านโปรโตคอล RFC 5256 ดูที่ WildDuck Issue #12 |
| RFC 5162 | ส่วนขยาย IMAP4 สำหรับการซิงโครไนซ์กล่องจดหมายอย่างรวดเร็ว (QRESYNC) | ยังไม่ถูกนำมาใช้ |
| RFC 5464 | ส่วนขยาย IMAP METADATA | การดำเนินการ metadata ถูกละเลย ดูที่ เอกสาร WildDuck |
| RFC 5258 | ส่วนขยายคำสั่ง IMAP4 LIST | ยังไม่ถูกนำมาใช้ |
| RFC 5267 | Contexts สำหรับ IMAP4 | ยังไม่ถูกนำมาใช้ |
| RFC 5465 | ส่วนขยาย IMAP NOTIFY | ยังไม่ถูกนำมาใช้ |
| RFC 5466 | ส่วนขยาย IMAP4 FILTERS | ยังไม่ถูกนำมาใช้ |
| RFC 6203 | ส่วนขยาย IMAP4 สำหรับการค้นหาแบบฟัซซี่ (Fuzzy Search) | ยังไม่ถูกนำมาใช้ |
| RFC 6785 | คำแนะนำการใช้งาน IMAP4 | คำแนะนำยังไม่ถูกปฏิบัติตามอย่างครบถ้วน |
| RFC 7162 | ส่วนขยาย IMAP: การซิงโครไนซ์การเปลี่ยนแปลงแฟล็กอย่างรวดเร็ว (CONDSTORE) และการซิงโครไนซ์กล่องจดหมายอย่างรวดเร็ว (QRESYNC) | ยังไม่ถูกนำมาใช้ |
| RFC 8437 | ส่วนขยาย IMAP UNAUTHENTICATE สำหรับการใช้การเชื่อมต่อซ้ำ | ยังไม่ถูกนำมาใช้ |
| RFC 8438 | ส่วนขยาย IMAP สำหรับ STATUS=SIZE | ยังไม่ถูกนำมาใช้ |
| RFC 8457 | คีย์เวิร์ด IMAP "$Important" และแอตทริบิวต์การใช้งานพิเศษ "\Important" | ยังไม่ถูกนำมาใช้ |
| RFC 8474 | ส่วนขยาย IMAP สำหรับตัวระบุวัตถุ (Object Identifiers) | ยังไม่ถูกนำมาใช้ |
| RFC 9051 | โปรโตคอลการเข้าถึงข้อความอินเทอร์เน็ต (IMAP) - เวอร์ชัน 4rev2 | Forward Email ใช้ IMAP4rev1 (RFC 3501) |
โปรโตคอลอีเมล POP3 และส่วนขยาย
Note
Forward Email รองรับ POP3 (RFC 1939) พร้อมส่วนขยายมาตรฐานสำหรับการดึงอีเมล
ฟังก์ชัน POP3 ของ Forward Email ถูกจัดเตรียมโดย WildDuck ที่เป็น dependency รองรับ RFC อีเมลดังต่อไปนี้:
| RFC | ชื่อเรื่อง | หมายเหตุการใช้งาน |
|---|---|---|
| RFC 1939 | Post Office Protocol - Version 3 (POP3) | รองรับเต็มรูปแบบพร้อมความแตกต่างที่ตั้งใจไว้ (ดูด้านล่าง) |
| RFC 2595 | การใช้ TLS กับ IMAP, POP3 และ ACAP | รองรับ STARTTLS |
| RFC 2449 | กลไกส่วนขยาย POP3 | รองรับคำสั่ง CAPA |
Forward Email ให้การสนับสนุน POP3 สำหรับไคลเอนต์ที่ชอบโปรโตคอลที่ง่ายกว่านี้แทน IMAP POP3 เหมาะสำหรับผู้ใช้ที่ต้องการดาวน์โหลดอีเมลไปยังอุปกรณ์เดียวและลบออกจากเซิร์ฟเวอร์
ส่วนขยาย POP3 ที่รองรับ:
| ส่วนขยาย | RFC | สถานะ | คำอธิบาย |
|---|---|---|---|
| TOP | RFC 1939 | ✅ รองรับ | ดึงหัวข้อข้อความ |
| USER | RFC 1939 | ✅ รองรับ | การยืนยันตัวตนด้วยชื่อผู้ใช้ |
| UIDL | RFC 1939 | ✅ รองรับ | ตัวระบุข้อความเฉพาะ |
| EXPIRE | RFC 2449 | ✅ รองรับ | นโยบายหมดอายุข้อความ |
ความแตกต่างของโปรโตคอล POP3 จากข้อกำหนด RFC
Warning
POP3 มีข้อจำกัดโดยธรรมชาติเมื่อเทียบกับ IMAP
Important
ความแตกต่างสำคัญ: พฤติกรรม POP3 DELE ของ Forward Email กับ WildDuck
Forward Email ใช้การลบถาวรตาม RFC สำหรับคำสั่ง POP3 DELE ต่างจาก WildDuck ที่ย้ายข้อความไปยังถังขยะ
พฤติกรรมของ Forward Email (ซอร์สโค้ด):
DELE→QUITลบข้อความถาวร- ปฏิบัติตามข้อกำหนด RFC 1939 อย่างเคร่งครัด
- พฤติกรรมเหมือนกับ Dovecot (ค่าเริ่มต้น), Postfix และเซิร์ฟเวอร์ที่เป็นไปตามมาตรฐานอื่นๆ
พฤติกรรมของ WildDuck (อภิปราย):
DELE→QUITย้ายข้อความไปยังถังขยะ (เหมือน Gmail)- การออกแบบโดยตั้งใจเพื่อความปลอดภัยของผู้ใช้
- ไม่เป็นไปตาม RFC แต่ป้องกันการสูญหายของข้อมูลโดยไม่ตั้งใจ
เหตุผลที่ Forward Email แตกต่าง:
- ปฏิบัติตาม RFC: ยึดตามข้อกำหนด RFC 1939
- ความคาดหวังของผู้ใช้: กระบวนการดาวน์โหลดและลบคาดหวังการลบถาวร
- การจัดการพื้นที่เก็บข้อมูล: คืนพื้นที่ดิสก์อย่างเหมาะสม
- ความเข้ากันได้: สอดคล้องกับเซิร์ฟเวอร์อื่นที่เป็นไปตาม RFC
Note
การแสดงรายการข้อความ POP3: Forward Email แสดงรายการข้อความทั้งหมดจาก INBOX โดยไม่มีข้อจำกัด แตกต่างจาก WildDuck ที่จำกัดไว้ที่ 250 ข้อความโดยค่าเริ่มต้น ดู ซอร์สโค้ด
การเข้าถึงอุปกรณ์เดียว:
POP3 ถูกออกแบบมาเพื่อการเข้าถึงอุปกรณ์เดียว ข้อความมักจะถูกดาวน์โหลดและลบออกจากเซิร์ฟเวอร์ ทำให้ไม่เหมาะสำหรับการซิงโครไนซ์หลายอุปกรณ์
ไม่มีการสนับสนุนโฟลเดอร์:
POP3 เข้าถึงได้เฉพาะโฟลเดอร์ INBOX เท่านั้น โฟลเดอร์อื่นๆ (ส่ง, ฉบับร่าง, ถังขยะ ฯลฯ) ไม่สามารถเข้าถึงผ่าน POP3 ได้
การจัดการข้อความที่จำกัด:
POP3 ให้การดึงและลบข้อความพื้นฐาน ฟีเจอร์ขั้นสูงเช่น การติดธง, การย้าย หรือการค้นหาข้อความไม่มีให้ใช้งาน
ส่วนขยาย POP3 ที่ไม่รองรับ
ส่วนขยาย POP3 ต่อไปนี้จาก IANA POP3 Extension Mechanism Registry ไม่ได้รับการสนับสนุน:
| RFC | หัวข้อ | เหตุผล |
|---|---|---|
| RFC 6856 | โปรโตคอลไปรษณีย์เวอร์ชัน 3 (POP3) รองรับ UTF-8 | ไม่ได้ถูกนำไปใช้ในเซิร์ฟเวอร์ WildDuck POP3 |
| RFC 2595 | คำสั่ง STLS | รองรับเฉพาะ STARTTLS ไม่รองรับ STLS |
| RFC 3206 | รหัสตอบกลับ SYS และ AUTH POP | ไม่ได้ถูกนำไปใช้ |
โปรโตคอลอีเมล SMTP และส่วนขยาย
Note
Forward Email รองรับ SMTP (RFC 5321) พร้อมส่วนขยายสมัยใหม่สำหรับการส่งอีเมลที่ปลอดภัยและเชื่อถือได้
ฟังก์ชัน SMTP ของ Forward Email ถูกจัดเตรียมโดยหลายส่วนประกอบ: smtp-server (nodemailer), zone-mta, และการใช้งานที่กำหนดเอง RFC อีเมลต่อไปนี้ได้รับการสนับสนุน:
| RFC | หัวข้อ | หมายเหตุการใช้งาน |
|---|---|---|
| RFC 5321 | โปรโตคอลส่งเมลอย่างง่าย (SMTP) | รองรับเต็มรูปแบบ |
| RFC 3207 | ส่วนขยายบริการ SMTP สำหรับ SMTP ที่ปลอดภัยผ่าน Transport Layer Security (STARTTLS) | รองรับ TLS/SSL |
| RFC 4954 | ส่วนขยายบริการ SMTP สำหรับการพิสูจน์ตัวตน (AUTH) | PLAIN, LOGIN, CRAM-MD5, XOAUTH2 |
| RFC 6531 | ส่วนขยาย SMTP สำหรับอีเมลที่รองรับสากล (SMTPUTF8) | รองรับที่อยู่อีเมลยูนิโค้ดโดยตรง |
| RFC 3461 | ส่วนขยายบริการ SMTP สำหรับการแจ้งสถานะการส่ง (DSN) | รองรับ DSN เต็มรูปแบบ |
| RFC 3463 | รหัสสถานะระบบเมลที่ปรับปรุงแล้ว | รหัสสถานะที่ปรับปรุงในคำตอบ |
| RFC 1870 | ส่วนขยายบริการ SMTP สำหรับการประกาศขนาดข้อความ (SIZE) | ประกาศขนาดข้อความสูงสุด |
| RFC 2920 | ส่วนขยายบริการ SMTP สำหรับการส่งคำสั่งแบบต่อเนื่อง (PIPELINING) | รองรับการส่งคำสั่งแบบต่อเนื่อง |
| RFC 1652 | ส่วนขยายบริการ SMTP สำหรับการส่ง MIME แบบ 8 บิต (8BITMIME) | รองรับ MIME แบบ 8 บิต |
| RFC 6152 | ส่วนขยายบริการ SMTP สำหรับการส่ง MIME แบบ 8 บิต | รองรับ MIME แบบ 8 บิต |
| RFC 2034 | ส่วนขยายบริการ SMTP สำหรับการส่งรหัสข้อผิดพลาดที่ปรับปรุงแล้ว (ENHANCEDSTATUSCODES) | รหัสสถานะที่ปรับปรุง |
Forward Email ใช้งานเซิร์ฟเวอร์ SMTP ที่มีฟีเจอร์ครบถ้วนพร้อมรองรับส่วนขยายสมัยใหม่ที่เพิ่มความปลอดภัย ความน่าเชื่อถือ และฟังก์ชันการทำงาน
ส่วนขยาย SMTP ที่รองรับ:
| ส่วนขยาย | RFC | สถานะ | คำอธิบาย |
|---|---|---|---|
| PIPELINING | RFC 2920 | ✅ รองรับ | การส่งคำสั่งแบบต่อเนื่อง |
| SIZE | RFC 1870 | ✅ รองรับ | การประกาศขนาดข้อความ (จำกัด 52MB) |
| ETRN | RFC 1985 | ✅ รองรับ | การประมวลผลคิวระยะไกล |
| STARTTLS | RFC 3207 | ✅ รองรับ | การอัปเกรดเป็น TLS |
| ENHANCEDSTATUSCODES | RFC 2034 | ✅ รองรับ | รหัสสถานะที่ปรับปรุงแล้ว |
| 8BITMIME | RFC 6152 | ✅ รองรับ | การส่ง MIME แบบ 8 บิต |
| DSN | RFC 3461 | ✅ รองรับ | การแจ้งสถานะการส่ง |
| CHUNKING | RFC 3030 | ✅ รองรับ | การส่งข้อความแบบแบ่งส่วน |
| SMTPUTF8 | RFC 6531 | ⚠️ บางส่วน | ที่อยู่อีเมล UTF-8 (บางส่วน) |
| REQUIRETLS | RFC 8689 | ✅ รองรับ | ต้องใช้ TLS สำหรับการส่ง |
การแจ้งสถานะการจัดส่ง (DSN)
Tip
DSN ให้ข้อมูลสถานะการจัดส่งโดยละเอียดสำหรับอีเมลที่ส่งไป
Forward Email รองรับ DSN (RFC 3461) อย่างเต็มที่ ซึ่งช่วยให้ผู้ส่งสามารถขอการแจ้งเตือนสถานะการจัดส่งได้ ฟีเจอร์นี้ให้:
- การแจ้งเตือนความสำเร็จ เมื่อข้อความถูกจัดส่ง
- การแจ้งเตือนความล้มเหลว พร้อมข้อมูลข้อผิดพลาดโดยละเอียด
- การแจ้งเตือนความล่าช้า เมื่อการจัดส่งถูกเลื่อนชั่วคราว
DSN มีประโยชน์โดยเฉพาะสำหรับ:
- ยืนยันการจัดส่งข้อความสำคัญ
- แก้ไขปัญหาการจัดส่ง
- ระบบประมวลผลอีเมลอัตโนมัติ
- ข้อกำหนดการปฏิบัติตามและการตรวจสอบ
การสนับสนุน REQUIRETLS
Important
Forward Email เป็นหนึ่งในผู้ให้บริการไม่กี่รายที่ประกาศและบังคับใช้ REQUIRETLS อย่างชัดเจน
Forward Email รองรับ REQUIRETLS (RFC 8689) ซึ่งรับประกันว่าอีเมลจะถูกจัดส่งผ่านการเชื่อมต่อที่เข้ารหัสด้วย TLS เท่านั้น ซึ่งให้:
- การเข้ารหัสแบบ end-to-end สำหรับเส้นทางการจัดส่งทั้งหมด
- การบังคับใช้ที่ผู้ใช้เห็นได้ ผ่านช่องทำเครื่องหมายในตัวเขียนอีเมล
- การปฏิเสธความพยายามจัดส่งที่ไม่เข้ารหัส
- ความปลอดภัยที่เพิ่มขึ้น สำหรับการสื่อสารที่ละเอียดอ่อน
ส่วนขยาย SMTP ที่ไม่รองรับ
ส่วนขยาย SMTP ต่อไปนี้จาก IANA SMTP Service Extensions Registry ไม่ได้รับการสนับสนุน:
| RFC | ชื่อ | เหตุผล |
|---|---|---|
| RFC 4865 | ส่วนขยายบริการส่ง SMTP สำหรับการปล่อยข้อความในอนาคต (FUTURERELEASE) | ยังไม่ได้นำมาใช้ |
| RFC 6710 | ส่วนขยาย SMTP สำหรับลำดับความสำคัญการส่งข้อความ (MT-PRIORITY) | ยังไม่ได้นำมาใช้ |
| RFC 7293 | ฟิลด์หัวข้อ Require-Recipient-Valid-Since และส่วนขยายบริการ SMTP | ยังไม่ได้นำมาใช้ |
| RFC 7372 | รหัสสถานะการตรวจสอบอีเมล | ยังไม่ได้นำมาใช้เต็มที่ |
| RFC 4468 | ส่วนขยาย BURL สำหรับการส่งข้อความ | ยังไม่ได้นำมาใช้ |
| RFC 3030 | ส่วนขยายบริการ SMTP สำหรับการส่งข้อความ MIME ขนาดใหญ่และไบนารี (CHUNKING, BINARYMIME) | ยังไม่ได้นำมาใช้ |
| RFC 2852 | ส่วนขยายบริการ Deliver By SMTP | ยังไม่ได้นำมาใช้ |
โปรโตคอลอีเมล JMAP
Caution
JMAP ยังไม่รองรับ โดย Forward Email
| RFC | ชื่อ | สถานะ | เหตุผล |
|---|---|---|---|
| RFC 8620 | โปรโตคอล JSON Meta Application (JMAP) | ❌ ไม่รองรับ | Forward Email ใช้ IMAP/POP3/SMTP และ REST API ที่ครอบคลุมแทน |
JMAP (JSON Meta Application Protocol) คือโปรโตคอลอีเมลสมัยใหม่ที่ออกแบบมาเพื่อแทนที่ IMAP
เหตุผลที่ไม่รองรับ JMAP:
"JMAP เป็นสัตว์ร้ายที่ไม่ควรถูกคิดค้น มันพยายามแปลง TCP/IMAP (ซึ่งเป็นโปรโตคอลที่แย่ตามมาตรฐานปัจจุบัน) เป็น HTTP/JSON โดยใช้การขนส่งที่ต่างกันแต่ยังคงจิตวิญญาณเดิมไว้" — Andris Reinman, HN Discussion "JMAP มีอายุมากกว่า 10 ปีแล้ว และแทบจะไม่มีการนำไปใช้เลย" – Andris Reinman, GitHub Discussion
ดูความคิดเห็นเพิ่มเติมได้ที่ https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=jmap andris&sort=byDate&type=comment
Forward Email ปัจจุบันมุ่งเน้นการให้บริการ IMAP, POP3 และ SMTP ที่ยอดเยี่ยม พร้อมกับ REST API ครบวงจรสำหรับการจัดการอีเมล การสนับสนุน JMAP อาจพิจารณาในอนาคตตามความต้องการของผู้ใช้และการนำไปใช้ในระบบนิเวศ
ทางเลือก: Forward Email มี Complete REST API ที่มี 39 endpoints ซึ่งให้ฟังก์ชันการทำงานที่คล้ายกับ JMAP สำหรับการเข้าถึงอีเมลแบบโปรแกรมมิ่ง
ความปลอดภัยของอีเมล
สถาปัตยกรรมความปลอดภัยของอีเมล
โปรโตคอลการตรวจสอบสิทธิ์ข้อความอีเมล
Note
Forward Email ใช้โปรโตคอลการตรวจสอบสิทธิ์อีเมลหลักทั้งหมดเพื่อป้องกันการปลอมแปลงและรับประกันความสมบูรณ์ของข้อความ
Forward Email ใช้ไลบรารี mailauth สำหรับการตรวจสอบสิทธิ์อีเมล รองรับ RFC ดังต่อไปนี้:
| RFC | ชื่อเรื่อง | หมายเหตุการใช้งาน |
|---|---|---|
| RFC 6376 | ลายเซ็น DomainKeys Identified Mail (DKIM) | การลงลายเซ็นและตรวจสอบ DKIM แบบเต็มรูปแบบ |
| RFC 8463 | วิธีการลงลายเซ็นเข้ารหัสใหม่สำหรับ DKIM (Ed25519-SHA256) | รองรับอัลกอริทึมการลงลายเซ็น RSA-SHA256 และ Ed25519-SHA256 |
| RFC 7208 | กรอบนโยบายผู้ส่ง (SPF) | การตรวจสอบระเบียน SPF |
| RFC 7489 | การตรวจสอบสิทธิ์ข้อความตามโดเมน การรายงาน และการปฏิบัติตามนโยบาย (DMARC) | การบังคับใช้นโยบาย DMARC |
| RFC 8617 | โซ่การรับรองสิทธิ์ที่ตรวจสอบแล้ว (ARC) | การปิดผนึกและตรวจสอบ ARC |
โปรโตคอลการตรวจสอบสิทธิ์อีเมลช่วยยืนยันว่า ข้อความมาจากผู้ส่งที่อ้างสิทธิ์จริงและไม่ได้ถูกแก้ไขระหว่างทาง
การสนับสนุนโปรโตคอลการตรวจสอบสิทธิ์
| โปรโตคอล | RFC | สถานะ | คำอธิบาย |
|---|---|---|---|
| DKIM | RFC 6376 | ✅ สนับสนุน | DomainKeys Identified Mail - ลายเซ็นเข้ารหัส |
| SPF | RFC 7208 | ✅ สนับสนุน | กรอบนโยบายผู้ส่ง - การอนุญาตที่อยู่ IP |
| DMARC | RFC 7489 | ✅ สนับสนุน | การตรวจสอบสิทธิ์ข้อความตามโดเมน - การบังคับใช้นโยบาย |
| ARC | RFC 8617 | ✅ สนับสนุน | โซ่การรับรองสิทธิ์ที่ตรวจสอบแล้ว - รักษาการตรวจสอบสิทธิ์ข้ามการส่งต่อ |
DKIM (DomainKeys Identified Mail)
DKIM เพิ่มลายเซ็นเข้ารหัสไปยังส่วนหัวของอีเมล ช่วยให้ผู้รับสามารถตรวจสอบได้ว่าข้อความได้รับอนุญาตจากเจ้าของโดเมนและไม่ได้ถูกแก้ไขระหว่างทาง
Forward Email ใช้ mailauth สำหรับการลงลายเซ็นและการตรวจสอบ DKIM
คุณสมบัติหลัก:
- การลงลายเซ็น DKIM อัตโนมัติสำหรับข้อความขาออกทั้งหมด
- รองรับคีย์ RSA และ Ed25519
- รองรับตัวเลือกหลายตัว
- การตรวจสอบ DKIM สำหรับข้อความขาเข้า
SPF (Sender Policy Framework)
SPF ช่วยให้เจ้าของโดเมนกำหนดได้ว่า IP ใดได้รับอนุญาตให้ส่งอีเมลในนามของโดเมนของตน
คุณสมบัติหลัก:
- การตรวจสอบระเบียน SPF สำหรับข้อความขาเข้า
- การตรวจสอบ SPF อัตโนมัติพร้อมผลลัพธ์โดยละเอียด
- รองรับกลไก include, redirect และ all
- นโยบาย SPF ที่กำหนดได้ต่อโดเมน
DMARC (Domain-based Message Authentication, Reporting & Conformance)
DMARC สร้างขึ้นบน SPF และ DKIM เพื่อให้มีการบังคับใช้นโยบายและรายงาน
คุณสมบัติหลัก:
- การบังคับใช้นโยบาย DMARC (none, quarantine, reject)
- การตรวจสอบความสอดคล้องของ SPF และ DKIM
- รายงานสรุป DMARC
- นโยบาย DMARC ต่อโดเมน
ARC (Authenticated Received Chain)
ARC รักษาผลลัพธ์การตรวจสอบอีเมลไว้แม้ผ่านการส่งต่อและการแก้ไขรายการเมล
Forward Email ใช้ไลบรารี mailauth สำหรับการตรวจสอบและประทับตรา ARC
คุณสมบัติหลัก:
- การประทับตรา ARC สำหรับข้อความที่ถูกส่งต่อ
- การตรวจสอบ ARC สำหรับข้อความขาเข้า
- การตรวจสอบห่วงโซ่ผ่านหลายจุดส่งต่อ
- รักษาผลลัพธ์การตรวจสอบเดิมไว้
Authentication Flow
Email Transport Security Protocols
Important
Forward Email ใช้ชั้นความปลอดภัยหลายชั้นสำหรับการส่งข้อมูลเพื่อปกป้องอีเมลในระหว่างการส่ง
Forward Email ใช้โปรโตคอลความปลอดภัยการส่งข้อมูลสมัยใหม่:
| RFC | Title | Status | Implementation Notes |
|---|---|---|---|
| RFC 8461 | SMTP MTA Strict Transport Security (MTA-STS) | ✅ Supported | ใช้งานอย่างกว้างขวางบนเซิร์ฟเวอร์ IMAP, SMTP และ MX ดูได้ที่ create-mta-sts-cache.js และ get-transporter.js |
| RFC 8460 | SMTP TLS Reporting | ✅ Supported | ผ่านไลบรารี mailauth |
| RFC 7671 | The DNS-Based Authentication of Named Entities (DANE) Protocol: Updates and Operational Guidance | ✅ Supported | การตรวจสอบ DANE เต็มรูปแบบสำหรับการเชื่อมต่อ SMTP ขาออก ดูได้ที่ mx-connect PR #22 |
| RFC 6698 | The DNS-Based Authentication of Named Entities (DANE) Transport Layer Security (TLS) Protocol: TLSA | ✅ Supported | รองรับ RFC 6698 เต็มรูปแบบ: ประเภทการใช้งาน PKIX-TA, PKIX-EE, DANE-TA, DANE-EE ดูได้ที่ mx-connect PR #22 |
| RFC 8314 | Cleartext Considered Obsolete: Use of Transport Layer Security (TLS) for Email Submission and Access | ✅ Supported | ต้องใช้ TLS สำหรับการเชื่อมต่อทั้งหมด |
| RFC 8689 | SMTP Service Extension for Requiring TLS (REQUIRETLS) | ✅ Supported | รองรับเต็มรูปแบบสำหรับส่วนขยาย SMTP REQUIRETLS และส่วนหัว "TLS-Required" |
| โปรโตคอลความปลอดภัยการส่งข้อมูลช่วยให้มั่นใจได้ว่าข้อความอีเมลถูกเข้ารหัสและตรวจสอบความถูกต้องในระหว่างการส่งผ่านระหว่างเซิร์ฟเวอร์เมล |
การสนับสนุนความปลอดภัยการส่งข้อมูล
| โปรโตคอล | RFC | สถานะ | คำอธิบาย |
|---|---|---|---|
| TLS | RFC 8314 | ✅ สนับสนุน | Transport Layer Security - การเชื่อมต่อที่เข้ารหัส |
| MTA-STS | RFC 8461 | ✅ สนับสนุน | Mail Transfer Agent Strict Transport Security |
| DANE | RFC 7671 | ✅ สนับสนุน | DNS-based Authentication of Named Entities |
| REQUIRETLS | RFC 8689 | ✅ สนับสนุน | ต้องใช้ TLS ตลอดเส้นทางการส่ง |
TLS (Transport Layer Security)
Forward Email บังคับใช้การเข้ารหัส TLS สำหรับการเชื่อมต่ออีเมลทั้งหมด (SMTP, IMAP, POP3)
คุณสมบัติหลัก:
- รองรับ TLS 1.2 และ TLS 1.3
- การจัดการใบรับรองอัตโนมัติ
- Perfect Forward Secrecy (PFS)
- ใช้ชุดรหัสที่แข็งแกร่งเท่านั้น
MTA-STS (Mail Transfer Agent Strict Transport Security)
MTA-STS ช่วยให้มั่นใจว่าอีเมลจะถูกส่งผ่านการเชื่อมต่อที่เข้ารหัส TLS เท่านั้นโดยการเผยแพร่นโยบายผ่าน HTTPS
Forward Email ใช้ MTA-STS โดยใช้ create-mta-sts-cache.js
คุณสมบัติหลัก:
- การเผยแพร่นโยบาย MTA-STS อัตโนมัติ
- แคชนโยบายเพื่อประสิทธิภาพ
- ป้องกันการโจมตีแบบลดระดับความปลอดภัย (downgrade attack)
- บังคับใช้การตรวจสอบใบรับรอง
DANE (DNS-based Authentication of Named Entities)
Note
Forward Email ตอนนี้ให้การสนับสนุน DANE เต็มรูปแบบสำหรับการเชื่อมต่อ SMTP ขาออก
DANE ใช้ DNSSEC ในการเผยแพร่ข้อมูลใบรับรอง TLS ใน DNS ทำให้เซิร์ฟเวอร์เมลสามารถตรวจสอบใบรับรองได้โดยไม่ต้องพึ่งพาหน่วยงานออกใบรับรอง
คุณสมบัติหลัก:
- ✅ การตรวจสอบ DANE เต็มรูปแบบสำหรับการเชื่อมต่อ SMTP ขาออก
- ✅ รองรับ RFC 6698 เต็มรูปแบบ: ประเภทการใช้งาน PKIX-TA, PKIX-EE, DANE-TA, DANE-EE
- ✅ การตรวจสอบใบรับรองกับระเบียน TLSA ในระหว่างการอัปเกรด TLS
- ✅ การแก้ไข TLSA แบบขนานสำหรับโฮสต์ MX หลายตัว
- ✅ ตรวจจับอัตโนมัติ
dns.resolveTlsaแบบเนทีฟ (Node.js v22.15.0+, v23.9.0+) - ✅ รองรับตัวแก้ไขแบบกำหนดเองสำหรับ Node.js เวอร์ชันเก่าผ่าน Tangerine
- ต้องใช้โดเมนที่เซ็นชื่อด้วย DNSSEC
Tip
รายละเอียดการใช้งาน: การสนับสนุน DANE ถูกเพิ่มผ่าน mx-connect PR #22 ซึ่งให้การสนับสนุน DANE/TLSA ครบถ้วนสำหรับการเชื่อมต่อ SMTP ขาออก
REQUIRETLS
Tip
Forward Email เป็นหนึ่งในผู้ให้บริการไม่กี่รายที่มีการสนับสนุน REQUIRETLS สำหรับผู้ใช้
REQUIRETLS ช่วยให้มั่นใจว่าอีเมลจะถูกส่งผ่านการเชื่อมต่อที่เข้ารหัส TLS ตลอดเส้นทางการส่ง
คุณสมบัติหลัก:
- ช่องทำเครื่องหมายสำหรับผู้ใช้ในตัวเขียนอีเมล
- ปฏิเสธการส่งที่ไม่ได้เข้ารหัสโดยอัตโนมัติ
- บังคับใช้ TLS แบบครบวงจร
- แจ้งเตือนความล้มเหลวอย่างละเอียด
Tip
การบังคับใช้ TLS สำหรับผู้ใช้: Forward Email มีช่องทำเครื่องหมายใน บัญชีของฉัน > โดเมน > การตั้งค่า เพื่อบังคับใช้ TLS สำหรับการเชื่อมต่อขาเข้าทั้งหมด เมื่อเปิดใช้งาน ฟีเจอร์นี้จะปฏิเสธอีเมลขาเข้าที่ไม่ได้ส่งผ่านการเชื่อมต่อที่เข้ารหัส TLS ด้วยรหัสข้อผิดพลาด 530 เพื่อให้มั่นใจว่าอีเมลขาเข้าทั้งหมดถูกเข้ารหัสในระหว่างการส่ง
โฟลว์ความปลอดภัยการส่งข้อมูล
การเข้ารหัสข้อความอีเมล
Note
Forward Email รองรับทั้ง OpenPGP และ S/MIME สำหรับการเข้ารหัสอีเมลแบบ end-to-end
Forward Email รองรับการเข้ารหัส OpenPGP และ S/MIME:
| RFC | ชื่อเรื่อง | สถานะ | หมายเหตุการใช้งาน |
|---|---|---|---|
| RFC 9580 | OpenPGP (แทนที่ RFC 4880) | ✅ รองรับ | ผ่านการผสานรวม OpenPGP.js v6+ ดูที่ FAQ |
| RFC 8551 | Secure/Multipurpose Internet Mail Extensions (S/MIME) เวอร์ชัน 4.0 ข้อกำหนดข้อความ | ✅ รองรับ | รองรับทั้งอัลกอริทึม RSA และ ECC ดูที่ FAQ |
โปรโตคอลการเข้ารหัสข้อความช่วยปกป้องเนื้อหาอีเมลจากการถูกอ่านโดยบุคคลอื่นนอกจากผู้รับที่ตั้งใจไว้ แม้ว่าข้อความจะถูกดักจับระหว่างทางก็ตาม
การรองรับการเข้ารหัส
| โปรโตคอล | RFC | สถานะ | คำอธิบาย |
|---|---|---|---|
| OpenPGP | RFC 9580 | ✅ รองรับ | Pretty Good Privacy - การเข้ารหัสกุญแจสาธารณะ |
| S/MIME | RFC 8551 | ✅ รองรับ | Secure/Multipurpose Internet Mail Extensions |
| WKD | Draft | ✅ รองรับ | Web Key Directory - การค้นหากุญแจอัตโนมัติ |
OpenPGP (Pretty Good Privacy)
OpenPGP ให้การเข้ารหัสแบบ end-to-end โดยใช้การเข้ารหัสกุญแจสาธารณะ Forward Email รองรับ OpenPGP ผ่านโปรโตคอล Web Key Directory (WKD)
คุณสมบัติหลัก:
- ค้นหากุญแจอัตโนมัติผ่าน WKD
- รองรับ PGP/MIME สำหรับไฟล์แนบที่เข้ารหัส
- การจัดการกุญแจผ่านโปรแกรมอีเมล
- เข้ากันได้กับ GPG, Mailvelope และเครื่องมือ OpenPGP อื่นๆ
วิธีใช้งาน:
- สร้างคู่กุญแจ PGP ในโปรแกรมอีเมลของคุณ
- อัปโหลดกุญแจสาธารณะของคุณไปยัง WKD ของ Forward Email
- กุญแจของคุณจะถูกค้นหาได้โดยอัตโนมัติโดยผู้ใช้รายอื่น
- ส่งและรับอีเมลที่เข้ารหัสได้อย่างราบรื่น
S/MIME (Secure/Multipurpose Internet Mail Extensions)
S/MIME ให้การเข้ารหัสอีเมลและลายเซ็นดิจิทัลโดยใช้ใบรับรอง X.509
คุณสมบัติหลัก:
- การเข้ารหัสโดยใช้ใบรับรอง
- ลายเซ็นดิจิทัลสำหรับการตรวจสอบข้อความ
- รองรับโดยโปรแกรมอีเมลส่วนใหญ่โดยตรง
- ความปลอดภัยระดับองค์กร
วิธีใช้งาน:
- ขอใบรับรอง S/MIME จากหน่วยงานออกใบรับรอง
- ติดตั้งใบรับรองในโปรแกรมอีเมลของคุณ
- ตั้งค่าโปรแกรมให้เข้ารหัส/ลงลายเซ็นข้อความ
- แลกเปลี่ยนใบรับรองกับผู้รับ
การเข้ารหัสกล่องจดหมาย SQLite
Important
Forward Email มอบชั้นความปลอดภัยเพิ่มเติมด้วยการเข้ารหัสกล่องจดหมาย SQLite
นอกเหนือจากการเข้ารหัสระดับข้อความแล้ว Forward Email ยังเข้ารหัสกล่องจดหมายทั้งหมดโดยใช้ sqleet (ChaCha20-Poly1305)
คุณสมบัติหลัก:
- การเข้ารหัสด้วยรหัสผ่าน - มีเพียงคุณเท่านั้นที่มีรหัสผ่าน
- ต้านทานควอนตัม - การเข้ารหัส ChaCha20-Poly1305
- ความรู้เป็นศูนย์ - Forward Email ไม่สามารถถอดรหัสกล่องจดหมายของคุณได้
- แยกเป็น sandbox - แต่ละกล่องจดหมายถูกแยกและพกพาได้
- ไม่สามารถกู้คืนได้ - หากคุณลืมรหัสผ่าน กล่องจดหมายของคุณจะสูญหาย
การเปรียบเทียบการเข้ารหัส
| คุณสมบัติ | OpenPGP | S/MIME | การเข้ารหัส SQLite |
|---|---|---|---|
| แบบ End-to-End | ✅ ใช่ | ✅ ใช่ | ✅ ใช่ |
| การจัดการกุญแจ | จัดการเอง | ออกโดย CA | ใช้รหัสผ่าน |
| การรองรับไคลเอนต์ | ต้องใช้ปลั๊กอิน | รองรับในตัว | โปร่งใส |
| กรณีการใช้งาน | ส่วนบุคคล | องค์กร | การจัดเก็บ |
| ต้านทานควอนตัม | ⚠️ ขึ้นกับกุญแจ | ⚠️ ขึ้นกับใบรับรอง | ✅ ใช่ |
กระบวนการเข้ารหัส
ฟังก์ชันขยาย
มาตรฐานรูปแบบข้อความอีเมล
Note
Forward Email รองรับมาตรฐานรูปแบบอีเมลสมัยใหม่สำหรับเนื้อหาที่หลากหลายและการรองรับหลายภาษา
Forward Email รองรับรูปแบบข้อความอีเมลมาตรฐาน:
| RFC | ชื่อเรื่อง | หมายเหตุการใช้งาน |
|---|---|---|
| RFC 5322 | รูปแบบข้อความอินเทอร์เน็ต | รองรับเต็มรูปแบบ |
| RFC 2045 | MIME ตอนที่หนึ่ง: รูปแบบของเนื้อความอินเทอร์เน็ต | รองรับ MIME เต็มรูปแบบ |
| RFC 2046 | MIME ตอนที่สอง: ประเภทสื่อ | รองรับ MIME เต็มรูปแบบ |
| RFC 2047 | MIME ตอนที่สาม: ส่วนขยายหัวข้อข้อความสำหรับข้อความที่ไม่ใช่ ASCII | รองรับ MIME เต็มรูปแบบ |
| RFC 2048 | MIME ตอนที่สี่: ขั้นตอนการลงทะเบียน | รองรับ MIME เต็มรูปแบบ |
| RFC 2049 | MIME ตอนที่ห้า: เกณฑ์การปฏิบัติตามและตัวอย่าง | รองรับ MIME เต็มรูปแบบ |
มาตรฐานรูปแบบอีเมลกำหนดวิธีการจัดโครงสร้าง การเข้ารหัส และการแสดงผลข้อความอีเมล
การรองรับมาตรฐานรูปแบบ
| มาตรฐาน | RFC | สถานะ | คำอธิบาย |
|---|---|---|---|
| MIME | RFC 2045-2049 | ✅ รองรับ | ส่วนขยายอีเมลอินเทอร์เน็ตแบบอเนกประสงค์ |
| SMTPUTF8 | RFC 6531 | ⚠️ รองรับบางส่วน | ที่อยู่อีเมลแบบสากล |
| EAI | RFC 6530 | ⚠️ รองรับบางส่วน | การสากลของที่อยู่อีเมล |
| รูปแบบข้อความ | RFC 5322 | ✅ รองรับ | รูปแบบข้อความอินเทอร์เน็ต |
| ความปลอดภัย MIME | RFC 1847 | ✅ รองรับ | ส่วนประกอบความปลอดภัยสำหรับ MIME |
MIME (ส่วนขยายอีเมลอินเทอร์เน็ตแบบอเนกประสงค์)
MIME ช่วยให้อีเมลประกอบด้วยหลายส่วนที่มีประเภทเนื้อหาต่างกัน (ข้อความ, HTML, ไฟล์แนบ ฯลฯ)
คุณสมบัติ MIME ที่รองรับ:
- ข้อความหลายส่วน (mixed, alternative, related)
- หัวข้อ Content-Type
- การเข้ารหัส Content-Transfer-Encoding (7bit, 8bit, quoted-printable, base64)
- รูปภาพและไฟล์แนบแบบฝังในเนื้อหา
- เนื้อหา HTML ที่หลากหลาย
SMTPUTF8 และการสากลของที่อยู่อีเมล
Warning
การรองรับ SMTPUTF8 เป็นบางส่วน - ไม่ได้ใช้งานฟีเจอร์ทั้งหมดอย่างเต็มที่
SMTPUTF8 อนุญาตให้อีเมลแอดเดรสมีอักขระที่ไม่ใช่ ASCII (เช่น 用户@例え.jp)
สถานะปัจจุบัน:
- ⚠️ รองรับบางส่วนสำหรับอีเมลแอดเดรสที่มีการใช้อักขระนานาชาติ
- ✅ เนื้อหา UTF-8 ในเนื้อความของข้อความ
- ⚠️ รองรับจำกัดสำหรับส่วนท้องถิ่นที่ไม่ใช่ ASCII
โปรโตคอลปฏิทินและรายชื่อ
Note
Forward Email ให้การสนับสนุนเต็มรูปแบบสำหรับ CalDAV และ CardDAV สำหรับการซิงโครไนซ์ปฏิทินและรายชื่อ
Forward Email รองรับ CalDAV และ CardDAV ผ่านไลบรารี caldav-adapter:
| RFC | ชื่อเรื่อง | สถานะ | หมายเหตุการใช้งาน |
|---|---|---|---|
| RFC 4791 | ส่วนขยายปฏิทินสำหรับ WebDAV (CalDAV) | ✅ รองรับ | การเข้าถึงและจัดการปฏิทิน |
| RFC 6352 | CardDAV: ส่วนขยาย vCard สำหรับ WebDAV | ✅ รองรับ | การเข้าถึงและจัดการรายชื่อ |
| RFC 5545 | การกำหนดวัตถุหลักสำหรับการปฏิทินและการนัดหมายบนอินเทอร์เน็ต (iCalendar) | ✅ รองรับ | การสนับสนุนรูปแบบ iCalendar |
| RFC 6350 | การกำหนดรูปแบบ vCard | ✅ รองรับ | การสนับสนุนรูปแบบ vCard 4.0 |
| RFC 6638 | ส่วนขยายการนัดหมายสำหรับ CalDAV | ✅ รองรับ | การนัดหมาย CalDAV พร้อมการสนับสนุน iMIP ดู commit c4d1629 |
| RFC 5546 | โปรโตคอลความสามารถในการทำงานร่วมกันแบบไม่ขึ้นกับการขนส่งของ iCalendar (iTIP) | ✅ รองรับ | การสนับสนุน iTIP สำหรับคำสั่ง REQUEST, REPLY, CANCEL และ VFREEBUSY ดู commit c4d1629 |
| RFC 6047 | โปรโตคอลความสามารถในการทำงานร่วมกันแบบข้อความของ iCalendar (iMIP) | ✅ รองรับ | การเชิญปฏิทินผ่านอีเมลพร้อมลิงก์ตอบกลับ ดู commit c4d1629 |
CalDAV และ CardDAV เป็นโปรโตคอลที่อนุญาตให้เข้าถึง แชร์ และซิงโครไนซ์ข้อมูลปฏิทินและรายชื่อระหว่างอุปกรณ์ต่างๆ
การสนับสนุน CalDAV และ CardDAV
| โปรโตคอล | RFC | สถานะ | คำอธิบาย |
|---|---|---|---|
| CalDAV | RFC 4791 | ✅ รองรับ | การเข้าถึงและซิงโครไนซ์ปฏิทิน |
| CardDAV | RFC 6352 | ✅ รองรับ | การเข้าถึงและซิงโครไนซ์รายชื่อ |
| iCalendar | RFC 5545 | ✅ รองรับ | รูปแบบข้อมูลปฏิทิน |
| vCard | RFC 6350 | ✅ รองรับ | รูปแบบข้อมูลรายชื่อ |
| VTODO | RFC 5545 | ✅ รองรับ | การสนับสนุนงาน/การเตือนความจำ |
| CalDAV Scheduling | RFC 6638 | ✅ รองรับ | ส่วนขยายการนัดหมายปฏิทิน |
| iTIP | RFC 5546 | ✅ รองรับ | ความสามารถในการทำงานร่วมกันแบบไม่ขึ้นกับการขนส่ง |
| iMIP | RFC 6047 | ✅ รองรับ | การเชิญปฏิทินผ่านอีเมล |
CalDAV (การเข้าถึงปฏิทิน)
CalDAV ช่วยให้คุณเข้าถึงและจัดการปฏิทินจากอุปกรณ์หรือแอปพลิเคชันใดก็ได้
คุณสมบัติหลัก:
- การซิงโครไนซ์หลายอุปกรณ์
- ปฏิทินที่แชร์ร่วมกัน
- การสมัครรับปฏิทิน
- การเชิญและตอบรับกิจกรรม
- กิจกรรมที่เกิดซ้ำ
- รองรับเขตเวลา
ไคลเอนต์ที่รองรับ:
- Apple Calendar (macOS, iOS)
- Mozilla Thunderbird
- Evolution
- GNOME Calendar
- ไคลเอนต์ที่รองรับ CalDAV ใดๆ
CardDAV (การเข้าถึงรายชื่อผู้ติดต่อ)
CardDAV ช่วยให้คุณเข้าถึงและจัดการรายชื่อผู้ติดต่อจากอุปกรณ์หรือแอปพลิเคชันใดก็ได้
คุณสมบัติหลัก:
- การซิงโครไนซ์หลายอุปกรณ์
- สมุดที่อยู่ที่แชร์ร่วมกัน
- กลุ่มผู้ติดต่อ
- รองรับรูปภาพ
- ฟิลด์ที่กำหนดเอง
- รองรับ vCard 4.0
ไคลเอนต์ที่รองรับ:
- Apple Contacts (macOS, iOS)
- Mozilla Thunderbird
- Evolution
- GNOME Contacts
- ไคลเอนต์ที่รองรับ CardDAV ใดๆ
งานและการแจ้งเตือน (CalDAV VTODO)
Tip
Forward Email รองรับงานและการแจ้งเตือนผ่าน CalDAV VTODO
VTODO เป็นส่วนหนึ่งของรูปแบบ iCalendar และช่วยให้จัดการงานผ่าน CalDAV ได้
คุณสมบัติหลัก:
- การสร้างและจัดการงาน
- กำหนดวันครบกำหนดและลำดับความสำคัญ
- ติดตามสถานะงานที่เสร็จสมบูรณ์
- งานที่เกิดซ้ำ
- รายการ/หมวดหมู่งาน
ไคลเอนต์ที่รองรับ:
- Apple Reminders (macOS, iOS)
- Mozilla Thunderbird (พร้อม Lightning)
- Evolution
- GNOME To Do
- ไคลเอนต์ CalDAV ใดๆ ที่รองรับ VTODO
กระบวนการซิงโครไนซ์ CalDAV/CardDAV
ส่วนขยายปฏิทินที่ไม่รองรับ
ส่วนขยายปฏิทินต่อไปนี้ ไม่รองรับ:
| RFC | ชื่อเรื่อง | เหตุผล |
|---|---|---|
| RFC 4918 | HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV) | CalDAV ใช้แนวคิด WebDAV แต่ไม่ได้ใช้งาน RFC 4918 เต็มรูปแบบ |
| RFC 6578 | Collection Synchronization for WebDAV | ยังไม่ได้ใช้งาน |
| RFC 3744 | WebDAV Access Control Protocol | ยังไม่ได้ใช้งาน |
การกรองข้อความอีเมล
Important
Forward Email มี การรองรับ Sieve และ ManageSieve เต็มรูปแบบ สำหรับการกรองอีเมลฝั่งเซิร์ฟเวอร์ สร้างกฎที่ทรงพลังเพื่อจัดเรียง กรอง ส่งต่อ และตอบกลับข้อความที่เข้ามาโดยอัตโนมัติ
Sieve (RFC 5228)
Sieve เป็นภาษาสคริปต์ที่ได้มาตรฐานและทรงพลังสำหรับการกรองอีเมลฝั่งเซิร์ฟเวอร์ Forward Email ใช้งาน Sieve อย่างครบถ้วนพร้อมส่วนขยาย 24 รายการ
ซอร์สโค้ด: helpers/sieve/
RFC หลักของ Sieve ที่รองรับ
| RFC | ชื่อเรื่อง | สถานะ |
|---|---|---|
| RFC 5228 | Sieve: ภาษาในการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 5429 | ส่วนขยายการปฏิเสธและปฏิเสธแบบขยายของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 5230 | ส่วนขยายการลาพักร้อนของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 6131 | ส่วนขยายลาพักร้อน: พารามิเตอร์ "วินาที" | ✅ รองรับเต็มรูปแบบ |
| RFC 5232 | ส่วนขยาย Imap4flags ของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 5173 | ส่วนขยายเนื้อหาของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 5229 | ส่วนขยายตัวแปรของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 5231 | ส่วนขยายเชิงสัมพันธ์ของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 4790 | Internet Application Protocol Collation Registry | ✅ รองรับเต็มรูปแบบ |
| RFC 3894 | ส่วนขยายการคัดลอกโดยไม่มีผลข้างเคียง | ✅ รองรับเต็มรูปแบบ |
| RFC 5293 | ส่วนขยาย Editheader ของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 5260 | ส่วนขยายวันที่และดัชนีของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 5435 | ส่วนขยายสำหรับการแจ้งเตือนของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 5183 | ส่วนขยายสภาพแวดล้อมของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 5490 | ส่วนขยายสำหรับการตรวจสอบสถานะกล่องจดหมายของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 8579 | การกรองอีเมล: การส่งไปยังกล่องจดหมายที่ใช้พิเศษ | ✅ รองรับเต็มรูปแบบ |
| RFC 7352 | การกรองอีเมล: การตรวจจับการส่งซ้ำ | ✅ รองรับเต็มรูปแบบ |
| RFC 5463 | ส่วนขยาย Ihave ของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| RFC 5233 | ส่วนขยาย Subaddress ของการกรองอีเมล | ✅ รองรับเต็มรูปแบบ |
| draft-ietf-sieve-regex | ส่วนขยายการกรองอีเมลด้วยนิพจน์ปกติ (Regular Expression) | ✅ รองรับเต็มรูปแบบ |
ส่วนขยาย Sieve ที่รองรับ
| Extension | คำอธิบาย | การผสานรวม |
|---|---|---|
fileinto |
จัดเก็บข้อความลงในโฟลเดอร์เฉพาะ | ข้อความถูกเก็บในโฟลเดอร์ IMAP ที่ระบุ |
reject / ereject |
ปฏิเสธข้อความพร้อมข้อผิดพลาด | การปฏิเสธ SMTP พร้อมข้อความเด้งกลับ |
vacation |
ตอบกลับอัตโนมัติเมื่อลาหยุด/ไม่อยู่สำนักงาน | คิวผ่าน Emails.queue พร้อมจำกัดอัตรา |
vacation-seconds |
ช่วงเวลาตอบกลับลาหยุดละเอียด | TTL จากพารามิเตอร์ :seconds |
imap4flags |
ตั้งค่า IMAP flags (\Seen, \Flagged, ฯลฯ) | ธงถูกตั้งค่าระหว่างการเก็บข้อความ |
envelope |
ทดสอบผู้ส่ง/ผู้รับในซองจดหมาย | เข้าถึงข้อมูลซองจดหมาย SMTP |
body |
ทดสอบเนื้อหาข้อความ | การจับคู่ข้อความเต็ม |
variables |
เก็บและใช้ตัวแปรในสคริปต์ | การขยายตัวแปรพร้อมตัวแก้ไข |
relational |
การเปรียบเทียบเชิงสัมพันธ์ | :count, :value กับ gt/lt/eq |
comparator-i;ascii-numeric |
การเปรียบเทียบเชิงตัวเลข | การเปรียบเทียบสตริงตัวเลข |
copy |
คัดลอกข้อความขณะเปลี่ยนเส้นทาง | ธง :copy บน fileinto/redirect |
editheader |
เพิ่มหรือลบหัวข้อข้อความ | หัวข้อถูกแก้ไขก่อนการเก็บ |
date |
ทดสอบค่าของวันที่/เวลา | การทดสอบ currentdate และวันที่ในหัวข้อ |
index |
เข้าถึงการเกิดขึ้นของหัวข้อเฉพาะ | :index สำหรับหัวข้อที่มีหลายค่า |
regex |
การจับคู่ด้วยนิพจน์ปกติ | รองรับนิพจน์ปกติเต็มรูปแบบในการทดสอบ |
enotify |
ส่งการแจ้งเตือน | การแจ้งเตือน mailto: ผ่าน Emails.queue |
environment |
เข้าถึงข้อมูลสภาพแวดล้อม | โดเมน, โฮสต์, remote-ip จากเซสชัน |
mailbox |
ทดสอบการมีอยู่ของกล่องจดหมาย | การทดสอบ mailboxexists |
special-use |
จัดเก็บลงกล่องจดหมายพิเศษ | แผนที่ \Junk, \Trash, ฯลฯ ไปยังโฟลเดอร์ |
duplicate |
ตรวจจับข้อความซ้ำ | การติดตามซ้ำโดยใช้ Redis |
ihave |
ทดสอบการมีอยู่ของส่วนขยาย | การตรวจสอบความสามารถในเวลารัน |
subaddress |
เข้าถึงส่วนที่อยู่ user+detail | ส่วนที่อยู่ :user และ :detail |
ส่วนขยาย Sieve ที่ไม่รองรับ
| Extension | RFC | เหตุผล |
|---|---|---|
include |
RFC 6609 | ความเสี่ยงด้านความปลอดภัย (การแทรกสคริปต์), ต้องการที่เก็บสคริปต์ระดับโลก |
mboxmetadata / servermetadata |
RFC 5490 | ต้องการส่วนขยาย IMAP METADATA |
fcc |
RFC 8580 | ต้องการการผสานรวมโฟลเดอร์ Sent |
encoded-character |
RFC 5228 | ต้องการการเปลี่ยนแปลงตัวแยกวิเคราะห์สำหรับไวยากรณ์ $ |
foreverypart / mime / extracttext |
RFC 5703 | การจัดการโครงสร้าง MIME ที่ซับซ้อน |
Sieve Processing Flow
Security Features
การใช้งาน Sieve ของ Forward Email มีการป้องกันความปลอดภัยอย่างครอบคลุม:
- การป้องกัน CVE-2023-26430: ป้องกันการวนลูปการเปลี่ยนเส้นทางและการโจมตีแบบ mail bombing
- การจำกัดอัตรา: จำกัดการเปลี่ยนเส้นทาง (10/ข้อความ, 100/วัน) และการตอบกลับช่วงวันหยุด
- การตรวจสอบรายการปฏิเสธ: ที่อยู่เปลี่ยนเส้นทางถูกตรวจสอบกับรายการปฏิเสธ
- หัวข้อที่ได้รับการป้องกัน: หัวข้อ DKIM, ARC และการตรวจสอบสิทธิ์ไม่สามารถแก้ไขผ่าน editheader ได้
- ขนาดสคริปต์จำกัด: บังคับใช้ขนาดสคริปต์สูงสุด
- หมดเวลาการทำงาน: สคริปต์จะถูกยุติหากการทำงานเกินเวลาที่กำหนด
Example Sieve Scripts
จัดเก็บจดหมายข่าวลงในโฟลเดอร์:
require ["fileinto"];
if header :contains "List-Id" "newsletter" {
fileinto "Newsletters";
}
ตอบกลับอัตโนมัติช่วงวันหยุดด้วยการตั้งเวลาละเอียด:
require ["vacation", "vacation-seconds"];
vacation :seconds 3600 :subject "Out of Office"
"I'm currently away and will respond within 24 hours.";
กรองสแปมด้วยธง:
require ["fileinto", "imap4flags"];
if header :contains "X-Spam-Status" "Yes" {
setflag "\\Seen";
fileinto "Junk";
}
กรองซับซ้อนด้วยตัวแปร:
require ["variables", "fileinto", "regex"];
if header :regex "From" "(.+)@example\\.com" {
set :lower "sender" "${1}";
fileinto "Contacts/${sender}";
}
Tip
สำหรับเอกสารฉบับสมบูรณ์ สคริปต์ตัวอย่าง และคำแนะนำการตั้งค่า ดูที่ FAQ: คุณรองรับการกรองอีเมลด้วย Sieve หรือไม่?
ManageSieve (RFC 5804)
Forward Email ให้การสนับสนุนโปรโตคอล ManageSieve อย่างเต็มรูปแบบสำหรับการจัดการสคริปต์ Sieve ระยะไกล
ซอร์สโค้ด: managesieve-server.js
| RFC | Title | Status |
|---|---|---|
| RFC 5804 | โปรโตคอลสำหรับการจัดการสคริปต์ Sieve ระยะไกล | ✅ รองรับเต็มรูปแบบ |
ManageSieve Server Configuration
| Setting | Value |
|---|---|
| Server | imap.forwardemail.net |
| Port (STARTTLS) | 2190 (แนะนำ) |
| Port (Implicit TLS) | 4190 |
| Authentication | PLAIN (ผ่าน TLS) |
หมายเหตุ: พอร์ต 2190 ใช้ STARTTLS (อัปเกรดจาก plain เป็น TLS) และเข้ากันได้กับไคลเอนต์ ManageSieve ส่วนใหญ่รวมถึง sieve-connect พอร์ต 4190 ใช้ implicit TLS (TLS ตั้งแต่เริ่มเชื่อมต่อ) สำหรับไคลเอนต์ที่รองรับ
Supported ManageSieve Commands
| Command | Description |
|---|---|
AUTHENTICATE |
ยืนยันตัวตนโดยใช้กลไก PLAIN |
CAPABILITY |
แสดงรายการความสามารถและส่วนขยายของเซิร์ฟเวอร์ |
HAVESPACE |
ตรวจสอบว่าสามารถเก็บสคริปต์ได้หรือไม่ |
PUTSCRIPT |
อัปโหลดสคริปต์ใหม่ |
LISTSCRIPTS |
แสดงรายการสคริปต์ทั้งหมดพร้อมสถานะใช้งาน |
SETACTIVE |
เปิดใช้งานสคริปต์ |
GETSCRIPT |
ดาวน์โหลดสคริปต์ |
DELETESCRIPT |
ลบสคริปต์ |
RENAMESCRIPT |
เปลี่ยนชื่อสคริปต์ |
CHECKSCRIPT |
ตรวจสอบไวยากรณ์สคริปต์ |
NOOP |
รักษาการเชื่อมต่อให้คงอยู่ |
LOGOUT |
สิ้นสุดเซสชัน |
ลูกค้า ManageSieve ที่เข้ากันได้
- Thunderbird: รองรับ Sieve ในตัวผ่าน Sieve add-on
- Roundcube: ปลั๊กอิน ManageSieve
- KMail: รองรับ ManageSieve โดยเนทีฟ
- sieve-connect: ลูกค้าคำสั่งบรรทัดคำสั่ง
- ลูกค้าใด ๆ ที่เป็นไปตาม RFC 5804
การไหลของโปรโตคอล ManageSieve
เว็บอินเทอร์เฟซและ API
นอกจาก ManageSieve แล้ว Forward Email ยังมี:
- แดชบอร์ดเว็บ: สร้างและจัดการสคริปต์ Sieve ผ่านเว็บอินเทอร์เฟซที่ My Account → Domains → Aliases → Sieve Scripts
- REST API: การเข้าถึงการจัดการสคริปต์ Sieve ผ่านโปรแกรมโดยใช้ Forward Email API
Tip
สำหรับคำแนะนำการตั้งค่าและการกำหนดค่าลูกค้าโดยละเอียด ดูที่ FAQ: คุณรองรับการกรองอีเมลด้วย Sieve หรือไม่?
การเพิ่มประสิทธิภาพการจัดเก็บ
Important
เทคโนโลยีการจัดเก็บอันดับหนึ่งในอุตสาหกรรม: Forward Email เป็น ผู้ให้บริการอีเมลรายเดียวในโลก ที่ผสานการลบข้อมูลแนบซ้ำกับการบีบอัด Brotli บนเนื้อหาอีเมล การเพิ่มประสิทธิภาพสองชั้นนี้ทำให้คุณมี พื้นที่จัดเก็บที่มีประสิทธิภาพมากขึ้น 2-3 เท่า เมื่อเทียบกับผู้ให้บริการอีเมลแบบดั้งเดิม
Forward Email ใช้เทคนิคการเพิ่มประสิทธิภาพการจัดเก็บสองแบบที่ปฏิวัติวงการ ซึ่งลดขนาดกล่องจดหมายอย่างมากในขณะที่ยังคงความสอดคล้องกับ RFC และความถูกต้องของข้อความอย่างเต็มที่:
- การลบข้อมูลแนบซ้ำ - กำจัดไฟล์แนบที่ซ้ำกันในอีเมลทั้งหมด
- การบีบอัด Brotli - ลดพื้นที่จัดเก็บ 46-86% สำหรับเมตาดาต้า และ 50% สำหรับไฟล์แนบ
สถาปัตยกรรม: การเพิ่มประสิทธิภาพการจัดเก็บสองชั้น
การลบข้อมูลแนบซ้ำ
Forward Email ใช้วิธีการลบข้อมูลแนบซ้ำตาม แนวทางที่พิสูจน์แล้วของ WildDuck ซึ่งปรับใช้สำหรับการจัดเก็บ SQLite
Note
สิ่งที่ถูกลบซ้ำ: "ไฟล์แนบ" หมายถึงเนื้อหาโหนด MIME ที่ เข้ารหัส (base64 หรือ quoted-printable) ไม่ใช่ไฟล์ที่ถอดรหัสแล้ว ซึ่งช่วยรักษาความถูกต้องของลายเซ็น DKIM และ GPG
วิธีการทำงาน
การใช้งานต้นฉบับของ WildDuck (MongoDB GridFS):
เซิร์ฟเวอร์ IMAP ของ Wild Duck จะลบข้อมูลแนบซ้ำ "ไฟล์แนบ" ในกรณีนี้หมายถึงเนื้อหาโหนด mime ที่เข้ารหัสแบบ base64 หรือ quoted-printable ไม่ใช่ไฟล์ที่ถอดรหัสแล้ว แม้ว่าการใช้เนื้อหาที่เข้ารหัสจะทำให้เกิดผลลบเท็จจำนวนมาก (ไฟล์เดียวกันในอีเมลต่าง ๆ อาจถูกนับเป็นไฟล์แนบต่างกัน) แต่จำเป็นเพื่อรับประกันความถูกต้องของรูปแบบลายเซ็นต่าง ๆ (DKIM, GPG ฯลฯ) ข้อความที่ดึงมาจาก Wild Duck จะเหมือนกับข้อความที่ถูกจัดเก็บไว้แม้ว่า Wild Duck จะวิเคราะห์ข้อความเป็นวัตถุแบบต้นไม้และสร้างข้อความขึ้นใหม่เมื่อดึงข้อมูล การใช้งาน SQLite ของ Forward Email:
Forward Email ปรับใช้แนวทางนี้สำหรับการจัดเก็บ SQLite แบบเข้ารหัสด้วยกระบวนการดังนี้:
- การคำนวณแฮช: เมื่อพบไฟล์แนบ จะคำนวณแฮชโดยใช้ไลบรารี
rev-hashจากเนื้อหาไฟล์แนบ - การค้นหา: ตรวจสอบว่าไฟล์แนบที่มีแฮชตรงกันมีอยู่ในตาราง
Attachmentsหรือไม่ - การนับอ้างอิง:
- หากมีอยู่: เพิ่มตัวนับอ้างอิงขึ้น 1 และตัวนับเวทมนตร์ด้วยจำนวนสุ่ม
- หากใหม่: สร้างรายการไฟล์แนบใหม่โดยตั้งค่าตัวนับ = 1
- ความปลอดภัยในการลบ: ใช้ระบบตัวนับคู่ (อ้างอิง + เวทมนตร์) เพื่อป้องกันผลบวกเท็จ
- การเก็บขยะ: ไฟล์แนบจะถูกลบทันทีเมื่อทั้งสองตัวนับเป็นศูนย์
ซอร์สโค้ด: helpers/attachment-storage.js
กระบวนการ Deduplication
ระบบตัวเลขเวทมนตร์
Forward Email ใช้ระบบ "ตัวเลขเวทมนตร์" ของ WildDuck (ได้รับแรงบันดาลใจจาก Mail.ru) เพื่อป้องกันผลบวกเท็จระหว่างการลบ:
- ทุกข้อความจะได้รับ ตัวเลขสุ่ม กำกับ
- ตัวนับเวทมนตร์ของไฟล์แนบจะถูกเพิ่มขึ้นด้วยตัวเลขสุ่มนั้นเมื่อเพิ่มข้อความ
- ตัวนับเวทมนตร์จะถูกลดลงด้วยตัวเลขเดียวกันเมื่อข้อความถูกลบ
- ไฟล์แนบจะถูกลบก็ต่อเมื่อ ทั้งสองตัวนับ (อ้างอิง + เวทมนตร์) เป็นศูนย์
ระบบตัวนับคู่แบบนี้ช่วยให้มั่นใจได้ว่าหากเกิดข้อผิดพลาดระหว่างการลบ (เช่น ระบบล่ม, ข้อผิดพลาดเครือข่าย) ไฟล์แนบจะไม่ถูกลบก่อนเวลาอันควร
ความแตกต่างหลัก: WildDuck กับ Forward Email
| คุณสมบัติ | WildDuck (MongoDB) | Forward Email (SQLite) |
|---|---|---|
| ระบบจัดเก็บข้อมูล | MongoDB GridFS (แบ่งชิ้น) | SQLite BLOB (ตรง) |
| อัลกอริทึมแฮช | SHA256 | rev-hash (อิง SHA-256) |
| การนับอ้างอิง | ✅ ใช่ | ✅ ใช่ |
| ตัวเลขเวทมนตร์ | ✅ ใช่ (ได้รับแรงบันดาลใจจาก Mail.ru) | ✅ ใช่ (ระบบเดียวกัน) |
| การเก็บขยะ | ล่าช้า (งานแยกต่างหาก) | ทันที (เมื่อทั้งสองตัวนับเป็นศูนย์) |
| การบีบอัด | ❌ ไม่มี | ✅ Brotli (ดูด้านล่าง) |
| การเข้ารหัส | ❌ ตัวเลือก | ✅ เสมอ (ChaCha20-Poly1305) |
การบีบอัด Brotli
Important
ครั้งแรกของโลก: Forward Email คือ บริการอีเมลเพียงหนึ่งเดียวในโลก ที่ใช้การบีบอัด Brotli กับเนื้อหาอีเมล ซึ่งช่วยให้ประหยัดพื้นที่จัดเก็บได้ถึง 46-86% นอกเหนือจากการ deduplication ไฟล์แนบ
Forward Email ใช้การบีบอัด Brotli กับทั้งเนื้อหาไฟล์แนบและข้อมูลเมตาของข้อความ เพื่อประหยัดพื้นที่จัดเก็บอย่างมหาศาลพร้อมกับรักษาความเข้ากันได้ย้อนหลัง
การใช้งาน: helpers/msgpack-helpers.js
สิ่งที่ถูกบีบอัด
1. เนื้อหาไฟล์แนบ (encodeAttachmentBody)
- รูปแบบเก่า: สตริงเข้ารหัสแบบ Hex (ขนาดเพิ่ม 2 เท่า) หรือ Buffer ดิบ
- รูปแบบใหม่: Buffer บีบอัดด้วย Brotli พร้อมส่วนหัวเวทมนตร์ "FEBR"
- การตัดสินใจบีบอัด: บีบอัดเฉพาะเมื่อช่วยประหยัดพื้นที่ (คำนึงถึงส่วนหัว 4 ไบต์)
- การประหยัดพื้นที่จัดเก็บ: สูงสุดถึง 50% (จาก hex → BLOB ดั้งเดิม)
2. ข้อมูลเมตาของข้อความ (
encodeMetadata)
ประกอบด้วย: mimeTree, headers, envelope, flags
- รูปแบบเก่า: สตริงข้อความ JSON
- รูปแบบใหม่: Buffer บีบอัดด้วย Brotli
- การประหยัดพื้นที่จัดเก็บ: 46-86% ขึ้นอยู่กับความซับซ้อนของข้อความ
การตั้งค่าการบีบอัด
// ตัวเลือกการบีบอัด Brotli ที่ปรับให้เหมาะกับความเร็ว (ระดับ 4 เป็นสมดุลที่ดี)
const BROTLI_COMPRESS_OPTIONS = {
params: {
[zlib.constants.BROTLI_PARAM_QUALITY]: 4
}
};
ทำไมต้องระดับ 4?
- บีบอัด/คลายบีบอัดเร็ว: ประมวลผลในระดับมิลลิวินาทีต่ำกว่า
- อัตราการบีบอัดดี: ประหยัด 46-86%
- ประสิทธิภาพสมดุล: เหมาะสำหรับการทำงานอีเมลแบบเรียลไทม์
หัวเวทมนตร์: "FEBR"
Forward Email ใช้หัวเวทมนตร์ 4 ไบต์เพื่อระบุเนื้อหาที่แนบซึ่งถูกบีบอัด:
"FEBR" = Forward Email BRotli
เลขฐานสิบหก: 0x46 0x45 0x42 0x52
ทำไมต้องมีหัวเวทมนตร์?
- ตรวจจับรูปแบบ: ระบุข้อมูลบีบอัดกับไม่บีบอัดได้ทันที
- ความเข้ากันได้ย้อนหลัง: สตริงเลขฐานสิบหกเก่าและ Buffer ดิบยังใช้งานได้
- หลีกเลี่ยงการชนกัน: "FEBR" ไม่ค่อยปรากฏที่จุดเริ่มต้นของข้อมูลแนบที่ถูกต้อง
กระบวนการบีบอัด
กระบวนการคลายบีบอัด
ความเข้ากันได้ย้อนหลัง
ฟังก์ชันถอดรหัสทั้งหมด ตรวจจับรูปแบบการจัดเก็บโดยอัตโนมัติ:
| รูปแบบ | วิธีตรวจจับ | การจัดการ |
|---|---|---|
| บีบอัดด้วย Brotli | ตรวจสอบหัวเวทมนตร์ "FEBR" | คลายบีบอัดด้วย zlib.brotliDecompressSync() |
| Buffer ดิบ | Buffer.isBuffer() ไม่มีหัวเวทมนตร์ |
ส่งคืนตามเดิม |
| สตริงเลขฐานสิบหก | ตรวจสอบความยาวคู่ + ตัวอักษร [0-9a-f] | ถอดรหัสด้วย Buffer.from(value, 'hex') |
| สตริง JSON | ตรวจสอบตัวอักษรแรกเป็น { หรือ [ |
แปลงด้วย JSON.parse() |
สิ่งนี้รับประกัน ไม่มีการสูญเสียข้อมูล ในระหว่างการย้ายจากรูปแบบเก่าไปยังรูปแบบใหม่
สถิติการประหยัดพื้นที่จัดเก็บ
การวัดการประหยัดจากข้อมูลจริง:
| ประเภทข้อมูล | รูปแบบเก่า | รูปแบบใหม่ | การประหยัด |
|---|---|---|---|
| เนื้อหาที่แนบ | สตริงเข้ารหัสเลขฐานสิบหก (2 เท่า) | BLOB บีบอัดด้วย Brotli | 50% |
| ข้อมูลเมตาของข้อความ | ข้อความ JSON | BLOB บีบอัดด้วย Brotli | 46-86% |
| ธงกล่องจดหมาย | ข้อความ JSON | BLOB บีบอัดด้วย Brotli | 60-80% |
แหล่งที่มา: helpers/migrate-storage-format.js
กระบวนการย้ายข้อมูล
Forward Email มีการย้ายข้อมูลอัตโนมัติและทำซ้ำได้จากรูปแบบเก่าไปยังรูปแบบใหม่: // สถิติการย้ายข้อมูลที่ติดตาม: { attachmentsMigrated: 0, messagesMigrated: 0, mailboxesMigrated: 0, bytesSaved: 0 // จำนวนไบต์ที่ประหยัดได้จากการบีบอัดทั้งหมด }
**ขั้นตอนการย้ายข้อมูล:**
1. เนื้อหาของไฟล์แนบ: การเข้ารหัสแบบฐานสิบหก → BLOB ดั้งเดิม (ประหยัด 50%)
2. เมตาดาต้าของข้อความ: ข้อความ JSON → BLOB บีบอัดด้วย brotli (ประหยัด 46-86%)
3. ธงของกล่องจดหมาย: ข้อความ JSON → BLOB บีบอัดด้วย brotli (ประหยัด 60-80%)
**แหล่งที่มา:** [`helpers/migrate-storage-format.js`](https://github.com/forwardemail/forwardemail.net/blob/master/helpers/migrate-storage-format.js)
---
### ประสิทธิภาพการจัดเก็บรวม {#combined-storage-efficiency}
> \[!TIP]
> **ผลกระทบในโลกจริง:** ด้วยการกำจัดไฟล์แนบซ้ำ + การบีบอัด Brotli ผู้ใช้ Forward Email จะได้รับ **พื้นที่จัดเก็บที่มีประสิทธิภาพมากขึ้น 2-3 เท่า** เมื่อเทียบกับผู้ให้บริการอีเมลแบบดั้งเดิม
**ตัวอย่างสถานการณ์:**
ผู้ให้บริการอีเมลแบบดั้งเดิม (กล่องจดหมาย 1GB):
* พื้นที่ดิสก์ 1GB = อีเมล 1GB
* ไม่มีการกำจัดซ้ำ: ไฟล์แนบเดียวกันเก็บ 10 ครั้ง = เสียพื้นที่จัดเก็บ 10 เท่า
* ไม่มีการบีบอัด: เมตาดาต้า JSON เต็มรูปแบบเก็บ = เสียพื้นที่จัดเก็บ 2-3 เท่า
Forward Email (กล่องจดหมาย 1GB):
* พื้นที่ดิสก์ 1GB ≈ **อีเมล 2-3GB** (พื้นที่จัดเก็บที่มีประสิทธิภาพ)
* การกำจัดซ้ำ: ไฟล์แนบเดียวกันเก็บครั้งเดียว อ้างอิง 10 ครั้ง
* การบีบอัด: ประหยัด 46-86% สำหรับเมตาดาต้า, 50% สำหรับไฟล์แนบ
* การเข้ารหัส: ChaCha20-Poly1305 (ไม่มีภาระพื้นที่จัดเก็บเพิ่ม)
**ตารางเปรียบเทียบ:**
| ผู้ให้บริการ | เทคโนโลยีการจัดเก็บ | พื้นที่จัดเก็บที่มีประสิทธิภาพ (กล่องจดหมาย 1GB) |
| ----------------- | -------------------------------------------- | ----------------------------------------------- |
| Gmail | ไม่มี | 1GB |
| iCloud | ไม่มี | 1GB |
| Outlook.com | ไม่มี | 1GB |
| Fastmail | ไม่มี | 1GB |
| ProtonMail | เข้ารหัสเท่านั้น | 1GB |
| Tutanota | เข้ารหัสเท่านั้น | 1GB |
| **Forward Email** | **การกำจัดซ้ำ + การบีบอัด + การเข้ารหัส** | **2-3GB** ✨ |
### รายละเอียดการใช้งานทางเทคนิค {#technical-implementation-details}
**ประสิทธิภาพ:**
* Brotli ระดับ 4: การบีบอัด/แตกไฟล์ในเวลาต่ำกว่าหนึ่งมิลลิวินาที
* ไม่มีผลกระทบต่อประสิทธิภาพจากการบีบอัด
* SQLite FTS5: การค้นหาภายใน 50ms บน NVMe SSD
**ความปลอดภัย:**
* การบีบอัดเกิดขึ้น **หลังจาก** การเข้ารหัส (ฐานข้อมูล SQLite ถูกเข้ารหัส)
* การเข้ารหัส ChaCha20-Poly1305 + การบีบอัด Brotli
* ความรู้เป็นศูนย์: มีเพียงผู้ใช้เท่านั้นที่มีรหัสผ่านถอดรหัส
**การปฏิบัติตาม RFC:**
* ข้อความที่ดึงมาจะดู **เหมือนเดิมเป๊ะ** กับที่เก็บไว้
* ลายเซ็น DKIM ยังคงถูกต้อง (เนื้อหาที่เข้ารหัสยังคงอยู่)
* ลายเซ็น GPG ยังคงถูกต้อง (ไม่มีการแก้ไขเนื้อหาที่ลงลายเซ็น)
### ทำไมไม่มีผู้ให้บริการรายอื่นทำแบบนี้ {#why-no-other-provider-does-this}
**ความซับซ้อน:**
* ต้องการการผสานลึกกับชั้นจัดเก็บข้อมูล
* ความเข้ากันได้ย้อนหลังเป็นเรื่องท้าทาย
* การย้ายจากรูปแบบเก่าซับซ้อน
**ข้อกังวลเรื่องประสิทธิภาพ:**
* การบีบอัดเพิ่มภาระ CPU (แก้ไขด้วย Brotli ระดับ 4)
* การแตกไฟล์ทุกครั้งที่อ่าน (แก้ไขด้วยการแคช SQLite)
**ข้อได้เปรียบของ Forward Email:**
* สร้างขึ้นตั้งแต่ต้นโดยคำนึงถึงการเพิ่มประสิทธิภาพ
* SQLite อนุญาตให้จัดการ BLOB โดยตรง
* ฐานข้อมูลเข้ารหัสต่อผู้ใช้ช่วยให้บีบอัดได้อย่างปลอดภัย
---
---
## ฟีเจอร์สมัยใหม่ {#modern-features}
## REST API ครบวงจรสำหรับการจัดการอีเมล {#complete-rest-api-for-email-management}
> \[!TIP]
> Forward Email มี REST API ครบถ้วนพร้อม 39 จุดเชื่อมต่อสำหรับการจัดการอีเมลแบบโปรแกรม
> \[!TIP]
> **ฟีเจอร์เฉพาะในอุตสาหกรรม:** แตกต่างจากบริการอีเมลอื่น ๆ Forward Email ให้การเข้าถึงโปรแกรมแบบเต็มรูปแบบกับกล่องจดหมาย ปฏิทิน รายชื่อ ข้อความ และโฟลเดอร์ของคุณผ่าน REST API ครบวงจร นี่คือการโต้ตอบโดยตรงกับไฟล์ฐานข้อมูล SQLite ที่เข้ารหัสซึ่งเก็บข้อมูลทั้งหมดของคุณ
Forward Email เสนอ REST API ครบวงจรที่ให้การเข้าถึงข้อมูลอีเมลของคุณอย่างไม่เคยมีมาก่อน ไม่มีบริการอีเมลใด (รวมถึง Gmail, iCloud, Outlook, ProtonMail, Tuta หรือ Fastmail) ที่ให้การเข้าถึงฐานข้อมูลโดยตรงและครบถ้วนในระดับนี้ได้เลย
**เอกสาร API:** <https://forwardemail.net/en/email-api>
### หมวดหมู่ API (39 จุดสิ้นสุด) {#api-categories-39-endpoints}
**1. Messages API** (5 จุดสิ้นสุด) - การดำเนินการ CRUD ครบถ้วนบนข้อความอีเมล:
* `GET /v1/messages` - แสดงรายการข้อความพร้อมพารามิเตอร์ค้นหาขั้นสูงกว่า 15 รายการ (ไม่มีบริการอื่นใดที่มี)
* `POST /v1/messages` - สร้าง/ส่งข้อความ
* `GET /v1/messages/:id` - ดึงข้อความ
* `PUT /v1/messages/:id` - อัปเดตข้อความ (ธง, โฟลเดอร์)
* `DELETE /v1/messages/:id` - ลบข้อความ
*ตัวอย่าง: ค้นหาทุกใบแจ้งหนี้จากไตรมาสที่ผ่านมาโดยมีไฟล์แนบ:*
```bash
curl -u "alias@domain.com:password" \
"https://api.forwardemail.net/v1/messages?q=subject:invoice+has:attachment+after:2024-01-01+before:2024-04-01"
2. Folders API (5 จุดสิ้นสุด) - การจัดการโฟลเดอร์ IMAP ครบถ้วนผ่าน REST:
GET /v1/folders- แสดงรายการโฟลเดอร์ทั้งหมดPOST /v1/folders- สร้างโฟลเดอร์GET /v1/folders/:id- ดึงข้อมูลโฟลเดอร์PUT /v1/folders/:id- อัปเดตโฟลเดอร์DELETE /v1/folders/:id- ลบโฟลเดอร์
3. Contacts API (5 จุดสิ้นสุด) - การจัดเก็บรายชื่อติดต่อแบบ CardDAV ผ่าน REST:
GET /v1/contacts- แสดงรายชื่อผู้ติดต่อPOST /v1/contacts- สร้างผู้ติดต่อ (รูปแบบ vCard)GET /v1/contacts/:id- ดึงข้อมูลผู้ติดต่อPUT /v1/contacts/:id- อัปเดตผู้ติดต่อDELETE /v1/contacts/:id- ลบผู้ติดต่อ
4. Calendars API (5 จุดสิ้นสุด) - การจัดการคอนเทนเนอร์ปฏิทิน:
GET /v1/calendars- แสดงรายการคอนเทนเนอร์ปฏิทินPOST /v1/calendars- สร้างปฏิทิน (เช่น "ปฏิทินงาน", "ปฏิทินส่วนตัว")GET /v1/calendars/:id- ดึงข้อมูลปฏิทินPUT /v1/calendars/:id- อัปเดตปฏิทินDELETE /v1/calendars/:id- ลบปฏิทิน
5. Calendar Events API (5 จุดสิ้นสุด) - การจัดตารางเหตุการณ์ภายในปฏิทิน:
GET /v1/calendar-events- แสดงรายการเหตุการณ์POST /v1/calendar-events- สร้างเหตุการณ์พร้อมผู้เข้าร่วมGET /v1/calendar-events/:id- ดึงข้อมูลเหตุการณ์PUT /v1/calendar-events/:id- อัปเดตเหตุการณ์DELETE /v1/calendar-events/:id- ลบเหตุการณ์
ตัวอย่าง: สร้างเหตุการณ์ในปฏิทิน:
curl -u "alias@domain.com:password" \
-X POST \
-H "Content-Type: application/json" \
-d '{"title":"ประชุมทีม","start":"2024-12-20T10:00:00Z","attendees":["team@example.com"],"calendar_id":"calendar123"}' \
https://api.forwardemail.net/v1/calendar-events
รายละเอียดทางเทคนิค
- การตรวจสอบสิทธิ์: การตรวจสอบสิทธิ์แบบง่าย
alias:password(ไม่มีความซับซ้อนของ OAuth) - ประสิทธิภาพ: เวลาตอบสนองต่ำกว่า 50ms ด้วย SQLite FTS5 และการจัดเก็บ NVMe SSD
- ความหน่วงของเครือข่ายเป็นศูนย์: เข้าถึงฐานข้อมูลโดยตรง ไม่ผ่านบริการภายนอก
กรณีการใช้งานในโลกจริง
-
การวิเคราะห์อีเมล: สร้างแดชบอร์ดกำหนดเองเพื่อติดตามปริมาณอีเมล, เวลาตอบกลับ, สถิติผู้ส่ง
-
เวิร์กโฟลว์อัตโนมัติ: เรียกใช้งานตามเนื้อหาอีเมล (การประมวลผลใบแจ้งหนี้, ตั๋วสนับสนุน)
-
การผสานรวม CRM: ซิงค์บทสนทนาอีเมลกับ CRM ของคุณโดยอัตโนมัติ
-
การปฏิบัติตามกฎระเบียบ & การค้นหา: ค้นหาและส่งออกอีเมลสำหรับข้อกำหนดทางกฎหมาย/การปฏิบัติตาม
-
ไคลเอนต์อีเมลแบบกำหนดเอง: สร้างอินเทอร์เฟซอีเมลเฉพาะสำหรับเวิร์กโฟลว์ของคุณ
-
ธุรกิจอัจฉริยะ: วิเคราะห์รูปแบบการสื่อสาร, อัตราการตอบกลับ, การมีส่วนร่วมของลูกค้า
-
การจัดการเอกสาร: ดึงและจัดหมวดหมู่ไฟล์แนบโดยอัตโนมัติ
Forward Email มี REST API สมัยใหม่ที่ให้การควบคุมเต็มรูปแบบเหนือบัญชีอีเมล, โดเมน, อลิอาส และข้อความ API นี้เป็นทางเลือกที่ทรงพลังแทน JMAP และให้ฟังก์ชันการทำงานที่เกินกว่าระเบียบวิธีอีเมลแบบดั้งเดิม
| หมวดหมู่ | จุดสิ้นสุด | คำอธิบาย |
|---|---|---|
| การจัดการบัญชี | 8 | บัญชีผู้ใช้, การตรวจสอบสิทธิ์, การตั้งค่า |
| การจัดการโดเมน | 12 | โดเมนที่กำหนดเอง, DNS, การยืนยัน |
| การจัดการอลิอาส | 6 | อีเมลอลิอาส, การส่งต่อ, catch-all |
| การจัดการข้อความ | 7 | ส่ง, รับ, ค้นหา, ลบข้อความ |
| ปฏิทิน & รายชื่อ | 4 | การเข้าถึง CalDAV/CardDAV ผ่าน API |
| บันทึก & การวิเคราะห์ | 2 | บันทึกอีเมล, รายงานการจัดส่ง |
คุณสมบัติหลักของ API
การค้นหาขั้นสูง:
API มีความสามารถในการค้นหาที่ทรงพลังด้วยไวยากรณ์การค้นหาคล้ายกับ Gmail:
GET /v1/messages?q=subject:invoice+has:attachment+after:2024-01-01+before:2024-04-01
ตัวดำเนินการค้นหาที่รองรับ:
from:- ค้นหาตามผู้ส่งto:- ค้นหาตามผู้รับsubject:- ค้นหาตามหัวเรื่องhas:attachment- ข้อความที่มีไฟล์แนบis:unread- ข้อความที่ยังไม่ได้อ่านis:starred- ข้อความที่ติดดาวafter:- ข้อความหลังวันที่before:- ข้อความก่อนวันที่label:- ข้อความที่มีป้ายกำกับfilename:- ชื่อไฟล์แนบ
การจัดการกิจกรรมปฏิทิน:
GET /v1/calendar-events
POST /v1/calendar-events
PUT /v1/calendar-events/:id
DELETE /v1/calendar-events/:id
การรวม Webhook:
API รองรับ webhook สำหรับการแจ้งเตือนเหตุการณ์อีเมลแบบเรียลไทม์ (รับ ส่ง ตีกลับ ฯลฯ)
การรับรองความถูกต้อง:
- การรับรองความถูกต้องด้วย API key
- รองรับ OAuth 2.0
- จำกัดอัตราการร้องขอ: 1000 คำขอต่อชั่วโมง
รูปแบบข้อมูล:
- คำขอ/การตอบกลับแบบ JSON
- ออกแบบแบบ RESTful
- รองรับการแบ่งหน้า
ความปลอดภัย:
- ใช้ HTTPS เท่านั้น
- การหมุนเวียน API key
- การอนุญาต IP (เลือกใช้)
- การลงลายมือชื่อคำขอ (เลือกใช้)
สถาปัตยกรรม API
การแจ้งเตือนแบบ Push บน iOS
Tip
Forward Email รองรับการแจ้งเตือนแบบ push บน iOS โดยตรงผ่าน XAPPLEPUSHSERVICE สำหรับการส่งอีเมลทันที
Important
คุณสมบัติพิเศษ: Forward Email เป็นหนึ่งในเซิร์ฟเวอร์อีเมลโอเพนซอร์สไม่กี่ตัวที่รองรับการแจ้งเตือนแบบ push บน iOS โดยตรงสำหรับอีเมล รายชื่อผู้ติดต่อ และปฏิทินผ่านส่วนขยาย IMAP XAPPLEPUSHSERVICE ซึ่งถูกวิเคราะห์ย้อนกลับจากโปรโตคอลของ Apple และมอบการส่งทันทีไปยังอุปกรณ์ iOS โดยไม่ทำให้แบตเตอรี่หมดเร็ว
Forward Email ใช้ส่วนขยายเฉพาะของ Apple คือ XAPPLEPUSHSERVICE เพื่อให้การแจ้งเตือนแบบ push บนอุปกรณ์ iOS โดยไม่ต้องใช้การดึงข้อมูลเบื้องหลัง
วิธีการทำงาน
XAPPLEPUSHSERVICE เป็นส่วนขยาย IMAP ที่ไม่เป็นมาตรฐานซึ่งช่วยให้แอป Mail บน iOS รับการแจ้งเตือนแบบ push ทันทีเมื่อมีอีเมลใหม่เข้ามา
Forward Email ใช้การรวมบริการแจ้งเตือนแบบ push ของ Apple (APNs) สำหรับ IMAP เพื่อให้แอป Mail บน iOS รับการแจ้งเตือนแบบ push ทันทีเมื่อมีอีเมลใหม่เข้ามา
คุณสมบัติหลัก
การส่งทันที:
- การแจ้งเตือนแบบ push มาถึงภายในไม่กี่วินาที
- ไม่มีการดึงข้อมูลเบื้องหลังที่ทำให้แบตเตอรี่หมดเร็ว
- ทำงานได้แม้แอป Mail ปิดอยู่
-
การส่งทันที: อีเมล กิจกรรมปฏิทิน และรายชื่อผู้ติดต่อปรากฏบน iPhone/iPad ของคุณทันที ไม่ใช่ตามตารางการดึงข้อมูล
-
ประหยัดแบตเตอรี่: ใช้โครงสร้างพื้นฐานการแจ้งเตือนแบบ push ของ Apple แทนการเชื่อมต่อ IMAP อย่างต่อเนื่อง
-
การแจ้งเตือนแบบหัวข้อ: รองรับการแจ้งเตือนแบบ push สำหรับกล่องจดหมายเฉพาะ ไม่ใช่แค่ INBOX
-
ไม่ต้องใช้แอปของบุคคลที่สาม: ทำงานร่วมกับแอป Mail, Calendar และ Contacts บน iOS โดยตรง การผสานรวมแบบเนทีฟ:
-
รวมอยู่ในแอป iOS Mail
-
ไม่ต้องใช้แอปของบุคคลที่สาม
-
ประสบการณ์ผู้ใช้ที่ราบรื่น
เน้นความเป็นส่วนตัว:
- โทเค็นอุปกรณ์ถูกเข้ารหัส
- ไม่มีการส่งเนื้อหาข้อความผ่าน APNS
- ส่งเฉพาะการแจ้งเตือน "เมลใหม่"
ประหยัดแบตเตอรี่:
- ไม่มีการตรวจสอบ IMAP อย่างต่อเนื่อง
- อุปกรณ์เข้าสู่โหมดพักจนกว่าจะมีการแจ้งเตือน
- ผลกระทบต่อแบตเตอรี่น้อยที่สุด
สิ่งที่ทำให้สิ่งนี้พิเศษ
Important
ผู้ให้บริการอีเมลส่วนใหญ่ไม่รองรับ XAPPLEPUSHSERVICE ทำให้อุปกรณ์ iOS ต้องตรวจสอบเมลใหม่ทุก 15 นาที
เซิร์ฟเวอร์อีเมลโอเพนซอร์สส่วนใหญ่ (รวมถึง Dovecot, Postfix, Cyrus IMAP) ไม่รองรับการแจ้งเตือนแบบพุชของ iOS ผู้ใช้ต้องเลือก:
- ใช้ IMAP IDLE (คงการเชื่อมต่อไว้ ทำให้แบตเตอรี่หมดเร็ว)
- ใช้การตรวจสอบ (polling) (ตรวจสอบทุก 15-30 นาที แจ้งเตือนล่าช้า)
- ใช้แอปอีเมลเฉพาะที่มีโครงสร้างพื้นฐานพุชของตัวเอง
Forward Email มอบประสบการณ์การแจ้งเตือนแบบพุชทันทีเหมือนบริการเชิงพาณิชย์อย่าง Gmail, iCloud และ Fastmail
เปรียบเทียบกับผู้ให้บริการอื่น:
| ผู้ให้บริการ | รองรับพุช | ช่วงเวลาตรวจสอบ | ผลกระทบต่อแบตเตอรี่ |
|---|---|---|---|
| Forward Email | ✅ พุชเนทีฟ | ทันที | น้อยที่สุด |
| Gmail | ✅ พุชเนทีฟ | ทันที | น้อยที่สุด |
| iCloud | ✅ พุชเนทีฟ | ทันที | น้อยที่สุด |
| Yahoo | ✅ พุชเนทีฟ | ทันที | น้อยที่สุด |
| Outlook.com | ❌ ตรวจสอบ | 15 นาที | ปานกลาง |
| Fastmail | ❌ ตรวจสอบ | 15 นาที | ปานกลาง |
| ProtonMail | ⚠️ ใช้เฉพาะบริดจ์ | ผ่านบริดจ์ | สูง |
| Tutanota | ❌ ใช้เฉพาะแอป | ไม่ระบุ | ไม่ระบุ |
รายละเอียดการใช้งาน
การตอบสนองความสามารถ IMAP:
* CAPABILITY IMAP4rev1 ... XAPPLEPUSHSERVICE ...
กระบวนการลงทะเบียน:
- แอป iOS Mail ตรวจพบความสามารถ XAPPLEPUSHSERVICE
- แอปลงทะเบียนโทเค็นอุปกรณ์กับ Forward Email
- Forward Email เก็บโทเค็นและเชื่อมโยงกับบัญชี
- เมื่อมีเมลใหม่ Forward Email ส่งพุชผ่าน APNS
- iOS ปลุกแอป Mail เพื่อดึงข้อความใหม่
ความปลอดภัย:
- โทเค็นอุปกรณ์ถูกเข้ารหัสขณะเก็บ
- โทเค็นหมดอายุและรีเฟรชอัตโนมัติ
- ไม่มีการเปิดเผยเนื้อหาข้อความต่อ APNS
- รักษาการเข้ารหัสแบบ end-to-end
- ส่วนขยาย IMAP:
XAPPLEPUSHSERVICE - ซอร์สโค้ด: WildDuck Issue #711
- การตั้งค่า: อัตโนมัติ - ไม่ต้องตั้งค่าเพิ่มเติม ใช้งานได้ทันทีกับแอป iOS Mail
เปรียบเทียบกับบริการอื่น
| บริการ | รองรับพุช iOS | วิธีการ |
|---|---|---|
| Forward Email | ✅ ใช่ | XAPPLEPUSHSERVICE (วิศวกรรมย้อนกลับ) |
| Gmail | ✅ ใช่ | แอป Gmail เฉพาะ + พุชของ Google |
| iCloud Mail | ✅ ใช่ | การผสานรวมของ Apple แบบเนทีฟ |
| Outlook.com | ✅ ใช่ | แอป Outlook เฉพาะ + พุชของ Microsoft |
| Fastmail | ✅ ใช่ | XAPPLEPUSHSERVICE |
| Dovecot | ❌ ไม่ | ใช้ IMAP IDLE หรือ polling เท่านั้น |
| Postfix | ❌ ไม่ | ใช้ IMAP IDLE หรือ polling เท่านั้น |
| Cyrus IMAP | ❌ ไม่ | ใช้ IMAP IDLE หรือ polling เท่านั้น |
พุชของ Gmail:
Gmail ใช้ระบบพุชเฉพาะที่ทำงานได้เฉพาะกับแอป Gmail เท่านั้น แอป iOS Mail ต้องตรวจสอบเซิร์ฟเวอร์ IMAP ของ Gmail
พุชของ iCloud:
iCloud มีการรองรับพุชแบบเนทีฟคล้าย Forward Email แต่รองรับเฉพาะที่อยู่อีเมล @icloud.com เท่านั้น
Outlook.com ไม่รองรับ XAPPLEPUSHSERVICE ทำให้แอป iOS Mail ต้องตรวจสอบทุก 15 นาที
Fastmail:
Fastmail ไม่รองรับ XAPPLEPUSHSERVICE ผู้ใช้ต้องใช้แอป Fastmail สำหรับการแจ้งเตือนพุช หรือยอมรับความล่าช้าจากการตรวจสอบทุก 15 นาที
การทดสอบและการตรวจสอบ
การทดสอบความสามารถของโปรโตคอล
Note
ส่วนนี้แสดงผลลัพธ์ของการทดสอบความสามารถของโปรโตคอลล่าสุดของเรา ซึ่งดำเนินการเมื่อวันที่ 22 มกราคม 2026
ส่วนนี้ประกอบด้วยการตอบกลับ CAPABILITY/CAPA/EHLO ที่แท้จริงจากผู้ให้บริการที่ทดสอบทั้งหมด การทดสอบทั้งหมดดำเนินการในวันที่ 22 มกราคม 2026
การทดสอบเหล่านี้ช่วยยืนยันการสนับสนุนที่ประกาศไว้และการสนับสนุนจริงสำหรับโปรโตคอลและส่วนขยายอีเมลต่างๆ ในผู้ให้บริการหลัก
Test Methodology
สภาพแวดล้อมการทดสอบ:
- วันที่: 22 มกราคม 2026 เวลา 02:37 UTC
- สถานที่: อินสแตนซ์ AWS EC2
- IPv4: 54.167.216.197
- IPv6: 2600:4040:46da:9a00:b19e:3ad4:426c:2f48
- เครื่องมือ: OpenSSL s_client, สคริปต์ bash
ผู้ให้บริการที่ทดสอบ:
- Forward Email
- Gmail
- Outlook.com
- iCloud
- Fastmail
- Yahoo/AOL (Verizon)
Test Scripts
เพื่อความโปร่งใสอย่างเต็มที่ สคริปต์ที่ใช้สำหรับการทดสอบเหล่านี้ถูกจัดเตรียมไว้ด้านล่าง
IMAP Capability Test Script
#!/bin/bash
# IMAP Capability Test Script
# Tests IMAP CAPABILITY for various email providers
echo "========================================="
echo "IMAP CAPABILITY TEST"
echo "Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""
# Gmail
echo "--- Gmail (imap.gmail.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.gmail.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Outlook.com
echo "--- Outlook.com (outlook.office365.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect outlook.office365.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# iCloud
echo "--- iCloud (imap.mail.me.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.mail.me.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Fastmail
echo "--- Fastmail (imap.fastmail.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.fastmail.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Yahoo
echo "--- Yahoo (imap.mail.yahoo.com:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.mail.yahoo.com:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
# Forward Email
echo "--- Forward Email (imap.forwardemail.net:993) ---"
echo -e "a001 CAPABILITY\na002 LOGOUT" | timeout 10 openssl s_client -connect imap.forwardemail.net:993 -crlf -quiet 2>&1 | grep -A 20 "CAPABILITY"
echo ""
echo "========================================="
echo "Test completed"
echo "========================================="
POP3 Capability Test Script
#!/bin/bash
# POP3 Capability Test Script
# Tests POP3 CAPA for various email providers
echo "========================================="
echo "POP3 CAPABILITY TEST"
echo "Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""
# Gmail
echo "--- Gmail (pop.gmail.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.gmail.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# Outlook.com
echo "--- Outlook.com (outlook.office365.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect outlook.office365.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# iCloud (Note: iCloud does not support POP3)
echo "--- iCloud (No POP3 support) ---"
echo "iCloud does not support POP3"
echo ""
# Fastmail
echo "--- Fastmail (pop.fastmail.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.fastmail.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# Yahoo
echo "--- Yahoo (pop.mail.yahoo.com:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop.mail.yahoo.com:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
# Forward Email
echo "--- Forward Email (pop3.forwardemail.net:995) ---"
echo -e "CAPA\nQUIT" | timeout 10 openssl s_client -connect pop3.forwardemail.net:995 -crlf -quiet 2>&1 | grep -A 20 "CAPA"
echo ""
echo "========================================="
echo "Test completed"
echo "========================================="
สคริปต์ทดสอบความสามารถ SMTP
#!/bin/bash
# สคริปต์ทดสอบความสามารถ SMTP
# ทดสอบ SMTP EHLO สำหรับผู้ให้บริการอีเมลต่างๆ
echo "========================================="
echo "การทดสอบความสามารถ SMTP"
echo "วันที่: $(date -u +"%Y-%m-%d %H:%M:%S UTC")"
echo "========================================="
echo ""
# Gmail
echo "--- Gmail (smtp.gmail.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.gmail.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Outlook.com
echo "--- Outlook.com (smtp.office365.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.office365.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# iCloud
echo "--- iCloud (smtp.mail.me.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.mail.me.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Fastmail
echo "--- Fastmail (smtp.fastmail.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.fastmail.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Yahoo
echo "--- Yahoo (smtp.mail.yahoo.com:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.mail.yahoo.com:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
# Forward Email
echo "--- Forward Email (smtp.forwardemail.net:587) ---"
echo -e "EHLO test.com\nQUIT" | timeout 10 openssl s_client -connect smtp.forwardemail.net:587 -starttls smtp -crlf -quiet 2>&1 | grep -A 30 "250-"
echo ""
echo "========================================="
echo "การทดสอบเสร็จสิ้น"
echo "========================================="
สรุปผลการทดสอบ
IMAP (CAPABILITY)
Forward Email
* CAPABILITY IMAP4rev1 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN CHILDREN ENABLE ID IDLE NAMESPACE QUOTA SASL-IR UNSELECT XLIST XAPPLEPUSHSERVICE
Gmail
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE ENABLE MOVE CONDSTORE ESEARCH UTF8=ACCEPT LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE
iCloud
* OK [CAPABILITY XAPPLEPUSHSERVICE IMAP4 IMAP4rev1 SASL-IR AUTH=ATOKEN AUTH=PLAIN AUTH=ATOKEN2 AUTH=XOAUTH2]
* CAPABILITY IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
Fastmail
* CAPABILITY IMAP4rev1 ACL ANNOTATE-EXPERIMENT-1 CATENATE CONDSTORE ENABLE ESEARCH ESORT I18NLEVEL=1 ID IDLE LIST-EXTENDED LIST-STATUS LITERAL+ LOGINDISABLED MULTIAPPEND NAMESPACE QRESYNC QUOTA RIGHTS=ektx SASL-IR SORT SPECIAL-USE THREAD=ORDEREDSUBJECT UIDPLUS UNSELECT WITHIN X-RENAME XLIST
Yahoo/AOL (Verizon)
* CAPABILITY IMAP4rev1 IDLE NAMESPACE QUOTA ID XLIST CHILDREN UIDPLUS MOVE CONDSTORE ESEARCH ENABLE LIST-EXTENDED LIST-STATUS LITERAL- SPECIAL-USE UNSELECT XAPPLEPUSHSERVICE
POP3 (CAPA)
Forward Email
+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION ForwardEmail
.
Gmail
+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION Gpop
.
+OK
CAPA
TOP
USER
UIDL
SASL PLAIN XOAUTH2
.
Fastmail
+OK
CAPA
TOP
USER
UIDL
EXPIRE 30
IMPLEMENTATION Cyrus
.
SMTP (EHLO)
Forward Email
250-smtp.forwardemail.net
250-PIPELINING
250-SIZE 52428800
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
Gmail
250-smtp.gmail.com at your service
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
250-SN4PR13CA0005.outlook.office365.com Hello [x.x.x.x]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 SMTPUTF8
Fastmail
250-smtp.fastmail.com
250-PIPELINING
250-SIZE 78643200
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 CHUNKING
Yahoo/AOL (Verizon)
250-smtp.mail.yahoo.com
250-PIPELINING
250-SIZE 41943040
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-STARTTLS
Detailed Test Results
IMAP Test Results
Gmail:
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=OAUTHBEARER
Outlook.com:
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
iCloud:
* CAPABILITY XAPPLEPUSHSERVICE IMAP4 IMAP4rev1 SASL-IR AUTH=ATOKEN AUTH=PLAIN AUTH=ATOKEN2 AUTH=XOAUTH2
Fastmail: การเชื่อมต่อหมดเวลา โปรดดูหมายเหตุด้านล่าง
Yahoo:
* CAPABILITY IMAP4rev1 SASL-IR AUTH=PLAIN AUTH=XOAUTH2 AUTH=OAUTHBEARER ID MOVE NAMESPACE XYMHIGHESTMODSEQ UIDPLUS LITERAL+ CHILDREN UNSELECT X-MSG-EXT OBJECTID IDLE ENABLE UIDONLY X-ALL-MAIL X-UIDONLY LIST-EXTENDED LIST-STATUS SPECIAL-USE PARTIAL APPENDLIMIT=41697280
Forward Email:
* CAPABILITY XAPPLEPUSHSERVICE IMAP4rev1 APPENDLIMIT=52428800 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN CHILDREN CONDSTORE ENABLE ID IDLE MOVE NAMESPACE QUOTA SASL-IR SPECIAL-USE UIDPLUS UNSELECT UTF8=ACCEPT XLIST
POP3 Test Results
Gmail: การเชื่อมต่อไม่ได้ส่งคืนการตอบสนอง CAPA โดยไม่ต้องยืนยันตัวตน
Outlook.com: การเชื่อมต่อไม่ได้ส่งคืนการตอบสนอง CAPA โดยไม่ต้องยืนยันตัวตน
iCloud: ไม่รองรับ
Fastmail: การเชื่อมต่อหมดเวลา โปรดดูหมายเหตุด้านล่าง
Yahoo:
+OK CAPA list follows... SASL PLAIN XOAUTH2
Forward Email: การเชื่อมต่อไม่ได้ส่งคืนการตอบสนอง CAPA โดยไม่ต้องยืนยันตัวตน
SMTP Test Results
Gmail:
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
Outlook.com:
250-DSN
iCloud:
250-DSN
Fastmail:
250 AUTH PLAIN LOGIN XOAUTH2 OAUTHBEARER
Yahoo:
250 AUTH PLAIN LOGIN XOAUTH2 OAUTHBEARER
Forward Email:
250-DSN, 250-REQUIRETLS
Notes on Test Results
Note
ข้อสังเกตและข้อจำกัดสำคัญจากผลการทดสอบ
-
Fastmail Timeouts: การเชื่อมต่อ Fastmail หมดเวลาในระหว่างการทดสอบ อาจเกิดจากการจำกัดอัตราหรือข้อจำกัดไฟร์วอลล์จาก IP เซิร์ฟเวอร์ทดสอบ Fastmail เป็นที่รู้จักว่ามีการสนับสนุน IMAP/POP3/SMTP อย่างแข็งแกร่งตามเอกสารของพวกเขา
-
POP3 CAPA Responses: ผู้ให้บริการหลายราย (Gmail, Outlook.com, Forward Email) ไม่ส่งคืนการตอบสนอง CAPA โดยไม่ต้องยืนยันตัวตน ซึ่งเป็นแนวปฏิบัติด้านความปลอดภัยทั่วไปสำหรับเซิร์ฟเวอร์ POP3
-
DSN Support: มีเพียง Outlook.com, iCloud และ Forward Email เท่านั้นที่ประกาศสนับสนุน DSN อย่างชัดเจนในคำตอบ EHLO ของ SMTP ซึ่งไม่ได้หมายความว่าผู้ให้บริการอื่นไม่รองรับ DSN แต่พวกเขาไม่ได้ประกาศ
-
REQUIRETLS: มีเพียง Forward Email เท่านั้นที่ประกาศสนับสนุน REQUIRETLS พร้อมช่องทำเครื่องหมายบังคับใช้สำหรับผู้ใช้ ผู้ให้บริการอื่นอาจรองรับภายในแต่ไม่ประกาศใน EHLO
-
Test Environment: การทดสอบดำเนินการจากอินสแตนซ์ AWS EC2 (IP: 54.167.216.197 IPv4, 2600:4040:46da:9a00:b19e:3ad4:426c:2f48 IPv6) เมื่อวันที่ 22 มกราคม 2026 เวลา 02:37 UTC
Summary
Forward Email ให้การสนับสนุนโปรโตคอล RFC ครอบคลุมในมาตรฐานอีเมลหลักทั้งหมด:
- IMAP4rev1: รองรับ RFC 16 ฉบับพร้อมความแตกต่างที่ตั้งใจไว้และมีเอกสารประกอบ
- POP3: รองรับ RFC 4 ฉบับพร้อมการลบถาวรที่เป็นไปตาม RFC
- SMTP: รองรับส่วนขยาย 11 รายการรวมถึง SMTPUTF8, DSN และ PIPELINING
- Authentication: รองรับเต็มที่ DKIM, SPF, DMARC, ARC
- Transport Security: รองรับเต็มที่ MTA-STS และ REQUIRETLS รองรับบางส่วน DANE
- Encryption: รองรับ OpenPGP v6 และ S/MIME
- Calendaring: รองรับเต็มที่ CalDAV, CardDAV และ VTODO
- API Access: มี REST API ครบถ้วนพร้อม 39 จุดเชื่อมต่อสำหรับเข้าถึงฐานข้อมูลโดยตรง
- iOS Push: การแจ้งเตือนแบบ native สำหรับอีเมล, รายชื่อ และปฏิทินผ่าน
XAPPLEPUSHSERVICE
Key Differentiators
Tip
Forward Email โดดเด่นด้วยคุณสมบัติพิเศษที่หาไม่ได้จากผู้ให้บริการรายอื่น
สิ่งที่ทำให้ Forward Email แตกต่าง:
- Quantum-Safe Encryption - ผู้ให้บริการเดียวที่มีกล่องจดหมาย SQLite เข้ารหัสด้วย ChaCha20-Poly1305
- Zero-Knowledge Architecture - รหัสผ่านของคุณเข้ารหัสกล่องจดหมายของคุณ; เราไม่สามารถถอดรหัสได้
- Free Custom Domains - ไม่มีค่าธรรมเนียมรายเดือนสำหรับอีเมลโดเมนที่กำหนดเอง
- REQUIRETLS Support - ช่องทำเครื่องหมายสำหรับผู้ใช้เพื่อบังคับใช้ TLS ตลอดเส้นทางการส่ง
- Comprehensive API - มี REST API 39 จุดเชื่อมต่อสำหรับการควบคุมแบบโปรแกรมเต็มรูปแบบ
- iOS Push Notifications - รองรับ native XAPPLEPUSHSERVICE สำหรับการส่งทันที
- Open Source - โค้ดต้นฉบับทั้งหมดเปิดเผยบน GitHub
- Privacy-Focused - ไม่มีการขุดข้อมูล, ไม่มีโฆษณา, ไม่มีการติดตาม
- การเข้ารหัสแบบแซนด์บ็อกซ์: บริการอีเมลเพียงบริการเดียวที่มีกล่องจดหมาย SQLite เข้ารหัสแยกแต่ละกล่อง
- การปฏิบัติตาม RFC: ให้ความสำคัญกับการปฏิบัติตามมาตรฐานมากกว่าความสะดวก (เช่น POP3 DELE)
- API ครบถ้วน: เข้าถึงข้อมูลอีเมลทั้งหมดโดยตรงผ่านโปรแกรม
- โอเพนซอร์ส: การดำเนินการที่โปร่งใสเต็มรูปแบบ
สรุปการรองรับโปรโตคอล:
| หมวดหมู่ | ระดับการรองรับ | รายละเอียด |
|---|---|---|
| โปรโตคอลหลัก | ✅ ดีเยี่ยม | รองรับ IMAP4rev1, POP3, SMTP อย่างเต็มที่ |
| โปรโตคอลสมัยใหม่ | ⚠️ บางส่วน | รองรับ IMAP4rev2 บางส่วน, ไม่รองรับ JMAP |
| ความปลอดภัย | ✅ ดีเยี่ยม | DKIM, SPF, DMARC, ARC, MTA-STS, REQUIRETLS |
| การเข้ารหัส | ✅ ดีเยี่ยม | OpenPGP, S/MIME, การเข้ารหัส SQLite |
| CalDAV/CardDAV | ✅ ดีเยี่ยม | ซิงค์ปฏิทินและรายชื่ออย่างเต็มรูปแบบ |
| การกรอง | ✅ ดีเยี่ยม | Sieve (ส่วนขยาย 24 รายการ) และ ManageSieve |
| API | ✅ ดีเยี่ยม | 39 จุดสิ้นสุด REST API |
| การแจ้งเตือนแบบพุช | ✅ ดีเยี่ยม | การแจ้งเตือนพุชบน iOS แบบเนทีฟ |