九州大学・ペパボ研究所共同研究:メール基盤の安定性向上とリソース管理の再設計
松本 亮介*, 小田 知央*, 笠原 義晃**, 嶋吉 隆夫**, 岡村 耕二** *Pepabo R&D Institute, GMO Pepabo, Inc. / **九州大学 情報基盤研究開発センター 2017.12.7 CKP-QGPOP研究会
भେֶɾϖύϘݚڀॴڞಉݚڀɿϝʔϧج൫ͷ҆ఆੑ্ͱϦιʔεཧͷ࠶ઃܭদຊ ྄հ*, খా ԝ*, ּݪ ٛߊ**, ౢ٢ ོ**, Ԭଜ ߞೋ***Pepabo R&D Institute, GMO Pepabo, Inc. / **भେֶ ใج൫ݚڀ։ൃηϯλʔ2017.12.7 CKP-QGPOPݚڀձਫ਼៛ʹղੳՄೳͳ߃ৗੑͷ͋Δϝʔϧج൫ͷઃܭ
View Slide
1. എܠͱత2. ؔ࿈ݚڀ: FastContainer3. TCPίϯςφͷԠ༻ͱϝʔϧج൫4. ·ͱΊ2࣍
1.എܠͱత
• ࠓͳ͓ݱͷϝʔϧૹड৴γεςϜ• ୯ҰͷαʔόʹෳͷΞΧϯτΛಉډͤ͞Δ͜ͱγεςϜ͕ଟ͍• ΞΧϯτͬऔΓେྔૹ৴ɺSPAMϝʔϧɺϝʔϧԆͳͲ͕՝• ಛఆͷΞΧϯτͷϦιʔε༗͕ଞͷΞΧϯτʹӨڹΛ༩͑Δ• ͦΕΒͷ՝ʹ͏ӡ༻ɾαϙʔτίετͷ૿େ4എܠ
• ߴूੵϚϧνΞΧϯτܕͷϝʔϧૹड৴γεςϜͷ҆ఆԽ• ςφϯτؒͷϦιʔεڝ߹Λগͳ҆͘͠ఆͨ͠ϝʔϧγεςϜΛ࣮ݱ• ੩తͳྲྀྔ੍ݶͰͳ͘దԠతͳྲྀྔɾϦιʔε੍ݶʹΑΓշదͳڥΛ࣮ݱ• େྔૹ৴࣌ݕͱͱʹΦʔτεέʔϦϯάʹΑΔϦιʔε૿ڧ• ֤ίϯϙʔωϯτͰηογϣϯσʔλΛอଘ͠ղੳʹ׆༻• ྲྀྔ੍ݶɺҟৗݕɺෆਖ਼ݕɺΦʔτεέʔϦϯάɺػցֶशͳͲʹ׆༻5త
• ߃ৗੑͷ͋Δਫ਼៛ʹղੳՄೳͳϝʔϧج൫ʹؔ͢Δݚڀ։ൃ• NIIΫϥυ࣮ূ࣮ݧʹ͓͚Δ৽͍͠ίϯςφج൫ͷల։ͱݕূ• Ԡ༻ͱͯ͠৽͍͠ϝʔϧج൫ͷઃܭ ← ࠓͷൃද• ৽͍͠ίϯςφج൫ = FastContainerΞʔΩςΫνϟʹج࣮ͮ͘6भେֶ ใج൫ݚڀ։ൃηϯλʔͱڞಉݚڀ
2.ؔ࿈ݚڀ: FastContainer
FastContainer※1ʹ͍ͭͯ※1. দຊ྄հ, ۙ౻ Ӊஐ࿕, ࡾ ༔հ, ྗ ݈࣍, ܀ྛ ݈ଠ, FastContainer: WebΞϓϦέʔγϣϯίϯςφͷىಈΛϦΞΫςΟϒʹܾఆ͢ΔίϯςφཧΞʔΩςΫνϟ, ใॲཧֶձݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ʢIOTʣ,2017-IOT-38, Vol.14, pp.1-8, 20176݄.
• ಥൃతͳΞΫηε͚࣌ͩεέʔϧ͢Δͷͳ͍ͥ͠ͷ͔ʁ• γεςϜ͕ෆมੑΛ࣋ͭͱมԽେ͖ͳίετ͕͏• γεςϜͷߏཁૉෆมੑΛ࣋ͪঢ়ଶมԽͷίετ͕ߴ͍• ෆมੑΛҡ࣋͢Δ͜ͱ͕γεςϜཧͷతͰ͋Δ• ఆͷൣғͰ࣭Λ࠷େԽ͢Δ͜ͱΛతͱ͍ͯ͠Δ• ఆͰ͖ͳ͍ΞΫηεूத͕ଟൃ͢Δ࣌ʹෆ͖9ෆมੑΛ͏γεςϜͷ՝
1. ΠϯελϯεՃॲཧ͕Ͱ͋Δ͜ͱ2. ϋʔυΣΞϦιʔεͷར༻ޮͷ͞3. εέʔϦϯά͖͢ঢ়گݕͷϦΞϧλΠϜੑͷ͞4. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷԆ10ҰൠతͳԾԽج൫ͷΦʔτεέʔϧͷ՝
1. ΠϯελϯεՃॲཧ͕Ͱ͋Δ͜ͱ2. ϋʔυΣΞϦιʔεͷར༻ޮͷ͞3. εέʔϦϯά͖͢ঢ়گݕͷϦΞϧλΠϜੑͷ͞4. ۭ͖Ϧιʔε֬ೝͷͨΊͷεέδϡʔϦϯάॲཧͷԆ11ҰൠతͳԾԽج൫ͷΦʔτεέʔϧͷ՝1.ͱ2.ͷ՝ΛղܾͰ͖ΔΞʔΩςΫνϟͷఏҊ
• ঢ়ଶͷมԽΛߴʹߦ͑ͯԠతʹಈ࡞Ͱ͖Δ͜ͱΛॏࢹ• γεςϜͷཁૉͷఀࢭ͔ΒىಈॲཧͷޮԽʹண• γεςϜͷཁૉͷఀࢭঢ়ଶΛڐ༰͢ΔγεςϜ• ৗʹఀࢭͱىಈ͕॥Մೳͳ߃ৗੑΛ࣋ͭγεςϜΛࢦ͢• ॥Մೳ = Մ༻ੑ͕ߴ͘ৗʹมԽՄೳͳج൫Λ࣮ݱͰ͖Δ12Մ༻ੑߴ͘มԽʹڧ͍ج൫Λઃܭ͢Δʹʁ
มԽ͠ଓ͚Δ͜ͱ͔ΒಘΒΕΔ҆ఆੑ13ϗετ"ϗετ"ϗετ"ϗετ" ϗετ"Πϯλʔωοτϗετ"ϗετ"ϗετ"͕ͯఀࢭԠతʹىಈԠతʹεέʔϧΞοϓऩ༰αʔόAऩ༰αʔόBHTTPϦΫΤετԠతʹεέʔϧΞτ• ϗετͷىಈͱఀࢭΛ॥• ৗʹ॥͠ଓ͚ΔΞʔΩςΫνϟ• มԽ͠ଓ͚Δ͜ͱʹΑΔ҆ఆੑ• ॥ͷվળΛٻৗʹมԽՄೳͰ͋ΔͨΊಥൃతͳΞΫηεूதͷΑ͏ͳมԽʹੑͷ͋ΔΞʔΩςΫνϟΛ࣮ݱՄೳ
• ϗετͷىಈɾෳɾఀࢭɾ૿ڧॲཧͷޮԽΛॏࢹ• ֤छॲཧΛHTTPϦΫΤετ࣌ʹϦΞΫςΟϒʹ࣮ࢪ• ϗετʹίϯςφܕԾԽΛ࠾༻ͯ͠ىಈΛߴʹ࣮ݱ• ϦΫΤετʹج͍ͯϦΞΫςΟϒʹίϯςφͷঢ়ଶΛܾఆ14FastContainerΞʔΩςΫνϟͱ໋໊
HTTP FastContainerͷϑϩʔ158FC1SPYZʢOHY@NSVCZ$.%#ʴ"1*-PDBM8FC1SPYZOHY@NSVCZ$MJFOU ίϯςφίϯςφίϯςφw )551ϦΫΤετͷ)PTUOBNFΛΩʔʹɺ$.%# ߏཧ%#͔ΒίϯςφͷใΛऔಘ)551 4ϦΫΤετw ίϯςφͷ*1ͱϙʔτʹج͍ͯίϯςφʹϓϩΩγw ίϯςφ͕-JTUFO͍ͯ͠ͳ͍߹$.%#͔ΒίϯςφใΛಘͯىಈ$POUBJOFS&OHJOFIBDPOJXB
16335ඵ࣌ͰεέʔϧΞτΛ࣮ࢪ͠ɺ340ඵ࣌Ͱෛՙࢄ͕։࢝͞Ε͍ͯΔɻ5ສϦΫΤετҎ߱2ίϯςφʹεέʔϧΞτ͞ΕͨͨΊɺϨεϙϯελΠϜ͕ҎԼͱͳͬͯΓͷ5ສϦΫΤετ࣌ؒͰॲཧ͍ͯ͠Δ͜ͱ͕͔Δɻ
3.TCP-FastContainerͷԠ༻ͱϝʔϧج൫
• HTTPϕʔε͚ͩͰͳ͘TCP/UDPϕʔεͷFastContainerΛ࣮ݱͤ͞Δ• HTTPϕʔεͩͱdomainΛΩʔʹৼΓ͚͕Մೳ• TCP/UDPϕʔεͩͱϙʔτͱIPΞυϨεϕʔεͷৼΓ͚͕ඞཁ• ϓϩτίϧͷதΛݟͣʹΑΓ൚༻Խͤ͞Δ18HTTPϕʔεͷFastContainerͷԠ༻※1. দຊ྄հ, ۙ౻ Ӊஐ࿕, ࡾ ༔հ, ྗ ݈࣍, ܀ྛ ݈ଠ, FastContainer: WebΞϓϦέʔγϣϯίϯςφͷىಈΛϦΞΫςΟϒʹܾఆ͢ΔίϯςφཧΞʔΩςΫνϟ, ใॲཧֶձݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ʢIOTʣ,2017-IOT-38, Vol.14, pp.1-8, 20176݄.
͜Ε·ͰͷHTTP-FastContainer198FC1SPYZʢOHY@NSVCZ$.%#-PDBM8FC1SPYZOHY@NSVCZ-74$MJFOU ίϯςφίϯςφίϯςφPSϙʔτΛ8FC1SPYZྲྀ͢)551ϦΫΤετ͔Β)PTUOBNFΛΩʔʹɺ$.%#͔Βϗετ04ͷ*1ͱίϯςφͷ*1ͱϙʔτΛऔಘ)551 4ϦΫΤετίϯςφͷ*1ͱϙʔτʹج͍ͯίϯςφʹϓϩΩγɻίϯςφͷ*1ϙʔτɺ8FC1SPYZ͔Βϔομͱͯ͠༩͞Εͯ͘Δɻίϯςφ͕-JTUFO͍ͯ͠ͳ͍߹$.%#͔ΒίϯςφใΛಘͯىಈͤ͞Δɻ$POUBJOFS&OHJOFIBDPOJXBΠϯλʔωοτϓϥΠϕʔτωοτϫʔΫ
TCP/UDP-FastContainer20$.%#-PDBM5$16%11SPYZOHY@NSVCZ-74$MJFOU ίϯςφίϯςφίϯςφάϩʔόϧ*1ΞυϨεϙʔτʹରԠ͢Δ5$16%1ϓϩΩγͷ*1ΞυϨεϙʔτʹ'PSXBSEάϩʔόϧ*1ΞυϨεϙʔτϦΫΤετ'PSXBSE͞Ε͖ͯͨύέοτΛड৴ͨ͠αʔό*1ΞυϨεϙʔτʹඥͮ͘ίϯςφใΛ$.%#͔Βಘͯɺίϯςφ͕ىಈ͍ͯͨ͠ΒQSPYZɺىಈ͍ͯ͠ͳ͚Είϯςφىಈ͔ͯ͠ΒQSPYZ$POUBJOFS&OHJOFIBDPOJXBΠϯλʔωοτϓϥΠϕʔτωοτϫʔΫϗετ04ϙʔτϓʔϧάϩʔόϧ*1ΞυϨεɿϙʔτϓʔϧ
• Ϣʔβઐ༻ͷSMTPͱIMAPTCPϕʔεͷFastContainerʹΑΓىಈ• ֤ίϯϙʔωϯτΦʔτεέʔϧΞοϓ/ΞτΛߦ͏• SMTPͱIMAPͷηογϣϯใΛऩू͠ਫ਼៛ͳղੳͱ੍ޚΛ࣮ࢪ• ऩूσʔλʹج͍ͯ౷ܭతख๏ػցֶशʹΑΓղੳ• େྔͷϢʔβઐ༻ίϯςφͷৼΓ͚ͷεέʔϥϏϦςΟΛ֬อ21ఏҊख๏: ਫ਼៛ʹղੳՄೳͳ߃ৗੑͷ͋Δϝʔϧج൫
• ϝʔϧgatewayΫϥεͷίϯςφResidentContainer• εέʔϧ࣌ॳظίϯςφ࠷ҡ࣋͠ͳ͕ΒεέʔϧΞοϓorΞτ• Ϣʔβͷϝʔϧૹड৴ΫϥεͷίϯςφFastContainer ※1• શ͘ίϯςφ͕ىಈ͍ͯ͠ͳ͍ঢ়ଶ͕͋Γ͏Δํࣜ22FastContainerͱResidentContainer※1. দຊ྄հ, ۙ౻ Ӊஐ࿕, ࡾ ༔հ, ྗ ݈࣍, ܀ྛ ݈ଠ, FastContainer: WebΞϓϦέʔγϣϯίϯςφͷىಈΛϦΞΫςΟϒʹܾఆ͢ΔίϯςφཧΞʔΩςΫνϟ, ใॲཧֶձݚڀใࠂΠϯλʔωοτͱӡ༻ٕज़ʢIOTʣ,2017-IOT-38, Vol.14, pp.1-8, 20176݄.
%PWFDPU"VTFS1PTUpY1NJMUFS"VTFS1PTUpY1NJMUFS*/1PTUpY1NJMUFS065)PNFPTUBUJD"*&.BJM4ZTUFN'MPX֎෦.6" ֎෦.5".BJM#PY)PNFPTUBUJD"*&.BJM4ZTUFN%PWFDPU -.51 "VTFSWJSVTHXWJSVTHX'BTU$POUBJOFS 3FTJEFOU$POUBJOFS1PTUpYNSVCZ%PWFDPU"VTFS.BJM#PY%PWFDPU -.51 "VTFS%PWFDPU"VTFS.BJM#PY%PWFDPU -.51 "VTFS%PWFDPU"VTFS.BJM#PY%PWFDPU -.51 "VTFS%PWFDPUNSVCZ"VTFS.BJM#PY%PWFDPU -.51 "VTFSສίϯςφͷεέʔϥϏϦςΟ$.%#"1*1PTUpY1NJMUFS"VTFS1PTUpY1NJMUFS"VTFS1PTUpY1NJMUFS"VTFS-#
• Ϣʔβͱ1ͭͷίϯςφʹඥͮ͘ܖϢʔβ• Ϣʔβ୯ҐͰͷྲྀྔ੍ݶͱTCPίϯςφʹΑΔΦʔτεέʔϦϯά• ૹ৴࣌ʹ੍ݶΛ͍͑ͯͨΒυϝΠϯ୯ҐͰΤϥʔΛฦͤΔΑ͏ʹ• Postfixࣗମͷ੍ݶͱίϯςφͷϦιʔε੍ݶΛܖϢʔβ୯ҐͰ࣮ݱ• ϢʔβΛ·ͱΊͯGatewayͰεέʔϦϯά͢ΔΑΓཻΛࡉ੍͔͘ޚͰ͖Δ24Ϣʔβ༻ͷSMTPίϯςφΛ࣋ͭཧ༝
• ηΩϡϦςΟͱͯ͠ͷׂ• ΟϧεήʔτΣΠΛूͯ͠௨ա͢ΔΑ͏ʹ• ղੳσʔλʹج͍ͮͯήʔτΣΠͰΩϡʔΛऔΓࠐ·ͣʹ͖ͪΜͱ͘25Postfix In/Outͷׂ
*."1"VTFS*."1"VTFS%BUB /'4*."1"VTFS0@&9$-CBTFEMPDLXJUIPVUNNBQ "VUP4DBMF6Q"VUP4DBMF0VU4.51"VTFS4.51*/4.51*/4.51*/.BJMEJSJOEFYDBDIJOH'BTU$POUBJOFS3FTJEFOU$POUBJOFS4.510654.510654.51065.JMUFS$.%# "1**."11MVHJO.JMUFS0@&9$-CBTFEMPDLXJUIPVUNNBQ .BJMRVFVFT0@&9$-CBTFEMPDLXJUIPVUNNBQ .BJMRVFVFT"*.BJMEJSDPOOFDUJPO·IPSJ4ZUFN)PNFPTUBUJD"*&.BJM4ZTUFN-BZFS&.BJMCFIBWJPS*'.JMUFS
%PWFDPU"VTFS%PWFDPU"VTFS%BUB /'4%PWFDPU"VTFSEPUMPDL"VUP4DBMF6Q"VUP4DBMF0VU1PTUpY"VTFS1PTUpY*/1PTUpY*/1PTUpY*/.BJMEJSJOEFYDBDIJOH'BTU$POUBJOFS3FTJEFOU$POUBJOFS1PTUpY0651PTUpY0651PTUpY0651NJMUFS$.%# "1*%PWFDPUNSVCZQMVHJO1NJMUFSEPUMPDL.BJMRVFVFTEPUMPDL.BJMRVFVFT"*.BJMEJSDPOOFDUJPO·IPSJ4ZUFN)PNFPTUBUJD"*&.BJM4ZTUFN-BZFS&.BJMCFIBWJPS*'1NJMUFS
• SMTPPmilterʢmilterαʔόʣ※1• SMTPαʔόϓϩηεͱಠཱͯ͠ಈ࡞ʢෳಈ࡞Մೳʣ• IMAPdovecot-mruby-pluginʢIMAP֦ுϓϥάΠϯʣ※2• IMAPαʔόϓϩηε୯ҐͰಈ࡞28ૹड৴ηογϣϯσʔλͷճऩ˞IUUQTHJUIVCDPNNBUTVNPUPSZQNJMUFS˞IUUQTHJUIVCDPNNBUTVNPUPSZEPWFDPUNSVCZQMVHJO
• େྔʢສͷنʣͷυϝΠϯʹඥͮ͘relayઌίϯςφΛಈతʹܾఆ͍ͨ͠• key͔ΒͷvalueऔಘॲཧΛΫϥΠΞϯτɾαʔό྆ํ͔Βఆ͍ٛͨ͠• postfix-mrubyͷ׆༻ ※1• relayઌ୳ࡧ࣌ͷkey͔Βͷlookup tableॲཧΛmrubyͰ৽ͨʹఆٛՄೳ• HTTPΫϥΠΞϯτͱAPIؒͷ௨৴σʔλɾϑΥʔϚοτࣗୡͰ࣮Մೳ29େྔͷLMTPίϯςφʹର͢ΔrelayͷৼΓ͚˞IUUQTHJUIVCDPNUNUNQPTUpYNSVCZ
• ·ͣϧʔϧϕʔεͰඞཁͰ͋Εػցֶश౷ܭख๏ʹΑΔੳ• ϝʔϧͷηογϣϯτϥϑΟοΫʹ߹ΘͤͯεέʔϦϯά• ෆਖ਼ͳτϥϑΟοΫύλʔϯΛݕͨ͠ΒߜΔͳͲ• SMTPͷ౿ΈΞΧϯτͬऔΓͷݕग़Λ࣍ͷݚڀͱͯ͠ఆ• ղੳ݁Ռ͔ΒηογϣϯΛڋ൱ͨ͠Γ੍ޚ͢Δॲཧpmilterͱdovecot-mruby-pluginͰϓϩάϥϚϒϧʹఆٛՄೳ30ηογϣϯσʔλͷղੳ
• TCP-FastContainerʹରԠͤ͞Δͱϙʔτ͕৭ʑʹͳΔ• ϝʔϧͰ5225ΛIMAPʹ͏ύλʔϯͳͲ• DNSͷtxtϨίʔυͰࣗಈMUAઃఆΛ͢Δͷ͕͋Δ• RFC6186 Use of SRV Records for Locating Email Submission/AccessServices• SRVϨίʔυʹϙʔτͷઃఆͳͲΛॻ͍ͯMUA͕ͦΕΛݟͯ͘ΕΔ31ϝʔϧΫϥΠΞϯτઃఆͷࣗಈԽ
4.·ͱΊ
• भେֶใج൫ݚڀ։ൃηϯλʔͱڞಉݚڀ• ϝʔϧͷྲྀྔ੍ޚΛࡉ͔͘ߦ͑ΔΑ͏ͳج൫ͷઃܭ• ϝʔϧΠϯελϯε͕ΦʔτεέʔϦϯά• ηογϣϯ୯ҐͰىಈ͠ɺҰఆظؒىಈޙɺఀࢭ͢Δ॥Λ܁Γฦ͢• ηογϣϯσʔλΛਫ਼៛ʹऩू͠ඇಉظͰղੳՄೳͳج൫• NIIΫϥυ࣮ূ࣮ݧڥʹίϯςφج൫Λల։͠ςετ༧ఆ33߃ৗੑͷ͋Δਫ਼៛ʹղੳՄೳͳϝʔϧج൫