More Related Content Similar to 今に伝えるメールの技術 #yapcasia #yapcasiareject (6) 今に伝えるメールの技術 #yapcasia #yapcasiareject3. 自己紹介
• 尾形 鉄次 (OGATA Tetsuji)
• Twitter: @xtetsuji
• Blog: http://post.tetsuji.jp/
• mod_perl芸人として一昨年と昨年YAPC::Asia Tokyoで
登壇しましたが、最近はその芸風は抑え気味です
5. 忌避されるメール
• SPAM問題、未読メールだらけ問題、などなど
• SMTPがシンプルじゃないしセキュアでもない
• POP3もIMAP4もMIMEも、踏み込むと色々面倒
• 社内連絡にはメールを使わないという企業も珍しくなく
なった
闇のEメール伝説 (Ricardo Signes) より
https://www.youtube.com/watch?v=JENdgiAPD6c
6. Sがシンプルじゃない問題
• Wikipediaより:SOAP(ソープ)は、XML-RPCから発
展した、XML Webサービスのための、XMLベースの
RPCプロトコルである。元はSimple Object Access
Protocolの頭字語とされていたが、さまざまな成り行き
の結果Simpleとは言いかねる複雑怪奇なシロモノとなり
はてた[1]といったこともあり、現在は「何かの頭字語で
はない」とされている[2]。
https://flic.kr/p/9mn5PK
8. さらに代替ツールの攻勢
• メールはGmailで
• IMやチャットツールやウェブ上のコミュニケーションの
復権 (LINE, HipChat, Slack, GitHub Issue, …)
• メールを排除しようとする人や製品などの勢力の登場
• スマートフォンの登場でメールのあり方が変わった隙に
躍進する企業が多数
17. MTA = Mail Transfer Agent
• いわゆる「SMTPサーバ」
• 過去色々なサーバがあったけれど、今はPostfixを選んで
おけばだいたい良い
• 最近のPostfixは攻めのバージョンアップをしているけれ
ど、ネット上には2.3や2.4時代の情報があふれているの
には注意(今の最新安定版は2.11.1)
19. SMTPを手でしゃべる
• 昔はよくトラブルシューティングでやっていた
• telnet localhost 25 とか
• PerlでやるならコアモジュールのNet::SMTPが同様の事
をしている (Perl 5.7.3からコアモジュール)
• RCPT TOで拒否される場合と、DATAで拒否される場合
で色々違うことを推測するとか懐かしい
22. Perlでメールを受信するには
• Postfixのpipeを使ってやると良い
• .forward とかに書くものから、master.cf に pipe(8) の
サービスとして書くものまで、方法がある
• プログラムは何でも良くて、メール本文を標準入力から
もらって、その結果で何かするというものを書く
• ただ、1メール受信するごとに1プロセス起動するのは、
CGIと同じようなもの
https://flic.kr/p/g4vbeY
23. メルマガ消し込みというやつ
• 存在しないガラケーメアドにメルマガを配信し続けると
明白なペナルティを受けるし、ISPにも目をつけられる
• エラーメールをプログラムで受信して解析して、必要で
あれば以降そのアドレスへ配信しないようにする
(いわゆる消し込み)
• Fromの解析なら.forwardよりmaster.cfに書いたpipeの
方が標準入力でエンベロープFromがもらえるので楽
https://flic.kr/p/nNbCoe
24. メルマガ消し込みというやつ
• メルマガは一気に大量に送るもの
• なのでたまに配信すると、エラーメールも一気に返って
くる可能性がある→これでメールサーバが落ちることも
• CGI的なpipeはコストがかかりすぎる
• ウェブプログラミングと同じで工夫が必要
https://flic.kr/p/nNbCoe
25. Qpsmtpd
• Perl製のメールサーバ、結構堅い
• ウェブで言うとPlackみたいなもの、のようにも見える
• Perlでプラグインも書けるしメール着信の都度プロセス
forkしたりもしない
• 前衛において使うのがためらわれる場合はPostfixの後ろ
側において使うと良かったりする
27. メルマガ大量配信の工夫
• これは業者に任せたほうが無難
• メルマガは誤配信すると相当な大事故だから
• 送信先メールサーバに気を使ったりとかも大変だし
• もし自前で大規模配信をするには、サーバとIPアドレス
を並べるという力技になることが多い(プログラム言語が
あまり関係ない世界)
https://flic.kr/p/6gYLHR
29. 絵文字
• ガラケーのメール文化で第一次ヒットをした絵文字
• GoogleやAppleなどの活動で、Unicode6で正式に取り入
れらたあとはAndroidやiPhoneに乗って世界へ
• PerlはEncodeモジュールによる手厚いUnicodeサポート
• 昔はガラケー各社のバラバラ文字コードテーブルのため
にEncode::JP::MobileやUnicode::Japaneseが重宝した
https://flic.kr/p/oDGzUo