Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

12,530 views

Published on

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

Published in: Technology
  • Be the first to comment

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

  1. 1. 今に伝えるメールの技術 OGATA Tetsuji (@xtetsuji) 2014/09/03 YAPC::Asia Tokyo 2014 Reject con
  2. 2. はじめに • この資料は公開します • 撮影とかTwitterなどへの実況は自由です • 感想お待ちしています、お手柔らかに
  3. 3. 自己紹介 • 尾形 鉄次 (OGATA Tetsuji) • Twitter: @xtetsuji • Blog: http://post.tetsuji.jp/ • mod_perl芸人として一昨年と昨年YAPC::Asia Tokyoで 登壇しましたが、最近はその芸風は抑え気味です
  4. 4. 今を取り巻くメールの現状
  5. 5. 忌避されるメール • SPAM問題、未読メールだらけ問題、などなど • SMTPがシンプルじゃないしセキュアでもない • POP3もIMAP4もMIMEも、踏み込むと色々面倒 • 社内連絡にはメールを使わないという企業も珍しくなく なった 闇のEメール伝説 (Ricardo Signes) より https://www.youtube.com/watch?v=JENdgiAPD6c
  6. 6. Sがシンプルじゃない問題 • Wikipediaより:SOAP(ソープ)は、XML-RPCから発 展した、XML Webサービスのための、XMLベースの RPCプロトコルである。元はSimple Object Access Protocolの頭字語とされていたが、さまざまな成り行き の結果Simpleとは言いかねる複雑怪奇なシロモノとなり はてた[1]といったこともあり、現在は「何かの頭字語で はない」とされている[2]。 https://flic.kr/p/9mn5PK
  7. 7. ロストテクノロジー化へ • 「メールはGmailで」という企業が増加して、社内に メールサーバを持っていない企業も珍しくなくなった • メールの普及を後押ししたガラケーが消えて、スマート フォン時代へメールの訴求ができなかったキャリア • 全てGoogleが悪いの戦略が当たった https://flic.kr/p/7Q9QAs
  8. 8. さらに代替ツールの攻勢 • メールはGmailで • IMやチャットツールやウェブ上のコミュニケーションの 復権 (LINE, HipChat, Slack, GitHub Issue, …) • メールを排除しようとする人や製品などの勢力の登場 • スマートフォンの登場でメールのあり方が変わった隙に 躍進する企業が多数
  9. 9. メールを盛り上げたのも 滅ぼしたのも、たぶんガラケー
  10. 10. そういえば先日こんな集まりを やりました
  11. 11. https://atnd.org/events/51602
  12. 12. こっそりやろうと思っていたら なんかめっちゃバズって 正直ビビった 裏話に興味のある方は会場で私をつかまえてください
  13. 13. ガラケーとメールの関係 • 外から情報を受け取るのも連絡を取るのもガラケー時代 は全てメールだった • 「カラメ」という文化 • 通知もメール (今もなお残されている伝統) • ガラケーの衰退、スマホでのキャリアのメール普及失敗 によるLINE化、プッシュ通知などで、メールの重要度は 以前よりはずいぶん低くなった https://flic.kr/p/2k9ym
  14. 14. このままではいけない!
  15. 15. メールの技術が継承されない! • 突然「メールを使った案件やって」って言われた時に、 既に知っている人がいなくなってしまう未来が! • というわけでここで、2014年のメールにまつわる技術を Perlを絡めながら、まとめてみたいと思います • ロストテクノロジーにはさせない • この会場には私より詳しい人がたくさんいます
  16. 16. 本題
  17. 17. MTA = Mail Transfer Agent • いわゆる「SMTPサーバ」 • 過去色々なサーバがあったけれど、今はPostfixを選んで おけばだいたい良い • 最近のPostfixは攻めのバージョンアップをしているけれ ど、ネット上には2.3や2.4時代の情報があふれているの には注意(今の最新安定版は2.11.1)
  18. 18. Postfixの情報源 • 古いPostfix情報が刷新されない状況を何とかしようと 2013年に@ytnobodyさんと共に「日本Postfix友の会」 を立ち上げたはいいけれど、全然活動できていないので、 興味のある方を募集中です • 日本で有名な「Postfixのぺーじ」http://postfix-jp.info/ もドキュメントの和訳が2.3系で停止している
  19. 19. SMTPを手でしゃべる • 昔はよくトラブルシューティングでやっていた • telnet localhost 25 とか • PerlでやるならコアモジュールのNet::SMTPが同様の事 をしている (Perl 5.7.3からコアモジュール) • RCPT TOで拒否される場合と、DATAで拒否される場合 で色々違うことを推測するとか懐かしい
  20. 20. Perlでメールを送信するには • 2014年の今、普通にメールを送信するなら、 Email::Senderが一番良い • Ricardo SIGNES氏によるモジュール • 以前より依存関係が軽くなった(Moose→Mooとか) • 簡単な事はそれなりに、難しいこともそれなりに
  21. 21. Email::Senderよりももっと! • Email::Senderも結構色々なオブジェクトを作って大変 だって思うこともある • 手元でEmail::Senderのラッパーモジュールを書いていて この場で「できました」って言えればよかったんですが、 間に合いませんでした • 色々と構想中ですので、できたら公開します https://flic.kr/p/djYmP
  22. 22. Perlでメールを受信するには • Postfixのpipeを使ってやると良い • .forward とかに書くものから、master.cf に pipe(8) の サービスとして書くものまで、方法がある • プログラムは何でも良くて、メール本文を標準入力から もらって、その結果で何かするというものを書く • ただ、1メール受信するごとに1プロセス起動するのは、 CGIと同じようなもの https://flic.kr/p/g4vbeY
  23. 23. メルマガ消し込みというやつ • 存在しないガラケーメアドにメルマガを配信し続けると 明白なペナルティを受けるし、ISPにも目をつけられる • エラーメールをプログラムで受信して解析して、必要で あれば以降そのアドレスへ配信しないようにする (いわゆる消し込み) • Fromの解析なら.forwardよりmaster.cfに書いたpipeの 方が標準入力でエンベロープFromがもらえるので楽 https://flic.kr/p/nNbCoe
  24. 24. メルマガ消し込みというやつ • メルマガは一気に大量に送るもの • なのでたまに配信すると、エラーメールも一気に返って くる可能性がある→これでメールサーバが落ちることも • CGI的なpipeはコストがかかりすぎる • ウェブプログラミングと同じで工夫が必要 https://flic.kr/p/nNbCoe
  25. 25. Qpsmtpd • Perl製のメールサーバ、結構堅い • ウェブで言うとPlackみたいなもの、のようにも見える • Perlでプラグインも書けるしメール着信の都度プロセス forkしたりもしない • 前衛において使うのがためらわれる場合はPostfixの後ろ 側において使うと良かったりする
  26. 26. エラーメールの文面は奔放 • エラーメール(バウンスメール)の文面には実は仕様がない • あれを解析して、どういう事情でメールが不達だったの かを知る方法は相当大変 • そういう時はbounceHammerを使うと良い(Perl製) • 日本のメールの専門家、@azumakuniyukiさん作
  27. 27. メルマガ大量配信の工夫 • これは業者に任せたほうが無難 • メルマガは誤配信すると相当な大事故だから • 送信先メールサーバに気を使ったりとかも大変だし • もし自前で大規模配信をするには、サーバとIPアドレス を並べるという力技になることが多い(プログラム言語が あまり関係ない世界) https://flic.kr/p/6gYLHR
  28. 28. メーリングリスト • これもGoogleグループとかがロストテクノロジーに追い 込んだ技術なのか? • fml4がPerl5.10で動かなくなってMailmanに移行する人 が多かったが、Mailmanも好みが分かれるところ • fml8プロジェクトが後継だけれど、普及しない • fml8は結構野心的なので応援したい
  29. 29. 絵文字 • ガラケーのメール文化で第一次ヒットをした絵文字 • GoogleやAppleなどの活動で、Unicode6で正式に取り入 れらたあとはAndroidやiPhoneに乗って世界へ • PerlはEncodeモジュールによる手厚いUnicodeサポート • 昔はガラケー各社のバラバラ文字コードテーブルのため にEncode::JP::MobileやUnicode::Japaneseが重宝した https://flic.kr/p/oDGzUo
  30. 30. ガラケーから絵文字を送れない • ガラケーから任意のSMTPサーバに絵文字入りメールを 送るとゲタ(〓)になる • キャリアが混在するメーリングリストを作っても絵文字 が化ける (詳細はガラケー大戦回顧録のブログ記事で) • これを解決するには技術力よりも大人の交渉力が必要 • まぁ、今の私なら「LINE使ったほうが早いよ」っていう https://flic.kr/p/7WdiAr
  31. 31. まとめ • メールの技術は新興勢力によってことごとくロストテク ノロジー化されてしまった • でも今でもメールは生き残っていて、メールを扱うプロ グラムを書く必要性は今後もしばらくは絶対に出てくる • そんな時に、この情報いいよっていうことの2014年版を まとめたかったのがコレ
  32. 32. 今回省いた話 • POP3とかIMAP4とかメーラーとか • メールと仲良しなDNSの話 • ExchangeサーバやNotesサーバなどと仲良くする話 • …他いろいろ
  33. 33. メールは滅びぬ! 何度でも蘇るさ! メールの力こそ人類の夢だからだ!
  34. 34. Enjoy &
  35. 35. おしまい

×