ΠΠΎ-ΡΠ°Π½ΠΎ ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠ΅Ρ Π² Hacker News
ΠΠ°ΠΊΠ²ΠΎ Π½Π΅ ΠΌΠΈ Ρ Π°ΡΠ΅ΡΠ° Π² IMAP
ΠΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ
ΠΡΡΠ³ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΅ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΠΊ. Π‘ IMAP ΠΈΠΌΠ΅ΠΉΠ»ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Ρ Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ. ΠΠΊΠΎ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΡΠΈΡΠΈΠ½Π° ΠΊΠΎΠΏΠΈΠ΅ΡΠΎ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΠ΅ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈ, ΡΡΠ»Π°ΡΠ° ΠΏΠΎΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΠΎΡΠ½ΠΎΠ²ΠΎ. Π ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡ ΡΠ²ΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΈΠ»ΡΠ΄ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΠΎΠ²ΠΈΡΠ΅Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΠΊ ΠΈ ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ.
Π’ΡΡΠ΄Π½ΠΎΡΡΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ Π½Π΅ ΡΠ°ΠΌΠΎ ΡΡΡ ΡΠ°ΠΌΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», Π½ΠΎ ΠΈ Ρ ΠΈΠΌΠ΅ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Ρ Π½Π΅Π³ΠΎ. ΠΡ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ ΡΠΈ IMAP Π΅ Π±ΠΈΠ» ΠΎΠ±Π΅ΠΊΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ - ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π΄Π½Π΅Ρ Π΅ IMAP4. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π·Π° Π½Π΅Π³ΠΎ - Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°
Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠΏΡΠΎΡΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ IMAP ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ Π΄Π° Π³ΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ:
βΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΌΠΎΠ΄Π΅ΡΠ΅Π½ ΠΈΠΌΠ΅ΠΉΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΡΡΠ±Π²Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π΄Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠ° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΈ ΠΈ Π΄Π° ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° Ρ ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ°β, ΠΊΠ°Π·Π²Π° Π‘Π΅ΡΠ³Π΅ΠΉ ΠΠ΅Π»ΠΊΠΈΠ½, ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π² Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° Π½Π° IaaS
1cloud.ru . β ΠΠ½Π΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎLDAP ,CardDAV ΠΈCalDAV . Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Π½Π° Π·Π°ΡΠΈΡΠ½ΠΈΡΠ΅ ΡΡΠ΅Π½ΠΈ Π² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ ΠΈ ΠΎΡΠ²Π°ΡΡ Π½ΠΎΠ²ΠΈ Π²Π΅ΠΊΡΠΎΡΠΈ Π·Π° ΠΊΠΈΠ±Π΅ΡΠ°ΡΠ°ΠΊΠΈ.
JMAP Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. Π’ΠΎΠΉ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡ Π΅ΠΊΡΠΏΠ΅ΡΡΠΈ Π½Π° FastMail ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π½Π° Internet Engineering Task Force (IETF). ΠΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ ΡΠ°Π±ΠΎΡΠΈ Π²ΡΡΡ Ρ HTTPS, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° JSON (ΠΏΠΎ ΡΠ°Π·ΠΈ ΠΏΡΠΈΡΠΈΠ½Π° Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΠΎΠ±ΠΌΠ΅Π½ Π½Π° Π΅Π»Π΅ΠΊΡΡΠΎΠ½Π½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΈ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π΄ΠΈΡΠ° Π·Π°Π΄Π°ΡΠΈ Π² ΠΎΠ±Π»Π°ΠΊΠ°) ΠΈ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠΎΡΠ° Π² ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΠΈΡΠΌΠ°, JMAP ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠ½ΡΠ°ΠΊΡΠΈ ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π° ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΠ°.
Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»
JMAP Π΅
ΠΠΌΠ΅ΠΉΠ» Π² JMAP Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΠ° JSON. Π‘ΡΠ΄ΡΡΠΆΠ° ΡΡΠ»Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ
ΠΠ»ΠΈΠ΅Π½ΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° API, Π·Π° Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ ΡΡΡ ΡΡΡΠ²ΡΡΠ°. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ²Π°, ΡΠΎΠΉ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠ΅Π½Π° POST Π·Π°ΡΠ²ΠΊΠ°, ΡΠΈΠΈΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² ΠΎΠ±Π΅ΠΊΡΠ° Π½Π° JMAP ΡΠ΅ΡΠΈΡΡΠ°. ΠΠ°ΡΠ²ΠΊΠ°ΡΠ° Π΅ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ application/json ΠΈ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ Π½Π° JSON Π·Π°ΡΠ²ΠΊΠ°. Π‘ΡΡΠ²ΡΡΡΡ ΡΡΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π΅Π΄ΠΈΠ½ ΠΎΠ±Π΅ΠΊΡ Π·Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ.
Π
{
"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": "Hello"
}, "c2"],
[ "error", {
"type":"unknownMethod"
}, "c3" ]
],
"sessionState": "75128aab4b1b"
}
ΠΡΠ»Π½Π°ΡΠ° JMAP ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π° Π½Π°
/
ΠΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²ΠΈ
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎ Π·Π°Π²ΡΡΡΠ΅Π½Π°, ΡΠΎΠΉ Π²Π΅ΡΠ΅ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ·Π΄Π°ΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΊΠΈ ΡΡΡΠ²ΡΡ
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ°ΠΊΠ²Π°ΠΌΠ΅, ΡΠ΅ Π² Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ ΠΈΠΌΠ° Π²ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° JMAP. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ° ΠΈΠ·Π²Π΅ΡΡΠ½Π° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡ Open-Xchange, ΠΊΠΎΠΈΡΠΎ ΡΡΠ·Π΄Π°Π²Π°Ρ IMAP ΡΡΡΠ²ΡΡ Π·Π° Linux ΡΠΈΡΡΠ΅ΠΌΠΈ, Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Ρ ΠΊΡΠΌ Π½ΠΎΠ²ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ». ΠΠ½ΠΎΠ³ΠΎ Π³ΠΈ ΠΎΡΠΊΠ°Π·Π²Π°ΠΉΡΠ΅ ΠΎΡ IMAP
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΡ IETF ΠΈ FastMail ΠΊΠ°Π·Π²Π°Ρ, ΡΠ΅ Π²ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π²ΠΈΠΆΠ΄Π°Ρ Π½ΡΠΆΠ΄Π°ΡΠ° ΠΎΡ Π½ΠΎΠ² ΠΎΡΠ²ΠΎΡΠ΅Π½ ΡΡΠ°Π½Π΄Π°ΡΡ Π·Π° ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ²ΡΠΎΡΠΈΡΠ΅ Π½Π° JMAP ΡΠ΅ Π½Π°Π΄ΡΠ²Π°Ρ, ΡΠ΅ Π² Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π°Ρ Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π°Ρ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ».
ΠΠ°ΡΠΈΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ:
ΠΠ°ΠΊ Π΄Π° ΡΠΏΠ΅ΡΡΡΠ²Π°ΡΠ΅ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
DevOps Π² ΠΎΠ±Π»Π°ΡΠ½Π° ΡΡΠ»ΡΠ³Π° ΠΏΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π° 1cloud.ru
ΠΠ²ΠΎΠ»ΡΡΠΈΡ Π½Π° ΠΎΠ±Π»Π°ΡΠ½Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° 1cloud
ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π°ΡΠ°ΠΊΠΈ ΡΡΠ΅ΡΡ HTTPS ΠΈ ΠΊΠ°ΠΊ Π΄Π° ΡΠ΅ Π·Π°ΡΠΈΡΠΈΠΌ ΠΎΡ ΡΡΡ
ΠΠ°ΠΊ Π΄Π° Π·Π°ΡΠΈΡΠΈΡΠ΅ ΡΡΡΠ²ΡΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ: ΠΎΠΏΠΈΡ Π½Π° 1cloud.ru
ΠΡΠ°ΡΠΊΠ° ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°: ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com