35
今に伝えるメールの技術 OGATA Tetsuji (@xtetsuji) 2014/09/03 YAPC::Asia Tokyo 2014 Reject con

今に伝えるメールの技術 #yapcasia #yapcasiareject

Embed Size (px)

DESCRIPTION

2014/9/3に行われた YAPC::Asia Tokyo 2014 Reject con で発表したトークのスライドです。

Citation preview

Page 1: 今に伝えるメールの技術 #yapcasia #yapcasiareject

今に伝えるメールの技術OGATA Tetsuji (@xtetsuji)

2014/09/03 YAPC::Asia Tokyo 2014 Reject con

Page 2: 今に伝えるメールの技術 #yapcasia #yapcasiareject

はじめに

• この資料は公開します

• 撮影とかTwitterなどへの実況は自由です

• 感想お待ちしています、お手柔らかに

Page 3: 今に伝えるメールの技術 #yapcasia #yapcasiareject

自己紹介

• 尾形 鉄次 (OGATA Tetsuji)

• Twitter: @xtetsuji

• Blog: http://post.tetsuji.jp/

• mod_perl芸人として一昨年と昨年YAPC::Asia Tokyoで登壇しましたが、最近はその芸風は抑え気味です

Page 4: 今に伝えるメールの技術 #yapcasia #yapcasiareject

今を取り巻くメールの現状

Page 5: 今に伝えるメールの技術 #yapcasia #yapcasiareject

忌避されるメール

• SPAM問題、未読メールだらけ問題、などなど

• SMTPがシンプルじゃないしセキュアでもない

• POP3もIMAP4もMIMEも、踏み込むと色々面倒

• 社内連絡にはメールを使わないという企業も珍しくなくなった

闇のEメール伝説 (Ricardo Signes) より https://www.youtube.com/watch?v=JENdgiAPD6c

Page 6: 今に伝えるメールの技術 #yapcasia #yapcasiareject

Sがシンプルじゃない問題

• Wikipediaより:SOAP(ソープ)は、XML-RPCから発展した、XML Webサービスのための、XMLベースのRPCプロトコルである。元はSimple Object Access Protocolの頭字語とされていたが、さまざまな成り行きの結果Simpleとは言いかねる複雑怪奇なシロモノとなりはてた[1]といったこともあり、現在は「何かの頭字語ではない」とされている[2]。

https://flic.kr/p/9mn5PK

Page 7: 今に伝えるメールの技術 #yapcasia #yapcasiareject

ロストテクノロジー化へ

• 「メールはGmailで」という企業が増加して、社内にメールサーバを持っていない企業も珍しくなくなった

• メールの普及を後押ししたガラケーが消えて、スマートフォン時代へメールの訴求ができなかったキャリア

• 全てGoogleが悪いの戦略が当たった

https://flic.kr/p/7Q9QAs

Page 8: 今に伝えるメールの技術 #yapcasia #yapcasiareject

さらに代替ツールの攻勢

• メールはGmailで

• IMやチャットツールやウェブ上のコミュニケーションの復権 (LINE, HipChat, Slack, GitHub Issue, …)

• メールを排除しようとする人や製品などの勢力の登場

• スマートフォンの登場でメールのあり方が変わった隙に躍進する企業が多数

Page 9: 今に伝えるメールの技術 #yapcasia #yapcasiareject

メールを盛り上げたのも 滅ぼしたのも、たぶんガラケー

Page 10: 今に伝えるメールの技術 #yapcasia #yapcasiareject

そういえば先日こんな集まりをやりました

Page 11: 今に伝えるメールの技術 #yapcasia #yapcasiareject

https://atnd.org/events/51602

Page 12: 今に伝えるメールの技術 #yapcasia #yapcasiareject

こっそりやろうと思っていたらなんかめっちゃバズって

正直ビビった

裏話に興味のある方は会場で私をつかまえてください

Page 13: 今に伝えるメールの技術 #yapcasia #yapcasiareject

ガラケーとメールの関係• 外から情報を受け取るのも連絡を取るのもガラケー時代は全てメールだった

• 「カラメ」という文化

