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