精緻に解析可能な恒常性のあるメール基盤の設計 / CKP-QGPOP-auntonmous-mail

精緻に解析可能な恒常性のあるメール基盤の設計 / CKP-QGPOP-auntonmous-mail

九州大学・ペパボ研究所共同研究:メール基盤の安定性向上とリソース管理の再設計

松本 亮介*, 小田 知央*, 笠原 義晃**, 嶋吉 隆夫**, 岡村 耕二**
*Pepabo R&D Institute, GMO Pepabo, Inc. / **九州大学 情報基盤研究開発センター
2017.12.7 CKP-QGPOP研究会

2b692bd83f4418103142a053ecf5ff59?s=128

MATSUMOTO Ryosuke

December 07, 2017
Tweet

Transcript

  1. ۝भେֶɾϖύϘݚڀॴڞಉݚڀɿϝʔϧج൫ͷ҆ఆੑ޲্ͱϦιʔε؅ཧͷ࠶ઃܭ দຊ ྄հ*, খా ஌ԝ*, ּݪ ٛߊ**, ౢ٢ ོ෉**, Ԭଜ

    ߞೋ** *Pepabo R&D Institute, GMO Pepabo, Inc. / **۝भେֶ ৘ใج൫ݚڀ։ൃηϯλʔ 2017.12.7 CKP-QGPOPݚڀձ ਫ਼៛ʹղੳՄೳͳ ߃ৗੑͷ͋Δϝʔϧج൫ͷઃܭ
  2. 1. എܠͱ໨త 2. ؔ࿈ݚڀ: FastContainer 3. TCPίϯςφ΁ͷԠ༻ͱϝʔϧج൫ 4. ·ͱΊ 2

    ໨࣍
  3. 1. എܠͱ໨త

  4. • ࠓ΋ͳ͓ݱ໾ͷϝʔϧૹड৴γεςϜ • ୯Ұͷαʔόʹෳ਺ͷΞΧ΢ϯτΛಉډͤ͞Δ͜ͱγεςϜ͕ଟ͍ • ΞΧ΢ϯτ৐ͬऔΓ΍େྔૹ৴ɺSPAMϝʔϧɺϝʔϧ஗ԆͳͲ͕՝୊ • ಛఆͷΞΧ΢ϯτͷϦιʔε઎༗͕ଞͷΞΧ΢ϯτʹӨڹΛ༩͑Δ • ͦΕΒͷ՝୊ʹ൐͏ӡ༻ɾαϙʔτίετͷ૿େ

    4 എܠ
  5. • ߴूੵϚϧνΞΧ΢ϯτܕͷϝʔϧૹड৴γεςϜͷ҆ఆԽ • ςφϯτؒͷϦιʔεڝ߹Λগͳ҆͘͠ఆͨ͠ϝʔϧγεςϜΛ࣮ݱ • ੩తͳྲྀྔ੍ݶͰ͸ͳ͘దԠతͳྲྀྔɾϦιʔε੍ݶʹΑΓշదͳ؀ڥΛ࣮ݱ • େྔૹ৴࣌͸ݕ஌ͱͱ΋ʹΦʔτεέʔϦϯάʹΑΔϦιʔε૿ڧ • ֤ίϯϙʔωϯτͰηογϣϯσʔλΛอଘ͠ղੳʹ׆༻

    • ྲྀྔ੍ݶɺҟৗݕ஌ɺෆਖ਼ݕ஌ɺΦʔτεέʔϦϯάɺػցֶशͳͲʹ׆༻ 5 ໨త
  6. • ߃ৗੑͷ͋Δਫ਼៛ʹղੳՄೳͳϝʔϧج൫ʹؔ͢Δݚڀ։ൃ • NIIΫϥ΢υ࣮ূ࣮ݧʹ͓͚Δ৽͍͠ίϯςφج൫ͷల։ͱݕূ • Ԡ༻ͱͯ͠৽͍͠ϝʔϧج൫ͷઃܭ ← ࠓ೔ͷൃද • ৽͍͠ίϯςφج൫

    = FastContainerΞʔΩςΫνϟʹج࣮ͮ͘૷ 6 ۝भେֶ ৘ใج൫ݚڀ։ൃηϯλʔͱڞಉݚڀ
  7. 2. ؔ࿈ݚڀ: FastContainer

  8. FastContainer※1 ʹ͍ͭͯ ※1. দຊ྄հ, ۙ౻ Ӊஐ࿕, ࡾ୐ ༔հ, ྗ෢ ݈࣍,

    ܀ྛ ݈ଠ࿠, FastContainer: WebΞϓϦέʔγϣϯίϯςφͷىಈΛϦΞΫςΟϒʹܾఆ͢Δίϯςφ؅ཧΞʔ ΩςΫνϟ, ৘ใॲཧֶձݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ʢIOTʣ,2017-IOT-38, Vol.14, pp.1-8, 2017೥6݄.
  9. • ಥൃతͳΞΫηε͚࣌ͩεέʔϧ͢Δͷ͸ͳͥ೉͍͠ͷ͔ʁ • γεςϜ͕ෆมੑΛ࣋ͭͱมԽ΁͸େ͖ͳίετ͕൐͏ • γεςϜͷߏ੒ཁૉ΋ෆมੑΛ࣋ͪঢ়ଶมԽͷίετ͕ߴ͍ • ෆมੑΛҡ࣋͢Δ͜ͱ͕γεςϜ؅ཧͷ໨తͰ͋Δ • ૝ఆͷൣғ಺Ͱ඼࣭Λ࠷େԽ͢Δ͜ͱΛ໨తͱ͍ͯ͠Δ

    • ૝ఆͰ͖ͳ͍ΞΫηεूத΍໰୊͕ଟൃ͢Δ࣌୅ʹ͸ෆ޲͖ 9 ෆมੑΛ൐͏γεςϜͷ՝୊
  10. 1. Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱ 2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞ 3. εέʔϦϯά͢΂͖ঢ়گݕ஌ͷϦΞϧλΠϜੑͷ௿͞ 4. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷ஗Ԇ 10 ҰൠతͳԾ૝Խج൫ͷΦʔτεέʔϧͷ՝୊

  11. 1. Πϯελϯε௥Ճॲཧ͕௿଎Ͱ͋Δ͜ͱ 2. ϋʔυ΢ΣΞϦιʔεͷར༻ޮ཰ͷ௿͞ 3. εέʔϦϯά͢΂͖ঢ়گݕ஌ͷϦΞϧλΠϜੑͷ௿͞ 4. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷ஗Ԇ 11 ҰൠతͳԾ૝Խج൫ͷΦʔτεέʔϧͷ՝୊

    1.ͱ2.ͷ՝୊ΛղܾͰ͖ΔΞʔΩςΫνϟͷఏҊ
  12. • ঢ়ଶͷมԽΛߴ଎ʹߦ͑ͯ൓Ԡతʹಈ࡞Ͱ͖Δ͜ͱΛॏࢹ • γεςϜͷཁૉͷఀࢭ͔Βىಈॲཧͷޮ཰Խʹண໨ • γεςϜͷཁૉͷఀࢭঢ়ଶΛڐ༰͢ΔγεςϜ • ৗʹఀࢭͱىಈ͕॥؀Մೳͳ߃ৗੑΛ࣋ͭγεςϜΛ໨ࢦ͢ • ॥؀Մೳ

    = Մ༻ੑ͕ߴ͘ৗʹมԽՄೳͳج൫Λ࣮ݱͰ͖Δ 12 Մ༻ੑߴ͘มԽʹڧ͍ج൫Λઃܭ͢Δʹ͸ʁ
  13. มԽ͠ଓ͚Δ͜ͱ͔ΒಘΒΕΔ҆ఆੑ 13 ϗετ" ϗετ" ϗετ" ϗετ" ϗετ" Πϯλʔωοτ ϗετ" ϗετ"

    ϗετ" ΍͕ͯఀࢭ ൓Ԡతʹىಈ ൓Ԡతʹ εέʔϧΞοϓ ऩ༰αʔόA ऩ༰αʔόB HTTPϦΫΤετ ൓Ԡతʹ εέʔϧΞ΢τ • ϗετͷىಈͱఀࢭΛ॥؀ • ৗʹ॥؀͠ଓ͚ΔΞʔΩςΫνϟ • มԽ͠ଓ͚Δ͜ͱʹΑΔ҆ఆੑ • ॥؀ͷ଎౓վળΛ௥ٻ ৗʹมԽՄೳͰ͋ΔͨΊಥൃతͳΞ ΫηεूதͷΑ͏ͳมԽʹ΋଱ੑͷ ͋ΔΞʔΩςΫνϟΛ࣮ݱՄೳ
  14. • ϗετͷىಈɾෳ੡ɾఀࢭɾ૿ڧॲཧͷޮ཰ԽΛॏࢹ • ֤छॲཧΛHTTPϦΫΤετ࣌ʹϦΞΫςΟϒʹ࣮ࢪ • ϗετʹ͸ίϯςφܕԾ૝ԽΛ࠾༻ͯ͠ىಈΛߴ଎ʹ࣮ݱ • ϦΫΤετʹج͍ͯϦΞΫςΟϒʹίϯςφͷঢ়ଶΛܾఆ 14 FastContainerΞʔΩςΫνϟͱ໋໊

  15. HTTP FastContainerͷϑϩʔ 15 8FC1SPYZ ʢOHY@NSVCZ $.%# ʴ "1* -PDBM8FC1SPYZ OHY@NSVCZ

    $MJFOU ίϯςφ ίϯςφ ίϯςφ w )551ϦΫΤετͷ)PTUOBNF ΛΩʔʹɺ$.%# ߏ੒؅ཧ%# ͔Βίϯςφͷ৘ใΛऔಘ )551 4  ϦΫΤετ w ίϯςφͷ*1ͱϙʔτʹج͍ ͯίϯςφʹϓϩΩγ w ίϯςφ͕-JTUFO͍ͯ͠ͳ͍ ৔߹͸$.%#͔Βίϯςφ ৘ใΛಘͯىಈ $POUBJOFS&OHJOF IBDPOJXB
  16. 16 335ඵ࣌఺ͰεέʔϧΞ΢τΛ࣮ࢪ͠ɺ 340ඵ࣌఺Ͱෛՙ෼ࢄ͕։࢝͞Ε͍ͯΔɻ 5ສϦΫΤετҎ߱͸2ίϯ ςφʹεέʔϧΞ΢τ͞Εͨ ͨΊɺϨεϙϯελΠϜ͕൒ ෼ҎԼͱͳͬͯ࢒Γͷ5ສϦ ΫΤετ୹࣌ؒͰॲཧ͍ͯ͠ Δ͜ͱ͕෼͔Δɻ

  17. 3. TCP-FastContainer΁ͷԠ༻ͱϝʔϧج൫

  18. • HTTPϕʔε͚ͩͰͳ͘TCP/UDPϕʔεͷFastContainerΛ࣮ݱͤ͞Δ • HTTPϕʔεͩͱdomainΛΩʔʹৼΓ෼͚͕Մೳ • TCP/UDPϕʔεͩͱϙʔτͱIPΞυϨεϕʔεͷৼΓ෼͚͕ඞཁ • ϓϩτίϧͷத਎ΛݟͣʹΑΓ൚༻Խͤ͞Δ 18 HTTPϕʔεͷFastContainerͷԠ༻

    ※1. দຊ྄հ, ۙ౻ Ӊஐ࿕, ࡾ୐ ༔հ, ྗ෢ ݈࣍, ܀ྛ ݈ଠ࿠, FastContainer: WebΞϓϦέʔγϣϯίϯςφͷىಈΛϦΞΫςΟϒʹܾఆ͢Δίϯςφ؅ཧΞʔ ΩςΫνϟ, ৘ใॲཧֶձݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ʢIOTʣ,2017-IOT-38, Vol.14, pp.1-8, 2017೥6݄.
  19. ͜Ε·ͰͷHTTP-FastContainer 19 8FC1SPYZ ʢOHY@NSVCZ $.%# -PDBM8FC1SPYZ OHY@NSVCZ -74 $MJFOU ίϯςφ

    ίϯςφ ίϯςφ PSϙʔτΛ 8FC1SPYZ΁ྲྀ͢ )551ϦΫΤετ ͔Β)PTUOBNF ΛΩʔʹɺ$.%# ͔Βϗετ04ͷ*1 ͱίϯςφͷ*1ͱ ϙʔτΛऔಘ )551 4  ϦΫΤετ ίϯςφͷ*1ͱϙʔτʹج ͍ͯίϯςφʹϓϩΩγɻ ίϯςφͷ*1ϙʔτ͸ɺ 8FC1SPYZ͔Βϔομͱ ͯ͠෇༩͞Εͯ͘Δɻ ίϯςφ͕-JTUFO͍ͯ͠ͳ ͍৔߹͸$.%#͔Βίϯς φ৘ใΛಘͯىಈͤ͞Δɻ $POUBJOFS&OHJOF IBDPOJXB Πϯλʔωοτ ϓϥΠϕʔτ ωοτϫʔΫ
  20. TCP/UDP-FastContainer 20 $.%# -PDBM5$16%11SPYZ OHY@NSVCZ -74 $MJFOU ίϯςφ ίϯςφ ίϯςφ

    άϩʔόϧ *1ΞυϨεϙʔτʹରԠ ͢Δ5$16%1ϓϩΩγ ͷ*1ΞυϨεϙʔτʹ 'PSXBSE άϩʔόϧ *1ΞυϨεϙʔτ ΁ϦΫΤετ 'PSXBSE͞Ε͖ͯͨύέοτΛड ৴ͨ͠αʔό*1ΞυϨεϙʔτʹ ඥͮ͘ίϯςφ৘ใΛ$.%#͔Β ಘͯɺίϯςφ͕ىಈ͍ͯͨ͠Β QSPYZɺىಈ͍ͯ͠ͳ͚Ε͹ίϯ ςφىಈ͔ͯ͠ΒQSPYZ $POUBJOFS&OHJOF IBDPOJXB Πϯλʔωοτ ϓϥΠϕʔτ ωοτϫʔΫ ϗετ04 ϙʔτϓʔϧ άϩʔόϧ*1ΞυϨ εɿϙʔτϓʔϧ
  21. • Ϣʔβઐ༻ͷSMTPͱIMAP͸TCPϕʔεͷFastContainerʹΑΓىಈ • ֤ίϯϙʔωϯτ͸ΦʔτεέʔϧΞοϓ/Ξ΢τΛߦ͏ • SMTPͱIMAPͷηογϣϯ৘ใΛऩू͠ਫ਼៛ͳղੳͱ੍ޚΛ࣮ࢪ • ऩूσʔλʹج͍ͯ౷ܭతख๏΍ػցֶशʹΑΓղੳ • େྔͷϢʔβઐ༻ίϯςφ΁ͷৼΓ෼͚ͷεέʔϥϏϦςΟΛ֬อ

    21 ఏҊख๏: ਫ਼៛ʹղੳՄೳͳ߃ৗੑͷ͋Δϝʔϧج൫
  22. • ϝʔϧgatewayΫϥεͷίϯςφ͸ResidentContainer • εέʔϧ࣌͸ॳظίϯςφ਺͸࠷௿ҡ࣋͠ͳ͕ΒεέʔϧΞοϓorΞ΢τ • Ϣʔβͷϝʔϧૹड৴Ϋϥεͷίϯςφ͸FastContainer ※1 • શ͘ίϯςφ͕ىಈ͍ͯ͠ͳ͍ঢ়ଶ͕͋Γ͏Δํࣜ 22

    FastContainerͱResidentContainer ※1. দຊ྄հ, ۙ౻ Ӊஐ࿕, ࡾ୐ ༔հ, ྗ෢ ݈࣍, ܀ྛ ݈ଠ࿠, FastContainer: WebΞϓϦέʔγϣϯίϯςφͷىಈΛϦΞΫςΟϒʹܾఆ͢Δίϯςφ؅ཧΞʔ ΩςΫνϟ, ৘ใॲཧֶձݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ʢIOTʣ,2017-IOT-38, Vol.14, pp.1-8, 2017೥6݄.
  23. %PWFDPU "VTFS 1PTUpY  1NJMUFS "VTFS 1PTUpY 1NJMUFS */ 1PTUpY

     1NJMUFS 065 )PNFPTUBUJD"*&.BJM4ZTUFN'MPX ֎෦.6" ֎෦.5" .BJM#PY )PNFPTUBUJD"*&.BJM4ZTUFN %PWFDPU
 -.51
 "VTFS WJSVTHX WJSVTHX 'BTU$POUBJOFS 3FTJEFOU$POUBJOFS 1PTUpY NSVCZ %PWFDPU "VTFS .BJM#PY %PWFDPU
 -.51
 "VTFS %PWFDPU "VTFS .BJM#PY %PWFDPU
 -.51
 "VTFS %PWFDPU "VTFS .BJM#PY %PWFDPU
 -.51
 "VTFS %PWFDPU NSVCZ "VTFS .BJM#PY %PWFDPU
 -.51
 "VTFS ਺ສίϯςφͷεέʔϥϏϦςΟ $.%# "1* 1PTUpY  1NJMUFS "VTFS 1PTUpY  1NJMUFS "VTFS 1PTUpY  1NJMUFS "VTFS -#
  24. • Ϣʔβͱ͸1ͭͷίϯςφʹඥͮ͘ܖ໿Ϣʔβ • Ϣʔβ୯ҐͰͷྲྀྔ੍ݶͱTCPίϯςφʹΑΔΦʔτεέʔϦϯά • ૹ৴࣌ʹ੍ݶΛ௒͍͑ͯͨΒυϝΠϯ୯ҐͰΤϥʔΛฦͤΔΑ͏ʹ • Postfixࣗମͷ੍ݶͱίϯςφͷϦιʔε੍ݶΛܖ໿Ϣʔβ୯ҐͰ࣮ݱ • ϢʔβΛ·ͱΊͯGatewayͰεέʔϦϯά͢ΔΑΓཻ౓Λࡉ੍͔͘ޚͰ͖Δ

    24 Ϣʔβ༻ͷSMTPίϯςφΛ࣋ͭཧ༝
  25. • ηΩϡϦςΟͱͯ͠ͷ໾ׂ • ΢Οϧεήʔτ΢ΣΠΛू໿ͯ͠௨ա͢ΔΑ͏ʹ • ղੳσʔλʹج͍ͮͯήʔτ΢ΣΠͰΩϡʔΛऔΓࠐ·ͣʹ͖ͪΜͱ஄͘ 25 Postfix In/Outͷ໾ׂ

  26. *."1 "VTFS *."1 "VTFS %BUB /'4 *."1 "VTFS 0@&9$-CBTFEMPDLXJUIPVUNNBQ "VUP4DBMF6Q

    "VUP4DBMF0VU 4.51 "VTFS 4.51 */ 4.51 */ 4.51 */ .BJMEJS JOEFYDBDIJOH 'BTU$POUBJOFS 3FTJEFOU$POUBJOFS 4.51 065 4.51 065 4.51 065 .JMUFS $.%# 
 "1* *."1 1MVHJO .JMUFS 0@&9$-CBTFEMPDLXJUIPVUNNBQ .BJMRVFVFT 0@&9$-CBTFEMPDLXJUIPVUNNBQ .BJMRVFVFT "* .BJMEJS DPOOFDUJPO ·IPSJ4ZUFN )PNFPTUBUJD"*&.BJM4ZTUFN-BZFS &.BJMCFIBWJPS*' .JMUFS
  27. %PWFDPU "VTFS %PWFDPU "VTFS %BUB /'4 %PWFDPU "VTFS EPUMPDL "VUP4DBMF6Q

    "VUP4DBMF0VU 1PTUpY "VTFS 1PTUpY */ 1PTUpY */ 1PTUpY */ .BJMEJS JOEFYDBDIJOH 'BTU$POUBJOFS 3FTJEFOU$POUBJOFS 1PTUpY 065 1PTUpY 065 1PTUpY 065 1NJMUFS $.%#
 
 "1* %PWFDPU NSVCZ QMVHJO 1NJMUFS EPUMPDL .BJMRVFVFT EPUMPDL .BJMRVFVFT "* .BJMEJS DPOOFDUJPO ·IPSJ4ZUFN )PNFPTUBUJD"*&.BJM4ZTUFN-BZFS &.BJMCFIBWJPS*' 1NJMUFS
  28. • SMTP͸Pmilterʢmilterαʔόʣ※1 • SMTPαʔόϓϩηεͱ͸ಠཱͯ͠ಈ࡞ʢෳ਺ಈ࡞΋Մೳʣ • IMAP͸dovecot-mruby-pluginʢIMAP֦ுϓϥάΠϯʣ※2 • IMAPαʔόϓϩηε୯ҐͰಈ࡞ 28 ૹड৴ηογϣϯσʔλͷճऩ

    ˞IUUQTHJUIVCDPNNBUTVNPUPSZQNJMUFS ˞IUUQTHJUIVCDPNNBUTVNPUPSZEPWFDPUNSVCZQMVHJO
  29. • େྔʢ਺ສͷن໛ʣͷυϝΠϯʹඥͮ͘relayઌίϯςφΛಈతʹܾఆ͍ͨ͠ • key͔ΒͷvalueऔಘॲཧΛΫϥΠΞϯτɾαʔό྆ํ޲͔Βఆ͍ٛͨ͠ • postfix-mrubyͷ׆༻ ※1 • relayઌ୳ࡧ࣌ͷkey͔Βͷlookup tableॲཧΛmrubyͰ৽ͨʹఆٛՄೳ

    • HTTPΫϥΠΞϯτͱAPIؒͷ௨৴σʔλɾϑΥʔϚοτ΋ࣗ෼ୡͰ࣮૷Մೳ 29 େྔͷLMTPίϯςφʹର͢ΔrelayͷৼΓ෼͚ ˞IUUQTHJUIVCDPNUNUNQPTUpYNSVCZ
  30. • ·ͣ͸ϧʔϧϕʔεͰඞཁͰ͋Ε͹ػցֶश΍౷ܭख๏ʹΑΔ෼ੳ • ϝʔϧͷηογϣϯ਺΍τϥϑΟοΫʹ߹ΘͤͯεέʔϦϯά • ෆਖ਼ͳτϥϑΟοΫύλʔϯΛݕ஌ͨ͠ΒߜΔͳͲ • SMTPͷ౿Έ୆΍ΞΧ΢ϯτ৐ͬऔΓͷݕग़Λ࣍ͷݚڀͱͯ͠૝ఆ • ղੳ݁Ռ͔ΒηογϣϯΛڋ൱ͨ͠Γ੍ޚ͢Δॲཧ͸pmilterͱdovecot-

    mruby-pluginͰϓϩάϥϚϒϧʹఆٛՄೳ 30 ηογϣϯσʔλͷղੳ
  31. • TCP-FastContainerʹରԠͤ͞Δͱϙʔτ͕৭ʑʹͳΔ • ϝʔϧͰ΋5225ΛIMAPʹ࢖͏ύλʔϯͳͲ • DNSͷtxtϨίʔυͰࣗಈMUAઃఆΛ͢Δͷ͕͋Δ • RFC6186 Use of

    SRV Records for Locating Email Submission/Access Services • SRVϨίʔυʹϙʔτͷઃఆͳͲΛॻ͍ͯMUA͕ͦΕΛݟͯ͘ΕΔ 31 ϝʔϧΫϥΠΞϯτઃఆͷࣗಈԽ
  32. 4. ·ͱΊ

  33. • ۝भେֶ৘ใج൫ݚڀ։ൃηϯλʔͱڞಉݚڀ • ϝʔϧͷྲྀྔ੍ޚΛࡉ͔͘ߦ͑ΔΑ͏ͳج൫ͷઃܭ • ϝʔϧΠϯελϯε͕ΦʔτεέʔϦϯά • ηογϣϯ୯ҐͰىಈ͠ɺҰఆظؒىಈޙɺఀࢭ͢Δ॥؀Λ܁Γฦ͢ • ηογϣϯσʔλΛਫ਼៛ʹऩू͠ඇಉظͰղੳՄೳͳج൫

    • NIIΫϥ΢υ࣮ূ࣮ݧ؀ڥʹίϯςφج൫Λల։͠ςετ༧ఆ 33 ߃ৗੑͷ͋Δਫ਼៛ʹղੳՄೳͳϝʔϧج൫