Π Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΌΠ΅ΡΠ΅ΡΠ° Π² Hacker News ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ JMAP, . Π Π΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΠΎΠ²Π°, Π·Π°ΡΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΈ ΠΊΠ°ΠΊ Π΅ ΡΡΡΡΠΎΠ΅Π½.
/ / PD
ΠΠ°ΠΊΠ²ΠΎ Π½Π΅ ΡΡΡΡΠ²Π° Π½Π° IMAP
ΠΡΠΎΡΠΎΠΊΠΎΠ» Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ ΠΏΡΠ΅Π· 1986 Π³. ΠΠ½ΠΎΠ³ΠΎ ΠΎΡ Π½Π΅ΡΠ°ΡΠ°, ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ°, Π² Π΄Π½Π΅ΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ° Π°ΠΊΡΡΠ°Π»Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡΡΡΠ° Π±ΡΠΎΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΈΠΌΠ΅ΠΉΠ»Π° ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΡΠΌΠΈ β ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΠΈΠΌΠ΅ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ.
ΠΡΡΠ³ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ°ΡΠΈΠΊ. ΠΡΠΈ IMAP Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½ΠΈΡΠ΅ ΠΏΠΈΡΠΌΠ° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Ρ Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ. ΠΠΊΠΎ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΠΊΠΎΠΏΠΈΠ΅ΡΠΎ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ° 'ΡΡΡΠΏΠΈ', ΡΠ΅ Π½Π°Π»Π°Π³Π° ΠΎΡΠ½ΠΎΠ²ΠΎ Π΄Π° ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΡΡΠ»Π°ΡΠ° ΠΏΠΎΡΠ°. Π ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡ ΡΠ²ΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ°Ρ Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΠΎΠ²ΠΈΡΠ΅Π½Π° ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡ Π½Π° ΡΡΠ°ΡΠΈΠΊ ΠΈ ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ.
Π’ΡΡΠ΄Π½ΠΎΡΡΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ Π½Π΅ ΡΠ°ΠΌΠΎ Ρ ΡΠ°ΠΌΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», Π½ΠΎ ΠΈ Ρ ΠΈΠΌΠ΅ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Ρ Π½Π΅Π³ΠΎ. ΠΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° IMAP, ΡΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π΅ Π±ΠΈΠ» ΠΏΠΎΠ΄Π»Π°Π³Π°Π½ Π½Π° ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ β Π°ΠΊΡΡΠ°Π»Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ IMAP4. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π·Π° Π½Π΅Π³ΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ β Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΈΠΌΠ° Π΄Π΅Π²Π΅ΡΠ΄Π΅ΡΠ΅Ρ RFC Ρ Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΡ. ΠΠ΄Π½ΠΎ ΠΎΡ Π½Π°ΠΉ-Π½ΠΎΠ²ΠΈΡΠ΅ Π΅ , ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΎ ΠΏΡΠ΅Π· 2019 Π³.
ΠΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠΎΠΏΡΠΈΠ΅ΡΠ°ΡΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠΏΡΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ IMAP ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ Π΄Π° Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ: , , . Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ, ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ ΠΈΠΌΠ΅ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ°ΠΌΠΎ ΡΠ°ΡΡ ΠΎΡ Π½Π°Π»ΠΈΡΠ½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’ΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±ΡΠ°Π·ΠΈΠ΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΠΏΠ°Π·Π°ΡΠ°.
Β«ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΡ ΠΈΠΌΠ΅ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΡΠ±Π²Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π΄Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»Ρ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΈ ΠΈ Π΄Π° ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° Ρ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ°, β ΠΊΠ°Π·Π²Π° Π‘Π΅ΡΠ³Π΅ΠΉ ΠΠ΅Π»ΠΊΠΈΠ½, ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° ΠΎΡΠ΄Π΅Π»Π° Π·Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ Π½Π° IaaS ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° . β Π Π΄Π½Π΅ΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠ΅Π·ΠΈ ΡΠ΅Π»ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²ΡΠ½ΡΠ½ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ ΠΊΠ°ΡΠΎ , ΠΈ . Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° Π·Π°ΡΠΈΡΠ½ΠΈΡΠ΅ ΡΡΠ΅Π½ΠΈ Π² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ ΠΈ ΠΎΡΠΊΡΠΈΠ²Π° Π½ΠΎΠ²ΠΈ Π²Π΅ΠΊΡΠΎΡΠΈ Π·Π° ΠΊΠΈΠ±Π΅ΡΠ°ΡΠ°ΠΊΠΈ.Β»
Π Π΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π΅ Π·Π°Π΄Π°ΡΠ° Π½Π° JMAP. Π’ΠΎΠΉ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈ Π½Π° FastMail ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΈΡ ΡΡΠ²Π΅Ρ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ (IETF). ΠΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ ΡΠ°Π±ΠΎΡΠΈ Π²ΡΡΡ Ρ HTTPS, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° JSON (ΠΏΠΎ ΡΠ°Π·ΠΈ ΠΏΡΠΈΡΠΈΠ½Π° Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΠΈΠΌΠ΅ΠΉΠ»ΠΈ, Π½ΠΎ ΠΈ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π΄ΠΈΡΠ° Π·Π°Π΄Π°ΡΠΈ Π² ΠΎΠ±Π»Π°ΠΊΠ°) ΠΈ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΠΈΠΌΠ΅ΠΉΠ»ΠΈ Π² ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΡΠ²Π΅Π½ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠΈΡΠΌΠ°, Π² JMAP Π΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΈ ΠΈ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ°.
Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»
JMAP Π΅ (stateless) ΠΈ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Ρ ΠΈΠΌΠ΅ΠΉΠ» ΡΡΡΠ²ΡΡ. Π’Π°Π·ΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π² Π½Π΅ΡΡΠ°Π±ΠΈΠ»Π½ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΌΡΠ΅ΠΆΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠΊΠΎΠ½ΠΎΠΌΠΈΡ Π½Π° Π·Π°ΡΡΠ΄ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ°.
ΠΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΡΠΎ ΠΏΠΈΡΠΌΠΎ Π² JMAP Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΎ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ JSON ΡΡΡΡΠΊΡΡΡΠ°. Π’Ρ ΡΡΠ΄ΡΡΠΆΠ° Π²ΡΡΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ (Internet Message Format), ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π½Π° ΠΈΠΌΠ΅ΠΉΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅, ΡΠ°ΠΊΡΠ² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠΏΡΠΎΡΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ (ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ , ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡ ΠΈ ΠΊΠΎΠ΄ΠΈΡΠ°Π½Π΅) ΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ ΡΡΡΠ²ΡΡΡΡ.
ΠΠ° Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ°, ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° API. ΠΠ° ΡΠ΅Π»ΡΠ° ΡΠΎΠΉ ΡΠΎΡΠΌΡΠ»ΠΈΡΠ° Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½ POST Π·Π°ΡΠ²ΠΊΠ°, ΡΠ²ΠΎΠΉΡΡΠ²Π° Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² ΡΠ΅ΡΠΈΠΎΠ½Π½ΠΈΡ ΠΎΠ±Π΅ΠΊΡ JMAP. ΠΠ°ΡΠ²ΠΊΠ°ΡΠ° ΠΈΠΌΠ° ΡΠΎΡΠΌΠ°Ρ application/json ΠΈ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΅Π΄ΠΈΠ½ JSON ΠΎΠ±Π΅ΠΊΡ Π½Π° Π·Π°ΡΠ²ΠΊΠ°. Π‘ΡΡΠ²ΡΡΡΡ ΡΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡ.
Π (ΠΏΡΠ½ΠΊΡ 3) Π°Π²ΡΠΎΡΠΈΡΠ΅ Π΄Π°Π²Π°Ρ ΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π·Π°ΡΠ²ΠΊΠ°:
{
"using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
"methodCalls": [
[ "method1", {
"arg1": "arg1data",
"arg2": "arg2data"
}, "c1" ],
[ "method2", {
"arg1": "arg1data"
}, "c2" ],
[ "method3", {}, "c3" ]
]
}
ΠΠΎ-Π΄ΠΎΠ»Ρ β ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΡΡΠ²ΡΡΡΡ:
{
"methodResponses": [
[ "method1", {
"arg1": 3,
"arg2": "foo"
}, "c1" ],
[ "method2", {
"isBlah": true
}, "c2" ],
[ "anotherResponseFromMethod2", {
"data": 10,
"yetmoredata": "ΠΠ΄ΡΠ°Π²Π΅ΠΉ"
}, "c2"],
[ "error", {
"type":"unknownMethod"
}, "c3" ]
],
"sessionState": "75128aab4b1b"
}
ΠΡΠ»Π½Π°ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° JMAP Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ. Π’Π°ΠΌ Π°Π²ΡΠΎΡΠΈΡΠ΅ ΡΠ° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π»ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΠΈ β ΡΠ΅ ΡΠ° Π½Π°ΡΠΎΡΠ΅Π½ΠΈ ΠΊΡΠΌ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠΈ ΠΈ ΡΠΏΠΈΡΡΡΠΈ Ρ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΈ. Π‘ΠΏΠΎΡΠ΅Π΄ Π°Π²ΡΠΎΡΠΈΡΠ΅, Contacts ΠΈ Calendars ΡΠ° ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈ Π² ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ, Π·Π° Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π΄ΠΎΡΠ°Π±ΠΎΡΠ²Π°Π½ΠΈ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ βΡΠ΄ΡΠΎΡΠΎβ. ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° JMAP β Π² .

