ãã£ãããã話ã¯ä¸æã«ã¯ã¦ãªããã§éå¬ãããKyoto.pmã§çºè¡¨ããã®ã§ãã、Hainekoã®å ¨ä½ãè¦æ¸¡ãã話ã¯ã¾ã æ¸ãã¦ããªãã£ãã®ã§、æ¦ã®ä¸ã§ç§ã«ãªãåã«æ¸ãã¦ããã¾ã。
2014/01/06追è¨:
ææ°çã®version 0.2.13ãåºæºã¨ãã¦æ°ãã«æ¦è¦ã「HainekoãCPANã¢ã¸ã¥ã¼ã«ã«ãªãã¾ãã」ã¨ãã¦æ¸ãã¾ãã。Hainekoã¨ã¯ä½ã
Hainekoã¯HTTPã§ã¡ã¼ã«ãéä¿¡ããçºã®APIãæä¾ãããµã¼ãã¨ãã¦åä½ãã¾ã。å¥ã®è¡¨ç¾ãããã¨、Javascriptãcurl, Perlã®ã¢ã¸ã¥ã¼ã«ãªãFurlçHTTPã¯ã©ã¤ã¢ã³ããã、ã¡ã¼ã«ã®å®å
ãå
容çãJSONã§Hainekoã«æ¸¡ãäºã«ãã£ã¦ã¡ã¼ã«ã®éä¿¡ãã§ããã¨ãããã®ã§ã。
ãããªæãã§ã¡ã¼ã«ãéä¿¡åºæ¥ã
ã³ãã³ãã©ã¤ã³ããcurlã³ãã³ãã使ã£ã¦Hainekoã«ã¡ã¼ã«ãJSONã§æ¸¡ãã®ã、æãæè»½ã«Hainekoçµç±ã§ã¡ã¼ã«ãéãæ¹æ³ã§ããã。試é転ã«ã¯ä¸åº¦è¯ãã§ã、curlã¯。
ã½ã¼ã¹ã®eg/ãã£ã¬ã¯ããªã«ãµã³ãã«ã¨ãã¦ã¡ã¼ã«ãã¼ã¿ãJSONã§è¡¨ç¾ãããã¡ã¤ã«ãç½®ãã¦ãã¾ã。ãã®ãã¡ã¤ã«ãç·¨éãã¦、Hainekoãèµ·åãã¦ãã、次ã®ãããªã³ãã³ããå®è¡ããã°Hainekoçµç±ã§ã¡ã¼ã«ãéãã¾ã。
æ¥ç¶å
ã®URLã¯、HainekoãLISTENãã¦ããã¢ãã¬ã¹ã®/submitã§ã。
$ cp eg/email-01.json /tmp/1.eml ⏎
$ vi /tmp/1.eml ⏎
$ curl -X POST -H 'Content-Type: application/json' -d '@/tmp/1.eml' 'http://127.0.0.1:2794/submit' | jq -M . ⏎
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 892 100 508 100 384 253 191 0:00:02 0:00:02 --:--:-- 253
{
"smtp.remoteport": 51762,
"smtp.addresser": "[email protected]",
"smtp.remoteaddr": "127.0.0.1",
"smtp.queueid": "r75FLUu048375jJI",
"smtp.response": {
"code": "250",
"command": "QUIT",
"message": [
"2.0.0 OK Authenticated\n",
"2.1.0 <[email protected]>... Sender ok\n"
],
"error": 0,
"dsn": "2.1.0"
},
"smtp.useragent": "curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8x zlib/1.2.5",
"smtp.started": "Sun Aug 4 22:22:22 2013",
"smtp.stage": 0,
"smtp.referer": null,
"smtp.recipient": [
"[email protected]"
]
}
curlã§ã¡ã¼ã«ãã¼ã¿ãè¨è¿°ããJSONãæ¸¡ãã¦、Hainekoãè¿ãå¿çãjqã³ãã³ãã§è¦ããããã¦ãã¾ã。jqã³ãã³ã、便å©ã§ã。ã¡ã¼ã«éä¿¡ã¯JSONã§æ¸¡ãã¦å¿çãJSONã§è¿ã£ã¦ãã¾ãã®ã§、JSONãæ±ããè¨èªã§ããã°Perlã§ãªãã¦ãPythonã§ãRubyã§ãPHPã§ããªãã§ãOKã§ã。ä½ã£ãçç±
ãã£ãã: Javascriptããã¡ã¼ã«éä¿¡
ããããå¤ã«ãªããã¨ããé 、Javascriptããã¡ã¼ã«ãéãããã¨ããè¦æ±ãããã¾ãã。ãååããã©ã¼ã ã®ãããªãã®ã§ã¯ãªã、åã«éç¥ç®çã§æ±ºã¾ã£ãéä¿¡è
ããæ¢å®ã®å®å
ã«éãã¨ãããã®ã§ããã、ãã®æ©è½ãè¨ç½®ããç®æãè¤æ°åãã、使ããã¢ã¸ã¥ã¼ã«ãç°å¢ãªã©、ã¡ã¼ã«éä¿¡ã«ããããé¨åãããããå°ããã¤ç°ãªã£ã¦ãã¾ãã。
æ§ã ãªéä¿¡æ¹æ³ããã
å®éã«Perlã§ã¡ã¼ã«ãéãã¨è¨ã£ã¦ã、Net::SMTPã使ãã±ã¼ã¹、å ãã¦èªè¨¼ãTLSãè¦ãã±ã¼ã¹、Email::Senderã使ã£ã¦/usr/sbin/sendmailã§éãã±ã¼ã¹、éãå
ãEmailã¯ã©ã¦ãã§APIã使ãã±ã¼ã¹、ã¨å¤ç¨®å¤æ§ãªå®è£
æ¹æ³ãããã¾ã。ãã®æã¯è¨ç½®ç®æã«åããã¦JSONã§éããããã¼ã¿ãã¡ã¼ã«ã§éãããã°ã©ã ãç¨æããããã§ã。
æ±ç¨çãªä»çµã¿ããªã
å®éã«è¨ç½®ç®æãããããããå ´å、ãããã£ãç¨éã®æ±ç¨çãªä»çµã¿ããªããã®ãã¨æã、ä¸éãçµãã£ã¦ãã調ã¹ã¦ã¿ãã®ã§ãã、ã©ããç¡ãããã§ãã。ãã¶ãç¡ãã§ã。
ããã§、ã¯ã©ã¤ã¢ã³ãããã¡ã¼ã«éä¿¡ã«å¿
è¦ãªãã¼ã¿ãåãã¨ã£ã¦、ãµã¼ãå´ã§SMTPãSMTPS、èªè¨¼ãTLSãå
¥ããã、ã¯ã©ã¦ãã®APIã使ã£ãã、é©åãªæ¹æ³ã§ã¡ã¼ã«ãéãä»çµã¿ã¨ãã¦Hainekoãä½ã£ã¦ã¿ã¾ãã。æå¤ã¨ä¾¿å©ããããã¾ãã、ãã。
ååã«ã¤ãã¦
Perlã¢ã¸ã¥ã¼ã«ã¨ããããã¯ã¢ããªã±ã¼ã·ã§ã³ãªã®ã§、æ©è½ã表ãåèªã並ã¹ã¦é æåãé½åããåã£ã¦``Haineko''ã¨ãªãã¾ãã。ã¯ãããã§ã。HTTP API INTO ESMTP K=undef O=undef ã§ã。NEKOãå
¥ã£ã¦ãã¾ãã、ç«ã¯ç¹ã«é¢ä¿ããã¾ãã。
Hainekoã®å®è£
ãã¬ã¼ã ã¯ã¼ã¯: Mojoliciousã§å®è£
2013å¹´9æ19æ¥(æ¨)追è¨
Haineko 0.1.0ããMojoliciousãããã¦Plackãã¼ã¹ã®PSGIã¢ããªã±ã¼ã·ã§ã³ã«ãªãã¾ãã。ãã¬ã¼ã ã¯ã¼ã¯é¨åã¯Plack::Request, Plack::Responseãç¶æ¿ãã¦å¿
è¦ãªé¨åã ãã®ããã¼ããã®ã«ãªã£ã¦ãã¾ã。
å ¨ä½ã®æµã: ãªã¬ã¼ãµã¼ãã¨ãã¦åã
次ã®å³ã¯Kyoto.pmã§çºè¡¨ããã¹ã©ã¤ãã®è©²å½é¨åãåãåºãã¦、ä»ã®å®è£
ã«åããã¦æ´æ°ããã ãã®ãã®ã§ãã、Hainekoã¯ãã¥ã¼ãæãããªã¬ã¼ãµã¼ãã¨ãã¦åä½ãã¾ã。ãã¼ã¿ã®åãåããã¡ã¼ã«éä¿¡ã®çµæå¿çãå
¨ã¦JSONã§ã。
HTTPã¯ã©ã¤ã¢ã³ãããåãã¨ã£ãJSONãã¼ã¿ã、æ¥ç¶å
IPã¢ãã¬ã¹(REMOTE_ADDR)ãå®å
ã許å¯ããããã®ã§ããã、ããã¦ã¡ã¼ã«ã¢ãã¬ã¹ãæ£ããå½¢å¼ã§ãããç、æä½éã®æ¤æ»ããã¦、å®å
ãã¡ã¤ã³ã¾ãã¯çºä¿¡è
ãã¡ã¤ã³ã«åºã¥ãã¦ãªã¬ã¼ããæ¹æ³ã決å®ãã¾ã。
ã¨ã©ã¼å¿çã、éä¿¡æåã®å¿çãããããJSONã§è¿ã£ã¦ãã¾ã。
ãªã¬ã¼: SMTPãµã¼ããã¯ã©ã¦ãã®APIã¸
次ã®å³ãçºè¡¨ããã¹ã©ã¤ãã®è©²å½é¨åãåãåºãã¦æç´ããããã®ã§ã。
Hainekoã¯HTTPã§JSONå½¢å¼ã®ã¡ã¼ã«ãã¼ã¿ã渡ãã°、ãã¨ã¯Haineko::Relay::以ä¸ã®ã¢ã¸ã¥ã¼ã«ããã¾ããã¨å®ç¾©ãããæ¹æ³ã§ã©ããã«ãªã¬ã¼ããããã«ãªã£ã¦ãã¾ã。Sendmailã®ããã¨åããããªåä½ãããmailertableã¯、éä¿¡ããã¡ã¼ã«ã®å®å ã¢ãã¬ã¹ã®ãã¡ã¤ã³é¨åãmailertableã«å®ç¾©ããã¦ããã、ããã§æå®ããããªã¬ã¼æ¹æ³(ESMTP,SendGridç)ã§æå®ããããã¹ãã®æå®ãã¼ãã«ãªã¬ã¼ãã¾ã。
Hainekoã¯HTTPã§JSONå½¢å¼ã®ã¡ã¼ã«ãã¼ã¿ã渡ãã°、ãã¨ã¯Haineko::Relay::以ä¸ã®ã¢ã¸ã¥ã¼ã«ããã¾ããã¨å®ç¾©ãããæ¹æ³ã§ã©ããã«ãªã¬ã¼ããããã«ãªã£ã¦ãã¾ã。Sendmailã®ããã¨åããããªåä½ãããmailertableã¯、éä¿¡ããã¡ã¼ã«ã®å®å ã¢ãã¬ã¹ã®ãã¡ã¤ã³é¨åãmailertableã«å®ç¾©ããã¦ããã、ããã§æå®ããããªã¬ã¼æ¹æ³(ESMTP,SendGridç)ã§æå®ããããã¹ãã®æå®ãã¼ãã«ãªã¬ã¼ãã¾ã。
mailertableã«ä¸è´ããå®ç¾©ããªããã°、次ã¯sendermtããã¡ã¼ã«ã®çºä¿¡è
ã¢ãã¬ã¹ã®ãã¡ã¤ã³é¨åã«ä¸è´ããå®ç¾©ãæ¢ãã¦、mailertableã¨åãããã®å®ç¾©å
容ã«å¾ã£ã¦ãªã¬ã¼ãã¾ã。
mailertableã«ãsendermtã«ãä¸è´ããå®ç¾©ããªãå ´åã¯、mailertableã®``default''ã¨ããååã§å®ç¾©ããããªã¬ã¼æ¹æ³ã使ãã¾ã。defaultãå®ç¾©ããã¦ããªãå ´åã¯、127.0.0.1ã®25çªãã¼ãã«ESMTPã§ãªã¬ã¼ããã¾ã。
ä»ã®ã¨ãã、å®å
ã¡ã¼ã«ã¢ãã¬ã¹ã®ãã¡ã¤ã³ããMXRRãæ¤ç´¢ãã¦ããã«ç´æ¥ç¹ãã¨ããæ¹æ³ã¯å®è£
ãã¦ãã¾ãã。å°æ¥å®è£
ããã¨ã¯æãã¾ãã、ã¾ã ã§ã。
è¨å®ãã¡ã¤ã«: etc/haineko.cf
script/hainekoãèµ·åããæã«etc/haineko.cfãèªè¾¼ã¿ã¾ã。ãã®è¨å®ãã¡ã¤ã«ãåå¨ããªå ´å㯠lib/Haineko.pmã«ãã¼ãã³ã¼ããããæ¢å®å¤ã使ç¨ããã¾ã。å
¨ãå¥ã®å ´æã«è¨å®ãã¡ã¤ã«ãç½®ãã¦ããå ´åã¯、ç°å¢å¤æ°$HAINEKO_CONFã«PATHãå
¥ãã¦ããã¨ãã£ã¡ãèªè¾¼ã¿ã¾ã。
è¨å®ã§ããå
容ã¯ä¸»ã«ä¸è¨ã®ãã®ãå¯è½ã§ã。
- å¤é¨ã«ãªã¬ã¼ããæã«ä½¿ç¨ããEHLOã®å¼æ°ã¨ãã¦ã®ãã¹ãå
- åãä»ããã¡ã¼ã«ã®æå¤§ãµã¤ãº(ããã©ã«ãã¯4KB)
- åãä»ããã¡ã¼ã«ãããã®åä¿¡è æ°(ããã©ã«ãã¯4)
- ãªã¬ã¼çµè·¯å®ç¾©ãã¡ã¤ã«ã®å ´æã¨åå(mailertable, sendermt, authinfo)
- ãªã¬ã¼è¨±å¯è¨å®ãã¡ã¤ã«ã®å ´æã¨åå(relayhosts, recipients)
- ãã°ã®è¨å®(ããã©ã«ãã¯syslogã«local2ã§æ¸ãã ã)
- Mojoliciousã®ã»ãã·ã§ã³(ã»ãã·ã§ã³ãã¼ã¨æ¢å®å¤300ç§ã®æå¹æé)
LISTENãããã¼ãçªå·
ããã¼å³ãä¾ç¤º、README.mdã§2794çªãã¼ãã§LISTENããããã«æ¸ãã¦ãã¾ãã、å¹³å®é·é½2000å¹´ã¨è¦ããã¨è¨æ¶ã«æ®ããããã§ã。ç¡ããã¦ã°ã¤ã¹å¹³å®äº¬+2000!
ã¤ã³ã¹ãã¼ã«ã¨èµ·å
README.mdã«æ¸ãã¦ããéãã«、ã½ã¼ã¹ãå±éãã¦、å¿
è¦ãªPerlã¢ã¸ã¥ã¼ã«ãå
¥ãã¦、ãã®å ´ã§èµ·ååºæ¥ã¾ã。ãã 、å®ç¨çã«ä½¿ãã«ã¯、è¨å®ãã¡ã¤ã« haineko.cf ããªã¬ã¼çµè·¯ã®å®ç¾©ã®mailertable, sendermt, SMTPèªè¨¼ãAPIãã¼ã®å®ç¾©ãè¡ã authinfoçå¹¾ã¤ãã®å¤é¨ãã¡ã¤ã«ãå¿
è¦ã§ã。
ã¾ã、ãã¼ã¢ã³ã¨ãã¦èµ·åãã¾ãã®ã§、ä»ã®ãµã¼ãã½ããã¦ã§ã¢ã®ããã«ç¹å®ã®ãã£ã¬ã¯ããªã«çºãã¦ããããããããã¾ãã。
ãªã®ã§、README.mdã«ãæ¸ãã¦ãã¾ãã、ä¸éãã®æ¹æ³ãç¨æãã¦ãã¾ã。
A. ã½ã¼ã¹ãã£ã¬ã¯ããªã§å®è¡: ã¤ã³ã¹ãã¼ã«ä¸è¦
etcãã£ã¬ã¯ããªã«*-exampleãé¤ãããã¡ã¤ã«åã§è¨å®ãã¡ã¤ã«ãä½ã£ã¦、morbo, hypnotoad, plackupã§èµ·ååºæ¥ã¾ã。README.mdã«æ¸ãã¦ããPerlã¢ã¸ã¥ã¼ã«ãå
ã«å
¥ãã¦ããå¿
è¦ãããã¾ãã。
$ sudo cpanm --installdeps .⏎
$ cp etc/haineko.cf-example etc/haineko.cf ⏎
$ ä»、etc/以ä¸ã®å¿
è¦ãªè¨å®ãã¡ã¤ã«ãã³ãã¼ãã¦ç·¨é
$ plackup -o '127.0.0.1' -p 2794 -a libexec/haineko.psgi ⏎
B. /usr/local/hainekoã«ã¤ã³ã¹ãã¼ã«ãã¦å®è¡: makeã使ã
ãµã¼ãã¨ãã¦åãã®ã§、/usr/local/hainekoã¨ããå°ç¨ãã£ã¬ã¯ããªã«å
¥ãããããããã¾ãã。åã¯ãããã¾ã。ä¸è¬çãªæ§ç¯æ¹æ³ã¨åãã、./bootstrap && configure && make depend && make && make install ã§ã¤ã³ã¹ãã¼ã«ãã¾ã。
å¥ã®ãã£ã¬ã¯ããªã«å
¥ãããå ´å㯠configure --prefix=/usr/local/nekochan ã¨ããæãã§ã。Hainekoæ¬ä½ã¯/usr/local/haineko/libã®ä¸ã«å
¥ãã¾ã。
ã¢ããªã±ã¼ã·ã§ã³æ¬ä½ã®ã¹ã¯ãªããã¯/usr/local/haineko/scriptã«ã¤ã³ã¹ãã¼ã«ãããã®ã§、morboã§ãhypnotoadã§ãplackupã§ã好ããªãã®ã§èµ·åãã¦ãã ãã。
$ ./bootstrap ⏎
$ sh configure ⏎
$ make depend && make && make test ⏎
$ sudo make install ⏎
...
$ cd /usr/local/haineko ⏎
$ cp etc/haineko.cf-example etc/haineko.cf ⏎
$ ä»、etc/以ä¸ã®å¿
è¦ãªè¨å®ãã¡ã¤ã«ãã³ãã¼ãã¦ç·¨é
$ export PERL5LIB=/usr/local/haineko/lib/perl5 ⏎
$ plackup -o '127.0.0.1' -p 2794 -a libexec/haineko.psgi ⏎
C. /usr/localã«ã¤ã³ã¹ãã¼ã«ãã¦å®è¡: cpanmã ãã§OK
Bã¨åããããªæãã§ãã、Hainekoæ¬ä½ã/usr/local/lib/perl5/...ã®ã©ããã«å
¥ãã¾ã。è¨å®ãã¡ã¤ã«ã¯/usr/local/etcã«、ã¢ããªã±ã¼ã·ã§ã³æ¬ä½ã®ã¹ã¯ãªããã¯/usr/local/binã«ã¤ã³ã¹ãã¼ã«ããã¾ã。
èµ·åæ¹æ³ã¯A, Bã¨åãã、好ããªãã®ã§èµ·åãã¦ãã ãã。
$ sudo cpanm . ⏎
$ sudo cpanm -L/usr/local --installdeps ⏎
...
$ cd /usr/local/etc ⏎
$ cp haineko.cf-example haineko.cf ⏎
$ ä»、etc/以ä¸ã®å¿
è¦ãªè¨å®ãã¡ã¤ã«ãã³ãã¼ãã¦ç·¨é
$ cd /usr/local ⏎
$ plackup -o '127.0.0.1' -p 2794 -a libexec/haineko.psgi ⏎
ã»ãã¥ãªãã£
ã¡ã¼ã«ãµã¼ããéç¨ããäºããã人ãªãä¸çªæ³¨æãæãç®æ、ãªã¼ãã³ãªã¬ã¼ã«ãªã£ã¦ããªããã¨ããç¹ã§ã。Hainekoã¯ããã©ã«ãã§2794çªãã¼ãã§LISTENããã®ã§、25çªã§èµ·åããæã®ããã«ç¬ãéã«ã¹ãã ã®ä¸ç¶ã«ä½¿ããã¦ãã¾ãå¯è½æ§ã¯ä½ãã®ã§ãã、ãªãã¨ã¯è¨ãåãã¾ãã。
relayhosts: æ¥ç¶å IPã¢ãã¬ã¹ã§
Hainekoã¯HTTPã®$REMOTE_ADDRã®å¤ã、relayhosts ãã¡ã¤ã«ã«å®ç¾©ããIPã¢ãã¬ã¹ã¾ãã¯ãããã¯ã¼ã¯å¸¯åã«ä¸è´ããªãã¨ã¡ã¼ã«ãåãä»ãã¾ãã。relayhostsãã¡ã¤ã«ãåå¨ããªãå ´åã¯127.0.0.1ããã®ã¿ã¡ã¼ã«ãåãä»ãã¾ã。
LANå
ã®ã¢ãã¬ã¹ã§ã®ã¿LISTENããã®ã§ããã°、ãªã¼ãã³ãªã¬ã¼ã«ãã¦ãå¤ååé¡ãªãã§ãã、ããã§ãæç¤ºçã«ãªã¬ã¼ã許å¯ãããããã¯ã¼ã¯ãå®ç¾©ããã»ããå®å
¨ã§ã。
recipients: éä¿¡åºæ¥ãå®å ãå®ç¾©
Hainekoã¯ã©ããªå®å
ã«ãã¡ã¼ã«ãä¸ç¶ããããã§ã¯ããã¾ãã。è¨å®ãã¡ã¤ã« recipients ã«å®ç¾©ãããã¡ã¼ã«ã¢ãã¬ã¹ã¾ãã¯ãã¡ã¤ã³ã«ä¸è´ããå®å
ã«ã®ã¿ãªã¬ã¼ãã¾ã。è¨å®ãã¡ã¤ã«ã§ã¯ãªã¼ãã³ãªã¬ã¼ã«ããäºãåºæ¥ã¾ãã、ãã¶ããããªäºã«ãªããªãæ°ããã¾ã。
以ä¸ã®ããã«、許å¯ãããIPã¢ãã¬ã¹ãã許å¯ãããå®å
ã«ã®ã¿éä¿¡ããäºãåºæ¥ã、ã¨ããæ§é ã«ãªã£ã¦ãã¾ã、Hainekoã¯。
TODOs: ãã®ãã¡å®è£ ããäºå®ã®æªå®è£ é ç®
æªã å®è£
ãã¦ãªããã©ãã®ãã¡å®è£
ãããã¨æã£ã¦ãããã®ãå¹¾ã¤ããã£ã¦、ä»ã®ã¨ããæ¬¡ã®ãããªãã®ãããããã§ã。
ãã³ãã¬ã¼ã
@nekokakããã®ãã¤ã¼ãã«ãã£ããã³ãã¬ã¼ãæ©è½、Emailã¯ã©ã¦ãã§ã¯å½ããåã®æ©è½ã¿ããã«ããã®ã§ãã、éä¿¡ããJSONã§
{ 'template' => 'greeting', 'param' => { 'var1' => 'cat', 'var2' => 'kijitora' } }
ã¿ãããªã®ã渡ãã°、æå®ãã£ã¬ã¯ããªã«ããgreeting.emlã¨ãããããã®ããã³ãã¬ã¼ãã¨ãã¦å¦çãã¦ã¡ã¼ã«æ¬æãä½ãã®ãããããªãã¨ããæãã§ã。å¤ãã®å®å ã«åãæé¢ãéãéã¯ãã³ãã¬ã¼ãå¦çã§æ¬æãå¾ãã»ãã、ã¯ã©ã¤ã¢ã³ãããHaineoã«è»¢éãããã¼ã¿ãå°ãªãã¦æ¸ã¿ã¾ãã。
Hainekoã«POSTããæã®èªè¨¼
ç¾æç¹ã§ã¯éä¿¡å
IPã¢ãã¬ã¹ãrelayhostsãã¡ã¤ã«ã§è¨±å¯ããã¦ããå¿
è¦ãããã®ã§ãã、SMTP-AUTHã¿ããã«ä½ãããã®èªè¨¼ææ®µããã£ãã»ããããã§ã。ããã«ã¤ãã¦ã¯@songmuããã®ãã¤ã¼ãã§Plack::Middlewareã«ä»»ããã»ããè¯ãã£ã¦æè¦ãé ããã®ã§、ãã®ããã試é¨ãã¦å¿
è¦æä½éã®å®è£
ããããããªã¨æãã¾ã。
Haineko::Relay::*
Hainekoãããªã¬ã¼åºæ¥ãã®ã¯Haineko::Relay::以ä¸ã«ã¢ã¸ã¥ã¼ã«ãããæ¹æ³ã®ã¿ã§、ESMTPã¨SendGridã®ã¿å®è£
ãã¦ãã¾ã。ä»ã«ã¯AmazonSESãPostmark、MailChimpã¨ãMailgunãããã®æåã©ããã®APIã«å¯¾å¿ããäºå®ã§ã。
ãªã¬ã¼ã¯ãã¾ããã、åã«åé¤ããHaineko::Relay::Discardã¯0.0.3ã§å®è£
ãã¾ãã。Sendmailã®accessã¨ãã§RHSã«æ¸ãDISCARDã¨åãå½¹å²ã§ã。
Haineko::Relay::Haineko
å¥ã®ãã¹ãã¾ãã¯å¥ã®ãã¼ãã§ListenããHainekoã«ãªã¬ã¼ããã¢ã¸ã¥ã¼ã«ã§ã。HainekoãæããJSONããã®ã¾ã¾ãªã¬ã¼ããæãã§ãã、ã«ã¼ã鲿¢ã®ä»çµã¿ã¨Receivedãããããã¾ããã¨è¿½è¨ããã、ããã¨ç°¡åã«å®è£
åºæ¥ãããªæãã§ã。
Haineko::Milter
Milterã¯MTAæ§ç¯・éç¨ãã£ã¦ã¯ã人ã«ã¯ããªãã¿ã§ãã、MTAã§å®è¡ããã¡ã¼ã«ãã£ã«ã¿(Mail Filter)ã§ã。主ã«ã¦ã£ã«ã¹ãã§ãã¯ãã¹ãã ãã£ã«ã¿ãªã³ã°ã§ä½¿ããã¦ãã¾ã。
ãã®SendmailãPostfixã§ä½¿ããmilterã¨åããããªä»çµã¿ã0.0.3ã§Haineko::Milterã¨ãã¦å®è£
ãã¾ãã。åºåºã¨ãªãã¯ã©ã¹ã¯å®è£
æ¸ã§ãã、ã¡ããã¨ä½¿ããã¢ã¸ã¥ã¼ã«ãã¾ã ä½ã£ã¦ããªãã®ã§、ä¸åãäºåãä½ã£ã¦ãµã³ãã«ã¨ãã¦git addãã¦ããäºå®ã§ã。
ã¨、å®ç¨çãªç¨éãåæã¨ãã¦æ¸ãã¦ãã¾ãã、Haineko::Milterãä½ã£ãçç±ã¯、åãã¨ã£ãã¡ã¼ã«æ¬æãAcme::Nyaaã§ç«ã«ãããã¨æã£ãã®ãåæ©ã§ã。
ã¨、å®ç¨çãªç¨éãåæã¨ãã¦æ¸ãã¦ãã¾ãã、Haineko::Milterãä½ã£ãçç±ã¯、åãã¨ã£ãã¡ã¼ã«æ¬æãAcme::Nyaaã§ç«ã«ãããã¨æã£ãã®ãåæ©ã§ã。
ã¾ã¨ã
ç¾æç¹ã§Hainekoã¯ç¹å®ã®ãã¹ãããç¹å®ã®å®å
ã«ã¡ã¼ã«ãéãäºãåºæ¥ã¾ã。ãµã¤ãã®ããã°ã©ã ããç°¡æã«ã¡ã¼ã«ãéãã®ã§ããã°ããã§å
åãªæ°ããã¾ãã、ãã©ã¦ã¶ããJavascriptçµç±ã§、ä¸ç¹å®ã®æ¥ç¶å
ããä¸ç¹å®ã®å®å
ã«éããããªã±ã¼ã¹ã«å¯¾å¿ããã«ã¯、èªè¨¼ã®ä»çµã¿ãå«ãã¦ãã£ã¡ãåºãã¦ããå¿
è¦ãããã¾ã。
CPANã«ã¯ã¾ã ç½®ãã¦ã¾ããã、ç½®ããã©ãããæ±ºãã¦ãã¾ãã。ãããã宿ãããCPANã«ç½®ãã¦ããããã¨æã£ã¦ãã¾ã。
ä»、githubã«ç½®ãã¦ãããã¼ã¸ã§ã³ã¯0.0.3ã§、åãå¿
è¦ãªæ©è½ã¯æ¦ãæã£ã¦ããã®ã§、ãã¨ã¯è²°ã£ãæè¦ã¨ã、ããã«æ¸ããæªå®è£
é
ç®ãä¸å¿ã«å®è£
ãã¦ããäºå®ã§ã。
ã、ããããã°YAPC::Asiaã«Talkãå¿åãã¦ããã®ã§ãã、æ®å¿µãªããä»åã¯ä¸æ¡ç¨ã§ãã。ããã!å»å¹´ã¯è¡ããªãã£ãã®ã§ä»å¹´ã¯YAPC::Asia Tokyo 2013ã«è¡ãã¾ã!
ã、ããããã°YAPC::Asiaã«Talkãå¿åãã¦ããã®ã§ãã、æ®å¿µãªããä»åã¯ä¸æ¡ç¨ã§ãã。ããã!å»å¹´ã¯è¡ããªãã£ãã®ã§ä»å¹´ã¯YAPC::Asia Tokyo 2013ã«è¡ãã¾ã!
0 ä»¶ã®ã³ã¡ã³ã:
ã³ã¡ã³ããæç¨¿