• 通知もメール (今もなお残されている伝統)

• ガラケーの衰退、スマホでのキャリアのメール普及失敗によるLINE化、プッシュ通知などで、メールの重要度は以前よりはずいぶん低くなった

https://flic.kr/p/2k9ym

Page 14: 今に伝えるメールの技術 #yapcasia #yapcasiareject

このままではいけない!

Page 15: 今に伝えるメールの技術 #yapcasia #yapcasiareject

メールの技術が継承されない!

• 突然「メールを使った案件やって」って言われた時に、既に知っている人がいなくなってしまう未来が!

• というわけでここで、2014年のメールにまつわる技術をPerlを絡めながら、まとめてみたいと思います

• ロストテクノロジーにはさせない

• この会場には私より詳しい人がたくさんいます

Page 16: 今に伝えるメールの技術 #yapcasia #yapcasiareject

本題

Page 17: 今に伝えるメールの技術 #yapcasia #yapcasiareject

MTA = Mail Transfer Agent

• いわゆる「SMTPサーバ」

• 過去色々なサーバがあったけれど、今はPostfixを選んでおけばだいたい良い

• 最近のPostfixは攻めのバージョンアップをしているけれど、ネット上には2.3や2.4時代の情報があふれているのには注意(今の最新安定版は2.11.1)

Page 18: 今に伝えるメールの技術 #yapcasia #yapcasiareject

Postfixの情報源

• 古いPostfix情報が刷新されない状況を何とかしようと2013年に@ytnobodyさんと共に「日本Postfix友の会」を立ち上げたはいいけれど、全然活動できていないので、興味のある方を募集中です

• 日本で有名な「Postfixのぺーじ」http://postfix-jp.info/ もドキュメントの和訳が2.3系で停止している

Page 19: 今に伝えるメールの技術 #yapcasia #yapcasiareject

SMTPを手でしゃべる• 昔はよくトラブルシューティングでやっていた

• telnet localhost 25 とか

• PerlでやるならコアモジュールのNet::SMTPが同様の事をしている (Perl 5.7.3からコアモジュール)

• RCPT TOで拒否される場合と、DATAで拒否される場合で色々違うことを推測するとか懐かしい

Page 20: 今に伝えるメールの技術 #yapcasia #yapcasiareject

Perlでメールを送信するには

• 2014年の今、普通にメールを送信するなら、Email::Senderが一番良い

• Ricardo SIGNES氏によるモジュール

• 以前より依存関係が軽くなった(Moose→Mooとか)

• 簡単な事はそれなりに、難しいこともそれなりに

Page 21: 今に伝えるメールの技術 #yapcasia #yapcasiareject

Email::Senderよりももっと!

• Email::Senderも結構色々なオブジェクトを作って大変だって思うこともある

• 手元でEmail::Senderのラッパーモジュールを書いていてこの場で「できました」って言えればよかったんですが、間に合いませんでした

• 色々と構想中ですので、できたら公開します

https://flic.kr/p/djYmP

Page 22: 今に伝えるメールの技術 #yapcasia #yapcasiareject

Perlでメールを受信するには• Postfixのpipeを使ってやると良い

• .forward とかに書くものから、master.cf に pipe(8) のサービスとして書くものまで、方法がある

• プログラムは何でも良くて、メール本文を標準入力からもらって、その結果で何かするというものを書く

• ただ、1メール受信するごとに1プロセス起動するのは、CGIと同じようなもの

https://flic.kr/p/g4vbeY

Page 23: 今に伝えるメールの技術 #yapcasia #yapcasiareject

メルマガ消し込みというやつ• 存在しないガラケーメアドにメルマガを配信し続けると明白なペナルティを受けるし、ISPにも目をつけられる

• エラーメールをプログラムで受信して解析して、必要であれば以降そのアドレスへ配信しないようにする (いわゆる消し込み)

• Fromの解析なら.forwardよりmaster.cfに書いたpipeの方が標準入力でエンベロープFromがもらえるので楽

https://flic.kr/p/nNbCoe

Page 24: 今に伝えるメールの技術 #yapcasia #yapcasiareject

メルマガ消し込みというやつ