/ / PD
ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²ΠΈ
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π·Π°Π²ΡΡΡΠ΅Π½Π°, ΡΠΎΠΉ Π²Π΅ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΎΠ½Π½ΠΈ ΡΡΠ΅Π΄ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ·Π΄Π°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΎΡΠΊΡΠΈΡΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈ ΡΡΡΠ²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° JMAP Π²Π΅ΡΡΠΈΡ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡ FastMail ΡΡΡΠ²ΡΡΠ΅Π½ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π·Π° Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π½Π° Perl, Π° Π°Π²ΡΠΎΡΠΈΡΠ΅ Π½Π° JMAP ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡ Π° .
ΠΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π°, ΡΠ΅ Π² Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° JMAP, ΡΠ΅ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡ Open-Xchange, ΠΊΠΎΠΈΡΠΎ ΡΡΠ·Π΄Π°Π²Π°Ρ IMAP ΡΡΡΠ²ΡΡ Π·Π° Linux-ΡΠΈΡΡΠ΅ΠΌΠΈ, Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Ρ Π½Π° Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ». Π£ΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅ Π² ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈ , ΠΎΡΠΎΡΠΌΠΈΠ»ΠΎ ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ°.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΡΠΈΡΠ΅ ΠΎΡ IETF ΠΈ FastMail ΠΊΠ°Π·Π²Π°Ρ, ΡΠ΅ Π²ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π²ΠΈΠΆΠ΄Π°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ Π½ΠΎΠ² ΠΎΡΠΊΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ²ΡΠΎΡΠΈΡΠ΅ Π½Π° JMAP ΡΠ΅ Π½Π°Π΄ΡΠ²Π°Ρ, ΡΠ΅ Π² Π±ΡΠ΄Π΅ΡΠ΅ Π²ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠ΅ Π²Π½Π΅Π΄ΡΡΡ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ».
ΠΠ°ΡΠΈΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ:
![]()
![]()
![]()
![]()
![]()
![]()
![]()
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
