第3å Web System Architecture ç ç©¶ä¼ã§ç»å£ãã¦ãã¾ããããã®äºç¨¿ã¨ã¹ã©ã¤ããå ¬éãã¾ãã
ä»åã大å¤ãããããçºè¡¨ã°ããã§ãçºè¡¨15åè°è«15åã¨ããç ç©¶ä¼ã§ããã大ä½è°è«ãçãä¸ãã£ã¦è°è«30åã«ãªã£ãããã¦ãã¾ãããåçºè¡¨ãããããããã«æ´ç·´ããããæ°ããã¢ã¤ãã¢ãçã¾ããããã¦ã¨ã¦ãè¯ãåµçºã§ãããããã¦æã大åãªã®ã¯ãããæ¥½ããã§ãããã¨ã ã¨æãã¾ããããããããããããæ°æã¡ãå¿ããã«ãæèãæ·±ãã¦ãããªããæ±ç¨åãããã¨ã«ææ¦ãããã¨ãçã§ç¶ç¶ãã¦ããããè¯ããªã¨æã£ã¦ãã¾ãããä½ããæ°ããåå ãããã¨æã£ãæ¹ããéå£ãªãåå ã§ããããã«æ´»åãã¦ããããã¨èãã¦ãã¾ãã
websystemarchitecture.hatenablog.jp
以ä¸ãäºç¨¿ã§ãã
- å ±è
- æ¦è¦
- 1. ã¯ããã«
- 2. é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ã®æµéå¶å¾¡ã®èª²é¡
- 3. ææ¡ææ³ã®è¨è¨
- 4. æå¸¸æ§ã®ããã¡ã¼ã«åºç¤ã®å®è£
- 5. ã¾ã¨ã
- è¬è¾
- çºè¡¨ã¹ã©ã¤ã
å ±è
æ¾æ¬ 亮ä»1,4a), å°ç° ç¥å¤®1 ç¬ å 義æ2 å¶å é夫2 éå æä»3 æ æ å¥å¤ªé1 岡æ èäº2
GMO ããããããæ ªå¼ä¼ç¤¾ ããããããç ç©¶æ Pepabo Research and Development Institute, GMO Pepabo, Inc., Tenjin, Chuo ku, Fukuoka 810-0001 Japan
ä¹å·å¤§å¦ æ å ±åºç¤ç ç©¶éçºã»ã³ã¿ã¼ Research Institute for Information Technology, Kyushu University
ä¹å·å¤§å¦ ãµã¤ããã¼ã»ãã¥ãªãã£ã»ã³ã¿ã¼ Cybersecurity Center, Kyushu University
ãããã¤ã³ã¿ã¼ãããæ ªå¼ä¼ç¤¾ ãããã¤ã³ã¿ã¼ãããç ç©¶æ SAKURA Internet Inc. SAKURA Internet Research Center
a) r-matsumoto (at) sakura.ad.jp
æ¦è¦
æ§ã ãªã³ãã¥ãã±ã¼ã·ã§ã³ãµã¼ããã¹ããæ®åããä¸ï¼ä»ããªãã¡ã¼ã«ã¯åºãå©ç¨ããã¦ãã.ã¡ã¼ã«ãµã¼ããã¹ãæä¾ããäºæ¥è ã¦ãã¯ï¼å¤§éã®ã¡ã¼ã«ã¢ã«ã¦ã³ãã管çããããã«ï¼ãµã¼ããã«é«éç©ã«ã¡ã¼ã«ã¢ã«ã¦ã³ããå容ãããã¨ã¦ããªã½ã¼ã¹å¹çãé«ãã¦ãã.䏿¹ã¦ãï¼ç¹å®ã®ã¢ã«ã¦ã³ãã«ãããªã½ã¼ã¹å æã«ããä»ã®ã¢ã«ã¦ã³ãããå½±é¿ãåãï¼ãµã¼ããã¹ã®ãµããã¼ãã»éç¨ã³ã¹ãã®å¢å¤§ãã¡ã¼ã«é å»¶ãªã¨ãã®åé¡ããå¾ãçµ¶ããªã.æ¬è«æã¦ãã¯ï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã¡ã¼ã«ã·ã¹ãã ãå®å®åããããã®ï¼ç²¾ç·»ã«è§£æå¯è½ãªæå¸¸æ§ã®ããã¡ã¼ã«åºç¤ã®è¨è¨ã¨å®è£ ã«ã¤ãã¦è¿°ã¸ãã.
1. ã¯ããã«
SNS ããã£ãããµã¼ããã¹ã¨ãã£ãã³ãã¥ãã±ã¼ã·ã§ã³ ãµã¼ããã¹ããæ®åããä¸ï¼ä»ããªãã¡ã¼ã«ã¯åºãå©ç¨ããã¦ãã.ã¡ã¼ã«ã¯ï¼åºãä¸çã«æ®åãããã¨ã¨ï¼éä¿¡å´ã¨å ä¿¡å´åæ¹åã¦ãã®å©ç¨ããåæã¨ãªãããï¼ä¸¡è ã®åæãªãã¡ã¼ã«ã«ããã³ãã¥ãã±ã¼ã·ã§ã³ãå¥ã®ãµã¼ããã¹ã«å¤æ´ã ããã¨ã¯é£ãã.ãã®ãããªèæ¯ã®ä¸ï¼ã¡ã¼ã«ãµã¼ããã¹ã«ã¯ï¼spam ã¡ã¼ã«å¯¾ç*1ã大ééåä¿¡ã®åé¡*2çã«å¯¾å¿ããªããããï¼ã¡ã¼ã«ããé å»¶ããªããããªå®å®æ§ãã»ãã¥ãªãã£ã®æ ä¿ããæ±ããã¦ãã.
ã¡ã¼ã«ãµã¼ããã¹ãæä¾ãããã¹ãã£ã³ã¯ããµã¼ããã¹ãISPäºæ¥è ã¦ãã¯ï¼å¤§éã®ã¡ã¼ã«ã¢ã«ã¦ã³ãã管çãã¤ã¤ãã¼ãã ã¦ã§ã¢ã³ã¹ããéç¨ç®¡çã³ã¹ãã使¸ãï¼å®ä¾¡ã«ãµã¼ããã¹ãæä¾ããããã«ï¼åä¸ã®ãµã¼ããã«é«éç©ã«ã¡ã¼ã«ã¢ã«ã¦ã³ããå容ãã¦ãªã½ã¼ã¹å¹çãé«ãã¦ãã. é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ã¦ãã¯ï¼ã¢ã«ã¦ã³ãåä½ã®ãªã½ã¼ã¹ä½¿ç¨éãå¹çåã¦ãããããï¼ç¹å®ã®ã¢ã«ã¦ã³ãã®é«è² è·ã«ãã£ã¦ï¼åä¸ãµã¼ããã«å容ãã¦ããä»ã®ã¡ã¼ã«ã¢ã«ã¦ ã³ãããå½±é¿ãåãããã課é¡ãããã.ãã®çµæï¼ç¹å®ã®ã¢ã«ã¦ã³ãã®ä¹ã£åãã大ééåä¿¡ã«ä¼´ããªã½ã¼ã¹å æãã ãµã¼ããã®é«è² è·ãå¼ãèµ·ããï¼ãµã¼ããã¹ã®ãµããã¼ãã»éç¨ã³ã¹ãã®å¢å¤§ãã¡ã¼ã«é å»¶ãªã¨ãã®åé¡ã«ç¹ããã.
ãããã®åé¡ã解決ããããã«ï¼ä¸è¬çã«ã¯äºãã¡ã¼ã« ã¢ã«ã¦ã³ãåä½ã¦ãã¡ã¼ã«ã®åæéåä¿¡æ°ãæéåä½ã¦ãã®éä¿¡æ°å¶éçãéçã«è¨å®ãã¦ããææ³*3ããã¨ããã.ã ããï¼ãã®ãããªææ³ãæ¡ç¨ããå ´åï¼äºãè² è·ãå¶éãããã¨ã¯ã¦ãããããï¼ãµã¼ããã«å容ããã¦ããå ¨ã¦ã®ã¡ã¼ã« ã¢ã«ã¦ã³ããããµã¼ãããªã½ã¼ã¹ãé©åã«ä½¿ãããããã®å¶é å¤ã決å®ãããã¨ããé£ãã.ã¾ãï¼ä¸è¬çãªã¡ã¼ã«ãµã¼ãã ã½ããã¦ã§ã¢ã®ã¢ã«ã¦ã³ããããã¡ã¤ã³åä½ã¦ãã®å¶éææ³ã¯éå®çã¦ãï¼ç¾ä»£ã®äºæ¸¬å°é£ãªã¡ã¼ã«ã®æµéãç¶æ³ã«å¿ããã¦ï¼ ã¢ã«ã¦ã³ããããã¡ã¤ã³æ¯ã«åå¥ã®ãªã½ã¼ã¹ãå¶å¾¡ãããã¨ã¯å°é£ã¦ããã.
æ¬è«æã¦ãã¯ï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«éåä¿¡ã·ã¹ãã ãå®å®åããããã«ï¼ç²¾ç·»ã«ã»ãã·ã§ã³æ å ±ãè§£æã¦ããï¼é©å¿çã«ã¡ã¼ã«ã®æµéå¶å¾¡ããªã½ã¼ã¹å¶å¾¡ãè¡ããã¡ã¼ã«åºç¤ã®è¨è¨ã¨å®è£ ã«ã¤ãã¦è¿°ã¸ãã.ã¡ã¼ã«ã¢ãã㬠ã¹ã®ããã¡ã¤ã³åä½ã¦ãã¡ã¼ã«ã®æµéãå¶éããããã«ï¼ã¡ã¼ ã«ã«é¢ããã»ãã·ã§ã³ãåä¿¡ããæç¹ã¦ãï¼ãªã¢ã¯ãã£ãã㫠該å½ããã¡ã¤ã³å°ç¨ã®ã¡ã¼ã«ãµã¼ãããããã»ã¹ãLinuxã³ã³ããä¸ã¦ãä¸å®æéèµ·åããå¦çãè¡ã.
ã¡ã¼ã«æµéããªã½ã¼ã¹ä½¿ç¨éã®ç²¾ç·»ãªå¶å¾¡ã®å®ç¾ã¨åæã«ï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ãå®ç¾ããããã«ï¼æã ããç ç©¶éçºãã¦ããï¼å®è¡ç°å¢ã®å¤åã« ç´ æ©ãé©å¿ã¦ãããæå¸¸æ§ãæã¤ã·ã¹ãã ã¢ã¼ããã¯ãã£ã®FastContainer*4ãå¿ç¨ãã.ã¡ã¼ã«ã®æµéããªã½ã¼ ã¹ä½¿ç¨éãã䏿çã«å¢å ããå ´åã«ã¯ï¼FastContainer ã«ãã£ã¦ï¼ã¡ã¼ã«ãµã¼ãããããã»ã¹ããèµ·åãã¦ããã³ã³ããããªã¢ã¯ãã£ããã«ã¹ã±ã¼ãªã³ã¯ããããã¨ã«ãã£ã¦å¯¾å¿ãã. ã¾ãï¼å®è¡ç°å¢ã®ç¶æ å¤åã«ç´ æ©ã対å¿ã¦ãããã¢ã¼ããã¯ãã£ãå©ç¨ãã¦ï¼é«éç©ã«ã¢ã«ã¦ã³ããå容ããããã«ï¼ ã»ãã·ã§ã³ã«å¿ããã¦ãªã½ã¼ã¹ã®å²ãå½ã¦ãã³ã³ããã®ç¶æ 夿´ãåå¿çã«è¡ãï¼ãªã½ã¼ã¹ä½¿ç¨éã®å¹çåãå³ã.ã ã®ã¢ã¼ããã¯ãã£ã«ãã£ã¦ï¼ããã¡ã¤ã³åä½ã¦ãã¡ã¼ã«ãµã¼ãã ãããã»ã¹ãç«ã¡ä¸ããããã¨ã«ããåä¸ã®ããã¡ã¤ã³ã¨ãã¦å¦ çãããã¡ã¼ã«ã«å¯¾ãã¦ç²¾ç·»ã«å¶å¾¡å¯è½ã«ãã¤ã¤ï¼å ¨ä½ã¨ãã¦ã¯ï¼äºæ¸¬ã®é£ããã¡ã¼ã«æµéããªã½ã¼ã¹ä½¿ç¨éã®å¤åã«å¿ããã¦ç´ æ©ãã·ã¹ãã ã夿´ã¦ããã.
ããã«ï¼ã»ãã·ã§ã³æ å ±ãã»ãã·ã§ã³ç®¡çããã¼ã¿ããã¼ã¹ã«ä¿åãï¼ã¡ã¼ã«ã®éåä¿¡æã«ã»ãã·ã§ã³æ å ±ãè§£æã¦ãã ãããã«ãã.ã¡ã¼ã«éåä¿¡ã®æµéãå¶å¾¡ãããå ´åã«ã¯ï¼ã»ãã·ã§ã³æ å ±ã®çµ±è¨å¤ãæ´»ç¨ãããï¼ã·ã¹ãã 管ç è ããã»ãã·ã§ã³ããã¼ã¿ã«åºã¤ããã¦å¤æããããããã¨ã«ããï¼ã¡ã¼ã«ãµã¼ããã½ããã¦ã§ã¢ã®å¶éè¨å®ã¨Linuxã³ã³ããã®ãªã½ã¼ã¹å¶å¾¡ææ³ãçµã¿åããã¦å®ç¾ãã.ã¾ãï¼ Sendmailã®ã¡ã¼ã«ãã£ã«ã¿ã¼ããã©ã¯ãã¤ã³æ©è½ã¦ãããMilterããããã³ã«*5ãæ´»ç¨ãã¦æ¢åã® SMTP ãµã¼ããã½ããã¦ã§ã¢ã¦ããã Postfix*6ã®å¶éææ³ãæ¡å¼µãããï¼IMAP ãµã¼ ããã½ããã¦ã§ã¢ã®Dovecot*7ã®æ¡å¼µããã©ã¯ãã¤ã³ãå®è£ ãããã¨ã¦ãï¼SMTP/IMAPã³ãã³ããåä½ãã¡ã¼ã«ã¢ããã¬ã¹åä½ã¦ãã¡ã¼ã«æµéããªã½ã¼ã¹ä½¿ç¨éã精緻ã«å¶éã¦ããããã ã«ãã.
æ¬ç¨¿ã®æ§æãè¿°ã¸ãã.2 ç« ã¦ãã¯ï¼å¾æ¥ã®é«éç©ãã«ã㢠ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ã®èª²é¡ã«ã¤ãã¦æ´çãã.3 ç« ã¦ãã¯ï¼ææ¡ææ³ã®è¨è¨ã¨FastContainerã¢ã¼ããã¯ãã£ã®è¨è¨ã¤ãã¦è¿°ã¸ãï¼4 ç« ã¦ãææ¡ããã¡ã¼ã«ã·ã¹ãã ã®å®è£ ã«ã¤ãã¦è¿°ã¸ãã.5 ç« ã¦ãã¾ã¨ãã¨ãã.
2. é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ã®æµéå¶å¾¡ã®èª²é¡
ã¡ã¼ã«ãµã¼ããã¹ãæä¾ãã伿¥ã大å¦ã¦ãã¯ï¼å¤§éã®ã¡ã¼ã«ã¢ã«ã¦ã³ãã管çãã¤ã¤ãï¼ãã¼ããã¦ã§ã¢ã³ã¹ããã·ã¹ãã ã®ç®¡çã»éç¨ã³ã¹ãã使¸ããããã«ï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ãæ¡ç¨ãã¦ãã.ã¾ãï¼ã¹ãã¬ã¼ã·ããå«ãããããã±ã¼ã·ãã¦ãã®å¤§è¦æ¨¡ã¡ã¼ã«ã·ã¹ãã ã æ¡ç¨ããäºä¾ããã*8.
é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ã¦ãã¯ï¼åä¸ ã®ãµã¼ããã®ãã¼ããã¦ã§ã¢ãªã½ã¼ã¹ãï¼è¤æ°ã®ã¡ã¼ã«ã¢ã« ã¦ã³ãã®ããã¡ã¤ã³ã¦ãå ±æã¦ããããã¨ã¯ã¡ãªããã«ããªã. ããã¦ãï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ã¯ï¼ CPU ã®è«çã³ã¢ 24ï¼ã¡ã¢ãªãµã¤ã¹ã 32GB ã®æ¨ä»ã®ä¸è¬ç 㪠PC ãµã¼ããã«ããã¦ï¼ã¡ã¼ã«ã®ããã¡ã¤ã³æ°ãæ°ä¸ç¨åº¦å 容ããã·ã¹ãã ãæ³å®ãã¦ãã.åããã¡ã¤ã³ã®ã¡ã¼ã«å¦ç ã«ããããªã½ã¼ã¹ä½¿ç¨éã«å·®ç°ãããã£ãã¨ãã¦ãï¼ãã¼ããã¦ã§ã¢ãªã½ã¼ã¹ããä½ã£ã¦ããå ´åã«ããã¦ã¯ï¼ããã¡ã¤ã³é ã®ãªã½ã¼ã¹å©ç¨éã®éãã許容ã¦ããã.ãã¼ããã¦ã§ã¢ãª ã½ã¼ã¹ãå ±æãããã¨ã«ãã£ã¦è¤æ°ããã¡ã¤ã³ã¦ãã®ãªã½ã¼ ã¹ä½¿ç¨éãå¹çåãï¼åããã¡ã¤ã³ã®ãªã½ã¼ã¹ä½¿ç¨éã®éã ã«å¯¾ããéç¨ã»ç®¡çã³ã¹ãã使¸ã¦ãããã¨ããã¡ãªãããã ãã.ç¶æ³ã«ãã£ã¦ã¯ï¼ä¸è¬çã«ãµã¼ããã¹å©ç¨è ã®å°ç¨ã®ãµã¼ããã VM ãããè¤æ°ã¦ã¼ãµãã®å ±æãµã¼ããã®æ¹ãããã¼ããã¦ã§ã¢ã¹ãããã¯ããé«ãããï¼ä¾¡æ ¼ä»¥ä¸ã®æ§è½ãå¾ãããã ã¨ãããã.
䏿¹ã¦ãï¼å¤æ°ã®ããã¡ã¤ã³ãé«éç©ã«å容ãããã¨ã«ããï¼ ã²ã¨ã¤ã®ããã¡ã¤ã³ããã¡ã¼ã«ã大éã«éåä¿¡ããããããã¨ã«ãããªã½ã¼ã¹ãå æãï¼ä»ã®ããã¡ã¤ã³ããã¡ã¼ã«ãæ£å¸¸ ã«éåä¿¡ã¦ãããªããªã課é¡ãããã.ãããã£ãåé¡ã«ã㣠ã¦ï¼ãµã¼ããã¹ãããããã¤ã¿ãã®ãµããã¼ããéç¨ã»ç®¡çã³ã¹ãããå¢å ãï¼ã³ã¹ãã使¸ããããã®é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ããï¼ããã£ã¦ã³ã¹ããå¢å¤§ããããã¨ã«ã¤ãªããã.
ããã¦ãï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ã«ãããæ¡ç¨ã®ã¡ãªããã¨ããã¡ãªãããæ¯è¼ããªãããï¼æµéå¶å¾¡ã®èª²é¡ãæ´çãã.
2.1 éä¿¡æµéå¶å¾¡ææ³ã®èª²é¡
é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ã¦ãã¯ï¼ã·ã¹ãã ãä»ãã¦ã¡ã¼ã«ãéä¿¡ããå ´åã«ï¼ã¡ã¼ã«ãµã¼ããã«æ¥ ç¶ãã¦ããç¹å®ã®ã¯ã©ã¤ã¢ã³ãã®éå°ãªæ¥ç¶ã«ããå½±é¿ã ä¸ããªãããã«ããããã«æ§ã ãªãªã½ã¼ã¹å¶éææ³*9ãããã.åºãå©ç¨ããã¦ãã SMTPãµã¼ããã½ããã¦ã§ã¢ã¦ããã Postfix ã¦ãã¯ï¼æ¥ç¶ã¯ã©ã¤ã¢ã³ãåä½ã¦ã以ä¸ã®å¶éãã å¯è½ã¦ããã.
- æ¥ç¶ã¯ã©ã¤ã¢ã³ãåä½ã¦ãã®åææ¥ç¶æ°
- æ¥ç¶ã¯ã©ã¤ã¢ã³ãåä½ã¦ãã®å使éãããã®æ¥ç¶æ°
- æ¥ç¶ã¯ã©ã¤ã¢ã³ãåä½ã¦ãã®å使éãããã®ã¡ãã»ã¼ã·ãé éè¦æ±æ°
- æ¥ç¶ã¯ã©ã¤ã¢ã³ãåä½ã¦ãã®å使éãããã®éä¿¡å¯è½ãªåä¿¡è ã¢ããã¬ã¹æ°
ä¸è¨ã®ããã«ï¼ã¯ã©ã¤ã¢ã³ãåä½ã¦ãã®æè»ãªå¶éã¯å¯è½ã¦ãããããï¼ã¡ã¼ã«ã¢ã«ã¦ã³ãåä½ãããã¡ã¤ã³åä½ã¦ãã®å¶éã¯ã¦ãããªãã¨ãã課é¡ãããã.ãã®ããï¼å¤æ°ã®ã¯ã©ã¤ã¢ã³ãããæ¥ç¶ãããã£ãå ´åã«ã¯ï¼ã¡ã¼ã«ã¢ã«ã¦ã³ããããã¯ããã¡ã¤ã³åä½ã¨ãã£ãç´°ããç²åº¦ã¦ãã®ãªã½ã¼ã¹ä½¿ç¨éãé©åã«å¶éã¦ãããªã.
çè ããæå±ãã GMO ããããããæ ªå¼ä¼ç¤¾ã¦ãã¯ï¼ä¸è¬ç㪠SMTP ãµã¼ããã½ããã¦ã§ã¢ãå©ç¨ããé«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«ã·ã¹ãã ã«ããã¦ï¼ã¡ã¼ã«ã¢ããã¬ã¹ãããã¡ã¤ã³åä½ã¦ãã®åæéä¿¡æ°ãåå¥ã«å¶éã¦ãããæ©è½ãç¬èªã« å®è£ ãã¦ãã*10.ãã®å¶éã«ãã£ã¦ï¼ç¹å®ã®ã¡ã¼ã«ã¢ãã㬠ã¹ãã大éã«ã¡ã¼ã«ãå¤é¨ã«éä¿¡ããã¨ãã¦ãï¼åæéä¿¡æ°å¶éå ã¦ãããéä¿¡ã¦ãããªã.ãã®ããï¼ç¹å®ã®ã¡ã¼ã«ã¢ããã¬ã¹ãã大ééä¿¡ã«ãã£ã¦ãªã½ã¼ã¹ãå æãããã¨ã鲿¢ã¦ã ãã.
䏿¹ã¦ãï¼åæéä¿¡æ°ãéçã«è¨å®ãã¦ããï¼å ¨ã¦ã®ã¡ã¼ ã«ã¢ããã¬ã¹ãããã¡ã¤ã³ã®å¶éããåºå®ã¦ãããããï¼ãµã¼ãã㪠ã½ã¼ã¹ããä½ã£ã¦ããã¨ãã¦ããã®ãªã½ã¼ã¹ãé©åã«å©ç¨ã¦ãããªã.ã¾ãï¼ãµã¼ããå容è¨è¨æã«äºåã«ãã¼ããã¦ã§ã¢ ãã½ããã¦ã§ã¢ããé©åã«å¶éå¤ã決å®ãããã¨ã¯ï¼ã¡ã¼ ã«ã®æµéãäºæ¸¬ã¦ãããªããã¨ã¨ç¸ã¾ã£ã¦å°é£ã¦ããã.çµé¨çã«å¶éå¤ã決å®ããã¨ï¼ãã¼ããã¦ã§ã¢ãªã½ã¼ã¹ãå¿ è¦ä»¥ä¸ã«ä½ããã¦ãã¾ã£ããï¼é«è² è·ç¶æ ã«ãªã£ã¦ããæ¹ãã¦å¶éå¤ã決å®ãããªã¨ãï¼æµéã®ç®¡çã³ã¹ãããå¢å¤§ãããã¡ã¦ã ãã.
ç¹å®ã®ããã¡ã¤ã³ã®ã¡ã¼ã«éä¿¡å¦çã«å¯¾ãããªã½ã¼ã¹ä½¿ç¨éãã平常æãããè¶ éãã¦ããç¶æ³ã¦ãï¼ãªã¼ãã¹ã±ã¼ãªã³ã¯ã*11ã®ãããªãªã½ã¼ã¹è¿½å ãé¨åçã«å®æ½ãããã¨ãå°é£ã¦ããã.
2.2 åä¿¡æµéå¶å¾¡ææ³ã®èª²é¡
ã¡ã¼ã«ã·ã¹ãã ã«ãããåä¿¡å¦çã以ä¸ã® 3 ã¤ã®å¦çã«åé¡ãã.
- å¤é¨ã® MTA(Mail Transfer Agent) ãã管ç対象ã®MTA ããã¡ã¼ã«ãåä¿¡ããå¦ç
- 管ç対象㮠MTA ã«ãã¥ã¼ã¨ãã¦æºã¾ã£ãããã¼ã¿ãã¡ã¼ã«ãµã¼ããã®ã¡ã¼ã«ãããã¯ã¹ã«é éããå¦ç
- MUA(Mail User Agent) ã«ãã£ã¦ã¡ã¼ã«ãããã¯ã¹ããã¡ã¼ã«ããã¼ã¿ãåä¿¡ããå¦ç
(1) ã«ã¤ãã¦ã¯ï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã¡ã¼ã«ã·ã¹ãã ã®å ´åï¼å¤æ°ã®ããã¡ã¤ã³ã«å¯¾ããã¡ã¼ã«ãåä¿¡ããã ãï¼2.1 ç¯ã¦ãè¨åãããã¨ã¨åæ§ã«ï¼ã¡ã¼ã«ã¢ããã¬ã¹ãããã¡ ã¤ã³åä½ã¦ãåå¥ã«åä¿¡æ°ãå¶éã¦ãããããï¼éçãªè¨å®ã«ãª ãï¼å¶éå¤ãçµé¨çã«æ±ºå®ãããã¨ã¯å°é£ã¦ããã.ã¾ãï¼ å¤é¨ããã®ã¡ã¼ã«åä¿¡ã¯ï¼éä¿¡ããå ´åã¨æ¯è¼ãã¦ï¼ã¡ã¼ ã«ã·ã¹ãã ã®ãµã¼ããã¹å©ç¨è ããå¤é¨ããéããã¦ããã¡ã¼ ã«ãå¶å¾¡ã¦ãããªãããï¼ãµã¼ããã¹ã¨ãã¦ã¯ã¦ããããããã¡ã¼ ã«ãåä¿¡ã¦ãããããã«ãã¸ããã¦ããã.ãã®ããï¼éä¿¡å¦çã®å¶éã¨æ¯è¼ãã¦ï¼ã¡ã¼ã«ã·ã¹ãã ã®ã±ãã¼ãã¦ã§ã¤ã«ä½ç½®ãã MTA ã®åä¿¡å¦çã¯ï¼å¶éããå¿ è¦ãªæãããå¶éãã㨠ãã£ããã¨ããæ±ãããã.
䏿¹ã¦ãï¼å¤é¨ããã® spam ã¡ã¼ã«ãåä¿¡ãï¼å©ç¨è ã® Gmail åãã¸ã®è»¢éè¨å®ã«ãã£ã¦ spam ã¡ã¼ã«ãã大éã«è»¢ éããã¦ãã¾ããã¨ã«ããï¼Gmail å´ããæå¦ã¡ã¼ã«ãã大éã«éãè¿ããããã¨ããã.ãã®ãããªç¾è±¡ã«ãã£ã¦ï¼ (2) ã®å¦çéç¨ã«ããã¦ãµã¼ããã« defer ãã¥ã¼ãã大éã«æºã¾ãï¼ã·ã¹ãã 管çè ã«éç¥ããå±ãããï¼å¯¾å¿ãã¸ãããã¨ããªãããï¼ã·ã¹ãã 管çè ã®ç²å¼ãæããã¨ã«ãªã.æ¬ æ¥ã¡ã¼ã«ãã¥ã¼ã®ç£è¦ã¯ï¼è»¢éå MTA ããè¿ä¿¡ãããã¨ã©ã¼ã¡ã¼ã«ããé©åã¦ããããã¨ããããã·ã¹ãã 管çè ããèª èããå ´åã«å¿ è¦ã¦ãããï¼æãã㪠spam ã¡ã¼ã«ã«åºã¤ãã defer 㯠(1) ã®æ®µéã¦ããã¥ã¼ã«å ¥ãããã¨ãªãã¨ã©ã¼ãè¿ã ã¸ããã¦ããã.
(3) ã«ããã¦ã¯ï¼MUA ãã IMAP ã POP3 ã«ãã£ã¦ã¡ã¼ ã«ãåä¿¡ããéã«ï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã¡ã¼ã«ã·ã¹ãã ã¦ãã¯å¤§éã«ã¢ã¯ã»ã¹éä¸ããçãããå ´åãããã.ãã®ã ãï¼ä¾ãã¯ã IMAP/POP ãµã¼ããã½ããã¦ã§ã¢ã¨ãã¦åºã使 ããã¦ãã dovecot ã¦ãã¯ï¼ã¯ã©ã¤ã¢ã³ã IP ã¢ããã¬ã¹ã®å ææ¥ç¶æ°ãå¶éããè¨å®ã¯ããããï¼ã¡ã¼ã«ã¢ã«ã¦ã³ããããã¡ã¤ã³åä½ã¦ãåå¥ã«è¨å®ãããã¨ã¯ã¦ãããªã.ã¾ãï¼ç¹å® ã®ã¢ã«ã¦ã³ãã«ãã IMAP ã®æ¤ç´¢ã大éã¡ã¼ã«ã®æä½å¦ çã«ãã£ã¦ãªã½ã¼ã¹ãå æãããã¨ãããã.ãã®å ´åï¼ç¹ å®ã®ã¢ã«ã¦ã³ãåä½ãï¼IMAP ã³ãã³ããåä½ã¦ãã®ãªã½ã¼ã¹ä½¿ç¨éã®å¶éãããå¿ è¦ããããããï¼ãã®ãããªå¶éææ³ã¯ãªã.
ç¹å®ã®ããã¡ã¤ã³ã®ã¡ã¼ã«åä¿¡å¦çã«å¯¾ãããªã½ã¼ã¹ä½¿ç¨ éãã平常æãããè¶ éãã¦ããç¶æ³ã¦ãï¼å¹³æã«ãªã¼ãã¹ ã±ã¼ãªã³ã¯ãã®ãããªãªã½ã¼ã¹è¿½å ãé¨åçã«å®æ½ãããã¨ãå°é£ã¦ããã.ãµã¼ããã¹å©ç¨è ã«ãã£ã¦ã¯ï¼è¿½å æéãæ¯æããã¨ã«ãã£ã¦ï¼ãµã¼ããã¹ã®å¿«é©æ§ãæ±ããç¶æ³ãããå¾ãããï¼2 ç¯ã¦ãè¨åããé«éç©ãã«ãã¢ã«ã¦ã³ãåã¡ã¼ã«ã·ã¹ãã ã®ãããã»ã¹ã¢ããã«ã®ããã«ï¼å¤§éã®ã¢ã«ã¦ã³ããåä¸ã®ãµã¼ãããããã»ã¹ã¦ã管çãã¦ããå ´åã«ã¯ï¼ãããã£ãè¦æ±ã«çãããã¨ããé£ãã.
3. ææ¡ææ³ã®è¨è¨
3.1 è¨è¨æ¦è¦
2 ç¯ã®èª²é¡ããï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã¡ã¼ã«ã·ã¹ãã ã«ããã¦ï¼ã¡ã¼ã«æµéãããã¡ã¤ã³åä½ã¦ãåå¥ã«å¶å¾¡å¯è½ã¦ãããï¼æµéå¶å¾¡ã®ãã£ããã¨ãªã調æ»ã精緻ã«åéããããã¼ã¿ãã精緻ã«è§£æå¯è½ãªåºç¤ããå¿ è¦ã¦ããã.åæã«ï¼åºæ¥ãéãé«éç©ãã«ãã¢ã«ã¦ã³ãåã®ãªã½ã¼ã¹å¹ç ã®ã¡ãªããã両ç«ããå¿ è¦ããã.
æ¬ç ç©¶ã¦ãã¯ï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã¡ã¼ã«éåä¿¡ã· ã¹ãã ãå®å®åããããã«ï¼ç²¾ç·»ã«ã»ãã·ã§ã³æ å ±ãä¿åã»è§£æã¦ããï¼é©å¿çã«ã¡ã¼ã«ã®æµéå¶å¾¡ããªã½ã¼ã¹å¶å¾¡ãè¡ãããã®ã¡ã¼ã«åºç¤ã®ææ¡ã¨ãã®è¨è¨ã«ã¤ãã¦è¿°ã¸ãã.ã¡ã¼ã«ã¢ã«ã¦ã³ãã®ããã¡ã¤ã³åä½ã¦ãã¡ã¼ã«ã®æµéãå¶å¾¡ããããã«ï¼ã¡ã¼ã«ã»ãã·ã§ã³ãåä¿¡ããæç¹ã¦ãï¼ããã¡ã¤ã³åä½ã¦ããªã¢ã¯ãã£ããã«ã¡ã¼ã«ãµã¼ãããããã»ã¹ãã³ã³ããä¸ã«èµ·åããã.åæã«ã¡ã¼ã«ã®éä¿¡ï¼åä¿¡å ±ã«ã»ãã·ã§ã³æ å ±ãã»ãã·ã§ã³ç®¡çããã¼ã¿ããã¼ã¹ã«ä¿åãï¼ã¡ã¼ ã«ã®éåä¿¡æã«ã»ãã·ã§ã³æ å ±ããã®è§£æçµæã«åºãã¦æµ éå¶å¾¡ã¦ãããããã«ãã.ã»ãã·ã§ã³æ å ±ã®çµ±è¨å¤ãæ´»ç¨ ãããï¼ãµã¼ãã管çè ãã夿ããããããã¨ã«ããï¼ã¡ã¼ ã«ãµã¼ãããããã»ã¹ã®å¶éè¨å®ã¨ã³ã³ããã®ãªã½ã¼ã¹å¶å¾¡æ æ³ãçµã¿åããã¦æµéå¶å¾¡ãå®ç¾ãã.
ãããã®è¨è¨ã«ã¯ï¼æã ããç ç©¶éçºãã¦ããï¼å®è¡ç°å¢ã®å¤åã«ç´ æ©ãé©å¿ã¦ãããæå¸¸æ§ãæã¤ã·ã¹ãã ã¢ã¼ãã ã¯ãã£ã® FastContainer ã¢ã¼ããã¯ãã£*12ãå¿ç¨ãã. ã¡ã¼ã«ã®æµéã®å¢å ãæ¤ç¥ããå ´åã«ã¯ï¼FastContainer ã¢ã¼ããã¯ãã£ã«ãã£ã¦ï¼ã¡ã¼ã«ãµã¼ãããããã»ã¹ããèµ·åã ã¦ããã³ã³ãããèªåçã«ã¹ã±ã¼ã«ã¢ã¦ãï¼ã¾ãã¯ã¹ã±ã¼ ã«ã¢ãããåã®ãªã½ã¼ã¹å¢å ãè¡ã.ã¾ãï¼åå¿çã«ç¶æ ãå¤åã¦ãããç¹æ§ãæ´»ããï¼ã¡ã¼ã«é éã«å¿ è¦ãªæã«å¿ è¦ãªéãããã³ã³ãããèµ·åãããï¼ãªã½ã¼ã¹ãå²ãå½ã¦ããã¨ã¦ãã·ã¹ãã ã®ãªã½ã¼ã¹ä½¿ç¨éãå¹çåãï¼ããã¡ã¤ã³åä½ã¦ãã³ã³ãããç¨æããªããããï¼é«éç©ã«å容ãã.
3.2 FastContainer ã¢ã¼ããã¯ãã£ã®æ¦è¦
FastContaier ã¢ã¼ããã¯ãã£ã¨ã¯ï¼å®è¡ç°å¢ã®å¤åã«ç´ æ©ãé©å¿ã¦ãããæå¸¸æ§ãæã¤ã·ã¹ãã ã¢ã¼ããã¯ãã£ã¦ããã.徿¥ã® Web ãã¹ãã£ã³ã¯ããµã¼ããã¹ãå©ç¨ã¦ãããç¨åº¦ã®ç¥èãæã£ãå人ãã Web ã³ã³ãã³ããé ä¿¡ãããã¨ãåæã«ï¼ãµã¼ããã¹å©ç¨è ããè² è·åæ£ã®ã·ã¹ãã æ§ç¯ãã©ã¤ ããã©ãªã®éç¨ã»ç®¡çãå¿ è¦ã¨ãããï¼è¿ éã«ã¦ã¼ãµãé åãè¤æ°ã®ãµã¼ããã«å±éå¯è½ã«ããã¢ã¼ããã¯ãã£ã¦ããã.
å³ 1 ã«ç¤ºãããã«ï¼Linux ã³ã³ããã®èµ·åã HTTP 㪠ã¯ã¨ã¹ãåä½ã¦ããªã¢ã¯ãã£ããã«æ±ºå®ãï¼å®è¡ç°å¢ã®å¤åã«ç´ æ©ãé©å¿ã¦ãããæå¸¸æ§ãæã¤ãã¨ãç¹å¾´ã¨ãã¦ãã.ã ãã¦ãè¿°ã¸ããããªã¢ã¯ãã£ãããªæ±ºå®ãã¨ã¯ï¼HTTP ãªã¯ã¨ã¹ ãåä½ã¦ãç¶æ³ã«å¿ãããã³ã³ããã®æ§æï¼ä¾ãã¯ãï¼èµ·åï¼å æ¢ï¼èµ·åæ°ï¼ãªã½ã¼ã¹å²ãå½ã¦ï¼èµ·åç¶ç¶æé (ã©ã¤ãã¿ã¤ã )ï¼ã¨ãã£ãç¶æ ãè¿ éã«æ±ºå®ãããã¨ãæå³ãã.ãã®ç¹æ§ããï¼ã³ã³ããã®èµ·åå¾ã¯ï¼ãªã¯ã¨ã¹ããå¦çãè¡ ããªãããã©ã¤ãã¿ã¤ã çµéå¾ã«ç ´æ£ããï¼ãããã»ã¹ãããªã¯ ã¨ã¹ããå¦çãã¦ããªãã¢ã¤ããã«ç¶æ ã®ã¾ã¾èµ·åãã¦ããæéãç縮ãããã¨ãå¯è½ã¦ãããï¼ãã«ãããã³ãæ¹å¼ã® ãªã½ã¼ã¹å¹çãé«ãã¦ãã.
FastContainer ã¢ã¼ããã¯ãã£ã¯ï¼ç¾æç¹ã¦ãã¯ï¼å³ 2 㫠示ãããã«ï¼HTTP ãªã¯ã¨ã¹ãã«åºãã¦ãªã¢ã¯ãã£ããã«ã³ã³ãããèµ·åããããã¨ããåæã«ãªã£ã¦ãã.æ¬ç ç©¶ã¦ãã¯ï¼FastContainer ã SMTP ã»ãã·ã§ã³ã¦ãã³ã³ãããç«ã¡ä¸ãããããããã«æ¡å¼µãã.SMTP ã IMAP ã HTTP ã¨åæ§ã«ï¼ã¡ã¼ã«ã¢ããã¬ã¹ã®ããã¡ã¤ã³ã«åºãã¦é信対象ã®ã³ ã³ãããåºå¥ãããã¨ããã¦ããã.
3.3 æå¸¸æ§ã«åºã¤ãããªã½ã¼ã¹å¹çåã¨ç²¾ç·»ãªæµéå¶å¾¡ã®ä¸¡ç«
FastContainer ã¢ã¼ããã¯ãã£ã«ããæå¸¸æ§ã«ããï¼ã¡ã¼ ã«ã»ãã·ã§ã³ããçãããªãç¶æ³ã«ããã¦ã¯ãããã»ã¹ãçµ¶ããã èµ·åããã¦ããå¿ è¦ã¯ãªã.ãã®ããï¼ã¡ã¼ã«ã®å¦çããè¡ ããã¦ããªãã³ã³ããã¯ä¸å®æéã¦ã忢ããããã¨ã«ã ãï¼ãªã½ã¼ã¹ä½¿ç¨éãç¯ç´ãï¼éç©çãé«ãã.
䏿¹ã¦ãï¼ã¡ã¼ã«ã®éåä¿¡ã®ã±ãã¼ãã¦ã§ã¤ç¨éã®ã³ã³ãã ã¨ï¼ã¦ã£ã«ã¹ã spam ã¡ã¼ã«ã®ãã£ã«ã¿ç¨éã®ã³ã³ããã¯å¤§éã®ã»ãã·ã§ã³ããäºæ³ãããããï¼FastContainer ã®æ¡å¼µã¨ãã¦ï¼å¸¸ã« 1 以ä¸ã®æ°ã®ã³ã³ãããã循ç°ããªãããã èµ·åãã¦ããç¶æ ãæ ä¿ãã ResidentContainer ã¨ãã¦åä½ããã.ResidentContainer ã¯ï¼FastContainer ã¨éãï¼ SMTP ã»ãã·ã§ã³ã«ãªã¢ã¯ãã£ããã«ã³ã³ãããèµ·åãããï¼ ã·ã¹ãã ã®ã¹ã±ã·ãã¥ã¼ã©ã«ãã£ã¦æ°ããã³ã³ããã®èµ·åã¨æ¯ãåãå ç»é²ãè¡ã.ããã¯ï¼å ¨ãèµ·åãã¦ããªãç¶æ ããããå¾ã FastContaier ã¨éãï¼æä½ 1 ã¤ä»¥ä¸ã®ã³ã³ãã ããèµ·åãã¦ãããã¨ããä¿è¨¼ããããã¨ã¨ï¼ããã¡ã¤ã³åä½ã¦ã ã®ç·»å¯ãªãã½ã¼ã¹ãæµéå¶éã¨ãã£ããªã¢ã¯ãã£ããæ§ããããã»ã¨ãè¦æ±ãããªãã¨å¤æããããã¦ããã.
æå¸¸æ§ã«åºã¤ãããªã½ã¼ã¹å¹çåã¨ç²¾ç·»ãªæµéå¶å¾¡ã¨ä¸¡ç«ããããã«ï¼ããã¡ã¤ã³åä½ã¦ãã¡ã¼ã«éä¿¡ã³ã³ãã (SMTP)ã¨ã¡ã¼ã«åä¿¡ã³ã³ãã (IMAP) ããããããèµ·åããã. ããã¡ã¤ã³åä½ã¦ãã³ã³ãããèµ·åãããã¨ã«ããï¼Postfix ã®ãã㪠SMTP ãµã¼ããã½ããã¦ã§ã¢ã Dovecot ã®ãã㪠IMAP ãµã¼ããã½ããã¦ã§ã¢ã®å¶å¾¡è¨å®ãç¹å®ã®ããã¡ã¤ã³ã«å¯¾ãã¦æ´»ç¨ã¦ãããããã«ãªã.ã¾ãï¼IMAP ã®ã³ãã³ããåä½ã¦ãã® CPU 使ç¨çã®å¶éãï¼ããã¡ã¤ã³ãããããç²åº¦ã®ç´°ããã¡ã¼ã«ã¢ã«ã¦ã³ãåä½ã¦ãã®å¶å¾¡ãï¼SMTP ã³ã³ãã 㯠Milter ã¨ã»ãã·ã§ã³ããã¼ã¿ããã¼ã¹ã¨ã®é£æºï¼IMAP ã³ ã³ããã¯ãµã¼ããã½ããã¦ã§ã¢ãæ¡å¼µãã¦ã»ãã·ã§ã³ããã¼ã¿ããã¼ã¹ã¨é£æºãã¦è¡ããããã«ãã.ã»ãã·ã§ã³ããã¼ã¿ããã¼ã¹ã«ã¤ãã¦ã¯ 3.4 ç¯ã¦ãè¨åãã.
ããã«ï¼ã³ã³ãã㯠cgroup*13ã®æ©è½ã«ããï¼ãããã»ã¹ ã¬ããã«ã¦ãã®ãªã½ã¼ã¹å¶å¾¡æ©æ§ããçµã¿è¾¼ã¾ããã¦ã.ãµã¼ãã ã½ããã¦ã§ã¢ã®ããããã³ã«åæã®è¨å®ã¦ã対å¦ããé£ããå ´å ã¯ï¼ã³ã³ããã®ãªã½ã¼ã¹å¶å¾¡ã«ããï¼ç¹å®ã®ããã¡ã¤ã³ã®å¦çã«ä½¿ããã CPU 使ç¨çãã¡ã¢ãªä½¿ç¨éã®å²ãå½ã¦ã®ã¿ ãé¨åçã«ãªã¢ã«ã¿ã¤ã ã¦ã夿´ã¦ããã.
3.4 精緻ã«ã»ãã·ã§ã³æ å ±ãä¿å
åã±ãã¼ãã¦ã§ã¤ããã£ã«ã¿ã³ã³ããï¼ããã²ãï¼ããã¡ã¤ã³åä½ã¦ãã® SMTP ã³ã³ããã IMAP ã³ã³ããã®ã»ãã·ã§ã³å¦çæã«ï¼Milter ããµã¼ããã½ããã¦ã§ã¢ã®æ¡å¼µæ©è½ã«ããï¼ã»ãã·ã§ã³æ å ±ãããã¼ã¿ããã¼ã¹ã«ç²¾ç·»ã«ä¿åã¦ãããããã«ãã.SMTP ã®å ´åã¯ï¼Milter ããããã³ã«ãä»ãã¦ãã ããã³ã«ã®ã»ãã·ã§ã³å¦çã«é¢ããæ å ±ãé½åº¦åéãã. IMAP ã®å ´åã¯ï¼Milter ããããã³ã«ã®ãããªé£æºããããã³ ã«ãããªãããï¼IMAP ãµã¼ããã½ããã¦ã§ã¢ã«åå¥ã«ã»ã ã·ã§ã³æ å ±ãåéã¦ãããæ¡å¼µæ©è½ãå®è£ ãã.ãããã®æ¡å¼µæ©è½ã¯ã»ãã·ã§ã³æ å ±ã®ä¿åãããã¦ããªãï¼ã»ãã·ã§ã³ããã¼ã¿ã«åºãã¦æµéå¶å¾¡ãè¡ããç¨åº¦ã®æè»æ§ãæããã.
åéããã»ãã·ã§ã³æ å ±ã¯ï¼éä¿¡ï¼åä¿¡å ±ã«ããã¼ã¿ããã¼ ã¹åãããã¨ã«ããï¼éä¿¡ã¨åä¿¡ã®é¢é£æ§ãã»ãã·ã§ã³æ å ±ã®é·ç§»ãªã¨ããéåæã«è§£æã¦ãããããã«ãã.ä»å¾ï¼ ã«ã¼ã«ããã¼ã¹ã®è§£æããï¼çµ±è¨å¦çã«ãã£ã¦åé¡ãè¡ãã ã¨ã«ããï¼å¤§éã®ã»ãã·ã§ã³æ å ±ã¨æµéã«åºã¤ããã¦ï¼å¤§ééä¿¡ã spam ã¡ã¼ã«ã®æ¯ãèãçãæ¤ç¥ã¦ãããªããã«ã¤ã ã¦ãæ¤è¨ãã¦ãã.
4. æå¸¸æ§ã®ããã¡ã¼ã«åºç¤ã®å®è£
å³ 3 ã«ï¼ææ¡ããã¡ã¼ã«åºç¤ã®å®è£ ã®å ¨ä½æ§æã¨ã¡ã¼ ã«ã®éåä¿¡ããã¼ã示ã.å ¨ä½ããã¼å³ã«ãããï¼SMTP ã®ã¡ã¼ã«åä¿¡æ©è½ã¦ããã SMTP+LMTP FastContainer System ã 4.1 ç¯ï¼IMAP ã®ã¡ã¼ã«åä¿¡æ©è½ã¦ããã IMAP FastContainer System ã 4.2 ç¯ï¼SMTP ã®ã¡ã¼ã«éä¿¡æ©è½ ã¦ããã SMTP FastContainer System ã 4.3 ç¯ã«ã¦è©³ç´°ã è¿°ã¸ãã.
4.1 SMTP ã®åä¿¡ããã¼
å¤é¨ããã¡ã¼ã«ãåä¿¡ããå ´åã®æ¬ã¡ã¼ã«ã·ã¹ãã ã®ããã¼ã¨ãã®å®è£ ã«ã¤ãã¦èª¬æãã.å³ 4 ã« SMTP åä¿¡ããã¼ã示ã.
ã¾ããï¼å¤é¨ MTA ããé éãããã¡ã¼ã«ã¯ï¼SMTP ã® ã±ãã¼ãã¦ã§ã¤ã³ã³ãã (SMTP-In) ã«é éããã.ãã®é ã«ï¼ã±ãã¼ãã¦ã§ã¤ã³ã³ããã¯æä½ 1 ã¤ä»¥ä¸ã®ã³ã³ããããèµ·åãã¦ãã ResidentContainer ã¦ãããããï¼3.3 ç¯ã¦ãè¿°ã¸ã ãããã«ï¼åçã«é éå ãæ±ºå®ãããã¨ãªãï¼ã·ã¹ãã ã® ã¹ã±ã·ãã¥ã¼ã©ã«ãã£ã¦æ±ºå®ãããã³ã³ããã«ã¡ã¼ã«ãé é ãã.ã¾ãï¼FastContaier 㨠ResidentContainer ã¢ã¼ãã ã¯ãã£å ±ã«ï¼è¿è¤ããä¸å¿ã¨ãªã£ã¦æã ããéçºãã¦ããã³ã³ ããã©ã³ã¿ã¤ã ã® Haconiwa*14ãå©ç¨ãã¦å®è£ ãã.
ã¡ã¼ã«ã·ã¹ãã ã«ãã¥ã¼ã¨ãã¦åä¿¡ããããªãã¡ã¼ã«ã«ã¤ãã¦ã¯ï¼CMDB API ã¨é£æºãã¦ã»ãã·ã§ã³æ å ±ã®è§£æ çµæãåå¾ãï¼ã±ãã¼ãã¦ã§ã¤ã®æç¹ã¦ãã¨ã©ã¼ãè¿ãããã« ãã.ã»ãã·ã§ã³æ å ±ã®ä¿åã¨åå¾ï¼åã²ãã¨ã©ã¼ã®å¤å®ã¯ï¼ SMTP ã®åã»ãã·ã§ã³ã¦ã Milter ããããã³ã«ãä»ãã¦äºå ã«ããã¯ããã Ruby ã¹ã¯ãªããããå®è¡ã¦ããã Milter ãµã¼ ããã½ããã¦ã§ã¢ã® pmilter*15ã¨ãã¦å®è£ ãã.ãã® Ruby ã¹ ã¯ãªããããã¡ã¤ã«ã¯ã»ãã·ã§ã³æ¯ã«é½åº¦å®è¡ãããããï¼ SMTP ã³ã³ããèµ·åä¸ã¦ããã£ã¦ãï¼åèµ·åããããã¨ãªã Ruby ã®å®è£ ã夿´ããããã¨ããã¦ããã.pmilter ã«ããï¼ ResidentContainer ã¦ããã£ã¦ã峿æµéå¶å¾¡ã®æ¯ãèããè¨å®ãåæ ããããã¨ããã¦ããã.
次ã«ï¼ã±ãã¼ãã¦ã§ã¤ã³ã³ããããã¦ã£ã«ã¹ã spam ã¡ã¼ã«ãã£ã«ã¿ã³ã³ãã (SMTP-Filter-In) ã«é éãã.SMTP- Filter-In ã ResidentContainer ã¨ãã¦æ§æãã.ãã£ã«ã¿ ã³ã³ãããééã¦ãããã¡ã¼ã«ã¯ï¼ããã¡ã¤ã³åä½ã¦ã LMTP ããããã³ã«*16ã¦ãèµ·åãã IMAP ã³ã³ãã群ã«ããããã· ããããã«ï¼ã¾ãã LMTP ã«ã¼ãã£ã³ã¯ãã³ã³ãã (LMTP Router) ã«é éããã.ãã®ã«ã¼ãã£ã³ã¯ãã³ã³ããã¯ï¼æ¬¡ã« é éãããã¸ããããã¡ã¤ã³åä½ã¦ãã® LMTP ã³ã³ãã(LMTP FasCon)ããæ°ä¸å以ä¸åå¨ãï¼ãã¤ï¼ãã®ã³ã³ããã®æ§æ æ å ±ã¯é«é »åº¦ã¦ãæ´æ°ãããç¶æ³ãæ³å®ãã¦é ç½®ãã¦ãã. LMTP ã³ã³ããã¯ã»ãã·ã§ã³ã«å¿ããã¦èµ·åããããï¼åæã«æ°ä¸å以ä¸èµ·åããããã¦ãã¯ãªã.
é éããã¡ã¼ã«ã¢ããã¬ã¹ã®ããã¡ã¤ã³åã«å¯¾å¿ãã LMTP ã³ã³ãããèµ·åãããããã«ï¼Postfix ã mruby ã¦ãæ¡å¼µ ã¦ããã Postfix-mruby*17ãå©ç¨ãï¼LMTP ã«ã¼ãã£ã³ã¯ãã³ ã³ããä¸ã¦ãããã¡ã¤ã³åãã CMDB API ãéããã¦é éã ã¸ããã³ã³ããæ å ±ãåçã«åå¾ãã Ruby ã¹ã¯ãªãããã å®è¡ãã.ãã®çµæã«åºã¤ããã¦ï¼é éãã¸ãã LMTP ã³ã³ ããããå容ããã¦ãããã¹ããµã¼ããã¦ãï¼ããã¡ã¤ã³åä½ã® LMTP ã³ã³ãããèµ·åããããã«ï¼LMTP é éåã²ãã³ã³ããèµ·åãè¡ãã³ã³ãã(LMTP Dispatcher)ã«é éã ã.LMTP Dispatcher ã¯ããã¡ã¤ã³ã«å¯¾å¿ãã LMTP ã³ã³ ããã®æ§ææ å ±ã CMDB API ããåå¾ãï¼è©²å½ã³ã³ãã(LMTP FasCon)ããèµ·åããã¦ããªããã¯ãèµ·åãï¼ã¡ã¼ã« ãé éãã¦ã¡ã¼ã«ãããã¯ã¹ã«ä¿åããã.ã¡ã¼ã«ãããã¯ã¹èªä½ã¯ NFS ä¸ã¦ãå ±æããã¦ããï¼è¤æ°ã® LMTP ã³ã³ã ã (Dovecot LMTP A user) ã IMAP ã³ã³ãã (Dovecot mruby A user) ã¦ãå ±æã¦ãããããã«ãã¡ã¤ã«ããã¼ã¹ã® dot lock ãå©ç¨ãã.
4.2 IMAP ã®åä¿¡ããã¼
å³ 5 ã« IMAP åä¿¡ããã¼ã®å ¨ä½åã示ã.å¤é¨ MUAããã®ã¡ã¼ã«åç §æã«ã¯ï¼MUA ãã IMAP ã»ãã·ã§ã³ãæ¥ ç¶ããéã«ï¼CMDB API ããããã¡ã¤ã³ã«å¯¾å¿ããã³ã³ããæ§ææ å ±ãåçã«åå¾ãï¼IMAP ã³ã³ããã«æ¯ãåãã ããã® IMAP ã«ã¼ãã£ã³ã¯ãã³ã³ãã(IMAP Router)ã«æ¥ç¶ããã.IMAP Router 㯠ResidentContaner ã¨ãã¦åä½ãã.å®è£ ã«ã¯ï¼çè ããéçºãã¦ãã ngx mruby*18*19ã« IMAP ããããã·æ©è½ãä½µç¨ã㦠CMDB API ã¨HTTP ãã ããã³ã«ã¦ã飿ºãã¦èªè¨¼ãè¡ã.
次ã«ï¼èªè¨¼ãééããã»ãã·ã§ã³ã¯ï¼å容ãµã¼ããã« ResidentContainer ã¨ãã¦èµ·åãã¦ãã IMAP Dispatcher ã« æ¥ç¶ãï¼æçµçã«è©²å½ããã¡ã¤ã³ã® IMAP ã³ã³ãã(IMAP FasCon)ã«æ¥ç¶ãã.IMAP Dispatcher ã«ãã£ã¦ï¼IMAP ã³ã³ããããèµ·åãã¦ããªããã¯ãï¼èµ·åããã¦ãã IMAP ã»ãã·ã§ã³æ¥ç¶ããããï¼èµ·åæ¸ã¿ã¦ãããã¯ãèµ·åå¦çãçç¥ãã¦æ¥ç¶ããã¨ãã£ãå¦çããå¯è½ã¨ãªã.ã¾ãï¼IMAP ã³ã³ãã㯠FastContainer ã¨ãã¦åä½ããããï¼ä¸å®æéèµ·åå¾ã¯åæ¢ãããï¼ãªã½ã¼ã¹ä¸è¶³ãæ¤ç¥ããå ´åã¯ï¼ã³ ã³ããå²ãå½ã¦ãªã½ã¼ã¹ã®è¿½å ãï¼è¤æ°ã³ã³ããèµ·åã«ã ãã¹ã±ã¼ã«ã¢ããããå¯è½ã¦ããã.
IMAP ã³ãã³ããåä½ã¦ãã®å¶éãï¼ã»ãã·ã§ã³ããã¼ã¿ã®ä¿åã¨åå¾ã®ããã«ï¼Dovecot ã mruby ã¦ãæ¡å¼µã¦ããããã ã©ã¯ãã¤ã³ï¼dovecot-mruby-plugin*20ãéçºãã.å³ 5 ã«ã ãã Control Resource ãã dovecot-mruby-plugin æ©è½ã示ãã¦ããï¼IMAP ã³ãã³ããã®å®è¡åå¾ã¦ã Ruby ã¹ã¯ãªããããããã¯ãã¦å®è¡ãããã¨ããå¯è½ã¦ããã.ããã«ãã£ã¦ï¼ IMAP ã»ãã·ã§ã³æ å ±ã Ruby ã®ã¡ã½ãããã¦ãåå¾ãï¼å¤é¨ã®ããã¼ã¿ããã¼ã¹ã«ä¿åãããï¼ããã¼ã¿ããã¼ã¹ã®ããã¼ã¿ã«åºã㦠Dovecot ã®æ¯ãèããæ¡å¼µã¦ããã.
4.3 SMTP ã®éä¿¡ããã¼
å³ 6 ã« SMTP éä¿¡ããã¼ã®å ¨ä½åã示ã.ã¡ã¼ã«ãéä¿¡ããéã«ã¯ï¼4.2 ç¯ã¦ãè¿°ã¸ãã IMAP ããããã·ã¨åæ§ã«ï¼ ngx mruby ã«ãã£ã¦ SMTP ããããã·ãå®è£ ãã SMTP Router ã³ã³ããããã»ãã·ã§ã³ãåä¿¡ãã.次ã«ï¼åä¿¡ããã»ãã·ã§ã³æ å ±ããèªè¨¼ããã²ãããã¡ã¤ã³åä½ã®ã¡ã¼ã«éä¿¡ ãµã¼ããã®æ§ææ å ±ã®åå¾ãè¡ãï¼æ§ææ å ±ã«åºãã¦ï¼ã³ã³ ããããå容ããã¦ãããã¹ããç¹å®ããä¸ã¦ããã®ãã¹ãä¸ã¦ãåä½ãã¦ãã SMTP Dispatcher ã³ã³ããã«è»¢éããã.
è¦æ±ãããããã¡ã¤ã³ã«åºãã¦ï¼SMTP Dispatcher 㯠CMDB ããã³ã³ããã®æ§ææ å ±ãåå¾ããä¸ã¦ãï¼åçã«ãã ã¡ã¤ã³ã«å¯¾å¿ãã SMTP ã³ã³ããã«æ¥ç¶ãã.ãã®å ´åãï¼FastContainer ã®ç¹æ§ã«ããï¼SMTP ããããã·ã«ãã£ã¦ã³ã³ããããèµ·åããã¦ããªããã¯ãèµ·åããã¦ããå¦çãè¡ã.
ããã¡ã¤ã³åä½ã¦ãã® SMTP ã³ã³ããã¦ãã¯ï¼pmilter ã¨é£æºã㦠SMTP ã»ãã·ã§ã³æ å ±ãä¿åãã¦ãã.ä¿åããã»ãã·ã§ã³æ å ±ã«åºãã¦ããã¡ã¤ã³ãã¡ã¼ã«ã¢ã«ã¦ã³ãåä½ã¦ãã®åæéä¿¡æ°ãå¶å¾¡ãããã¨ã«ããæµéå¶éãè¡ã.ã¾ ãï¼IMAP ã»ãã·ã§ã³ããã¼ã¿ã¨ SMTP ã»ãã·ã§ã³ããã¼ã¿ãçµã¿åããã¤ã¤ï¼çµ±è¨çãªè§£æãè¡ããã¨ã«ããï¼ç°å¸¸ãªã»ãã·ã§ã³ç¶æ ãæ¤ç¥ã¦ãããããã«ããä»çµã¿ãæ¤è¨ä¸ ã¦ããã.
SMTP ã³ã³ããã¦ãã¡ã¼ã«ãéä¿¡å¦çããå¾ã¯ï¼åä¿¡ã®ã ãã¼ã¨åæ§ã«ã¦ã£ã«ã¹ã spam ã¡ã¼ã«ã®ãã£ã«ã¿ã³ã³ãã ãä»ãã¦ï¼ã¡ã¼ã«éä¿¡ã±ãã¼ãã¦ã§ã¤ã³ã³ãã (SMTP-Out) ã«é éããï¼å¤é¨ã® MX ãµã¼ããã«éä¿¡ããã.
5. ã¾ã¨ã
æ¬ç ç©¶ã¦ãã¯ï¼é«éç©ãã«ãã¢ã«ã¦ã³ãåã®ã¡ã¼ã«éåä¿¡ã·ã¹ãã ãå®å®åããããã«ï¼ç²¾ç·»ã«ã»ãã·ã§ã³æ å ±ãè§£æã¦ããï¼é©å¿çã«ã¡ã¼ã«ã®æµéå¶å¾¡ããªã½ã¼ã¹å¶å¾¡ãè¡ããã¡ã¼ã«åºç¤ã®è¨è¨ã¨æ¬è«æå·çæç¹ã¦ãã®å®è£ ã¨æ¤è¨é ç®ã®é²æãè¿°ã¸ãã.
ä»å¾ï¼å¼ãç¶ãå¿ è¦æ©è½ã®å®è£ ãè¡ããªãããï¼ã¡ã¼ã«ã® æµéå¤åã«æ³å®éãèãããããã®æ¤è¨¼ï¼ãªã½ã¼ã¹å©ç¨å¹çã®å®éçè©ä¾¡ãªã¨ããé²ãã¦ãã.ã¾ãï¼ä¿åããã»ã ã·ã§ã³ããã¼ã¿ãæ´»ç¨ãããã¨ã«ããï¼çµ±è¨çææ³ãæ©æ¢°å¦ ç¿ã使ã£ã¦ã³ã³ããã¥ã¼ã¿ããé©å¿çã«æµéå¶å¾¡ããããã®ç ç©¶ãè¡ã£ã¦ãã.
è¬è¾
æ¬ç ç©¶ã¦ã使ç¨ããã¯ã©ã¦ããè³æºã¯ï¼å¹³æ 29 年度 å½ç«æ å ±å¦ç ç©¶æã¯ã©ã¦ãã婿´»ç¨å®è¨¼å®é¨ã«ããã¦æä¾ããã.ã¾ãï¼æ¬ç ç©¶ã¯ï¼ä»¥ä¸ã®ç ç©¶å©æãåãã¦ãã.
æ¾æ¬äº®ä», å°ç°ç¥å¤®, è¿è¤å®æºæ, ç¬ å義æ, 岡æèäº, å¶ åé夫, éåæä», mruby ãå©ç¨ãã軽éã³ã³ããã¯ã©ã¦ ããåºç¤ã®ç ç©¶éçºãä»ãã mruby ã®å¤§è¦æ¨¡ã»é«è² è·ãã¹ ã, 2017 年度 Ruby Association éçºå©æ, 2017 å¹´ 10 æ.
çºè¡¨ã¹ã©ã¤ã
*1:æ¾äºä¸ä¹, éé«ä¸, å æ¥éº»åç¾, æ± é¨å®, åç°å幸, milter ã®çµåãã«ããä½é éé å»¶ãç®æãã spam 対çã¡ã¼ã« ãµã¼ããã®è¨è¨ã¨å°å ¥ã®å¹æã«ã¤ãã¦, æ å ±å¦çå¦ä¼è«æ èª, Vol.55, No.12, pp.2498-2510, 2014 å¹´ 12 æ.
*2:Yoshiharu Tsuzaki, Ryosuke Matsumoto, Daisuke Kotani, Shuichi Miyazaki, Yasuo Okabe, A Mail Trans- fer System Selectively Restricting a Huge Amoount of E-mails, Workshop on Resilient Internet based Systems (REIS 2013), pp. 896-900, Dec. 2013.
*3:Postfix Performance Tuning, http://www.postfix. org/TUNING_README.html.
*4:æ¾æ¬äº®ä», è¿è¤å®æºæ, ä¸å® æ ä», 忦奿¬¡, æ æå¥å¤ªé, FastContainer: å®è¡ç°å¢ã®å¤åã«ç´ æ©ãé©å¿ã¦ãããæå¸¸ æ§ãæã¤ã·ã¹ãã ã¢ã¼ããã¯ãã£, ã¤ã³ã¿ã¼ãããã¨éç¨ æè¡ã·ã³ããã·ãã¦ã 2017 è«æéï¼No.2017ï¼pp.89-97, 2017 å¹´ 12 æ.
*5:Costales, Bryan and Flynt, Marcia, Sendmail milters: a guide for fighting spam, Addison-Wesley. 2005.
*6:Dent, K. D, Postfix: The Definitive Guide: A Secure and Easy-to-Use MTA for UNIX, OâReilly Media, Inc., 2003.
*7:Dovecot: Secure IMAP server, https://www.dovecot. org/.
*8:Dovecot Pro â Open-Xchange, https://www.open- xchange.com/portfolio/dovecot- pro/.
*9:Postfix Performance Tuning, http://www.postfix. org/TUNING_README.html.
*10:Hiroya Ito, Yapc Asia 2009 ããããããã¦ãã® Perl ã® ä½¿ãæ¹, https://www.slideshare.net/hiboma/yapc- asia- 2009- perl.
*11:Amazon Web Services: Auto Scaling, https://aws. amazon.com/autoscaling/.
*12:æ¾æ¬äº®ä», è¿è¤å®æºæ, ä¸å® æ ä», 忦奿¬¡, æ æå¥å¤ªé, FastContainer: å®è¡ç°å¢ã®å¤åã«ç´ æ©ãé©å¿ã¦ãããæå¸¸ æ§ãæã¤ã·ã¹ãã ã¢ã¼ããã¯ãã£, ã¤ã³ã¿ã¼ãããã¨éç¨ æè¡ã·ã³ããã·ãã¦ã 2017 è«æéï¼No.2017ï¼pp.89-97, 2017 å¹´ 12 æ.
*13:Rosen R, Resource Management: Linux Kernel Names- paces and cgroups, Haifux, May 2013.
*14:è¿è¤å®æºæï¼æ¾æ¬äº®ä»ï¼æ æå¥å¤ªé, Haconiwa: ãããã¯ãã© ã ã«ããï¼çµã¿ç«ã¦å¯è½æ§ã¨æ¡å¼µæ§ãæã¤ Linux ã³ã³ã ã, æ å ±å¦çå¦ä¼ç¬¬ 80 åå ¨å½å¤§ä¼, 2D-04, 2018 å¹´ 3 æ.
*15:https://github.com/matsumotory/pmilter
*16:John Myers, RFC2033: Local mail transfer protocol, The Internet Society, Oct 1996.
*17:https://github.com/tmtm/postfix-mruby
*18:æ¾æ¬äº®ä», å²¡é¨ å¯¿ç·, mod mruby: ã¹ã¯ãªãããè¨èªã¦ãé« éãã¤çã¡ã¢ãªã«æ¡å¼µå¯è½ãª Web ãµã¼ããã®æ©è½æ¡å¼µæ¯æ´ æ©æ§, æ å ±å¦çå¦ä¼è«æèªï¼Vol.55, No.11, pp.2451-2460, Nov 2014.