• メルマガは一気に大量に送るもの

• なのでたまに配信すると、エラーメールも一気に返ってくる可能性がある→これでメールサーバが落ちることも

• CGI的なpipeはコストがかかりすぎる

• ウェブプログラミングと同じで工夫が必要

https://flic.kr/p/nNbCoe

Page 25: 今に伝えるメールの技術 #yapcasia #yapcasiareject

Qpsmtpd

• Perl製のメールサーバ、結構堅い

• ウェブで言うとPlackみたいなもの、のようにも見える

• Perlでプラグインも書けるしメール着信の都度プロセスforkしたりもしない

• 前衛において使うのがためらわれる場合はPostfixの後ろ側において使うと良かったりする

Page 26: 今に伝えるメールの技術 #yapcasia #yapcasiareject

エラーメールの文面は奔放

• エラーメール(バウンスメール)の文面には実は仕様がない

• あれを解析して、どういう事情でメールが不達だったのかを知る方法は相当大変

• そういう時はbounceHammerを使うと良い(Perl製)

• 日本のメールの専門家、@azumakuniyukiさん作

Page 27: 今に伝えるメールの技術 #yapcasia #yapcasiareject

メルマガ大量配信の工夫• これは業者に任せたほうが無難

• メルマガは誤配信すると相当な大事故だから

• 送信先メールサーバに気を使ったりとかも大変だし

• もし自前で大規模配信をするには、サーバとIPアドレスを並べるという力技になることが多い(プログラム言語があまり関係ない世界)

https://flic.kr/p/6gYLHR

Page 28: 今に伝えるメールの技術 #yapcasia #yapcasiareject

メーリングリスト• これもGoogleグループとかがロストテクノロジーに追い込んだ技術なのか?

• fml4がPerl5.10で動かなくなってMailmanに移行する人が多かったが、Mailmanも好みが分かれるところ

• fml8プロジェクトが後継だけれど、普及しない

• fml8は結構野心的なので応援したい

Page 29: 今に伝えるメールの技術 #yapcasia #yapcasiareject

絵文字• ガラケーのメール文化で第一次ヒットをした絵文字

• GoogleやAppleなどの活動で、Unicode6で正式に取り入れらたあとはAndroidやiPhoneに乗って世界へ

• PerlはEncodeモジュールによる手厚いUnicodeサポート

• 昔はガラケー各社のバラバラ文字コードテーブルのためにEncode::JP::MobileやUnicode::Japaneseが重宝した

https://flic.kr/p/oDGzUo

Page 30: 今に伝えるメールの技術 #yapcasia #yapcasiareject

ガラケーから絵文字を送れない• ガラケーから任意のSMTPサーバに絵文字入りメールを送るとゲタ(〓)になる

• キャリアが混在するメーリングリストを作っても絵文字が化ける (詳細はガラケー大戦回顧録のブログ記事で)

• これを解決するには技術力よりも大人の交渉力が必要

• まぁ、今の私なら「LINE使ったほうが早いよ」っていう

https://flic.kr/p/7WdiAr

Page 31: 今に伝えるメールの技術 #yapcasia #yapcasiareject

まとめ

• メールの技術は新興勢力によってことごとくロストテクノロジー化されてしまった

• でも今でもメールは生き残っていて、メールを扱うプログラムを書く必要性は今後もしばらくは絶対に出てくる

• そんな時に、この情報いいよっていうことの2014年版をまとめたかったのがコレ

Page 32: 今に伝えるメールの技術 #yapcasia #yapcasiareject

今回省いた話

• POP3とかIMAP4とかメーラーとか

• メールと仲良しなDNSの話

• ExchangeサーバやNotesサーバなどと仲良くする話

• …他いろいろ

Page 33: 今に伝えるメールの技術 #yapcasia #yapcasiareject

メールは滅びぬ! 何度でも蘇るさ!

メールの力こそ人類の夢だからだ!

Page 34: 今に伝えるメールの技術 #yapcasia #yapcasiareject

Enjoy 🍺&🍕

Page 35: 今に伝えるメールの技術 #yapcasia #yapcasiareject

おしまい