SlideShare a Scribd company logo
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)



Perl and Email #2
Perlの電子メール関係モジュールについてざっくりとした話




                @azumakuniyuki
                    Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




                                  自己紹介


                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    自己紹介
       -   Azuma, Kuniyuki
       -   (@|id:)azumakuniyuki
       -   サーバ管理者(*BSD, Linux, 昔はSolarisも)
       -   プログラマ(Perl, /bin/sh, たまにC, R)
       -   京都市中京区(六角室町)



                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Perl
       - /bin/shで書きにくい場合はPerl
       - 2008年秋からモダンPerlを勉強
         - モダンPerl入門+CPANモジュールガイド
       - YAPC::Asia(2回参加・登壇)
       - Kansai.pm(2回目の参加)



                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Perlで作ったもの
       -   bounceHammer(ばうんすはんまー)
       -   バウンスメール解析専用
       -   コマンドラインツール+WebUI
       -   OpenSource! 2010/03〜
       -   http://bouncehammer.jp/



                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




                                           本題


                                                Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Mail::*, MIME::*
       - 伝統的なメール関係のモジュール
       - 大量にある
       - どれを使ったらいいのやら




                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




               Perl Email Project




                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Perl Email Project(PEP)
       -   Mail::*, MIME::*を刷新
       -   軽量なEmail::*
       -   http://emailproject.perl.org/
       -   人手が足りない→Wiki閉じた(2009)
       -   メーリングリストは流れている


     http://emailproject.perl.org/
                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Install PEP
       -   cpan install Task::Email::PEP::All⏎
       -   ↑全部インストール(約40個ぐらい)
       -   cpan install Task::Email::PEP::NoStore⏎
       -   ↑Class::DBI依存のEmail::Store以外
       - cpan Email::Address⏎
       - ↑個別にインストール


                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




                               作成・解析


                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Email::Simple
       - メール解析・作成モジュール
       - 単純なテキストメール用
       - 添付ファイルとかmultipartなのは無理




                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Email::MIME
       -   メール解析・作成モジュール
       -   Email::MIME->create(...
       -   ヘッダの日本語部分はEncode使う
       -   'To' => encode(
                   'MIME-Header-ISO-2022-JP',
       - 添付ファイルもOK

                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




                                           送信


                                                Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Email::Send
       -   軽量なメール送信モジュール
       -   昔はMail::Sendmail
       -   Envelope Fromの指定ができない
       -   Return::Valueモジュール




                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Email::Sender
       -   メール送信モジュール(Email::Sendの後継)
       -   Envelope Fromの指定できる
       -   Email::Sendより速い (65% faster)
       -   Moose ←依存モジュールは多め
       -   速度が必要ならNet::SMTP (33% faster)


     http://search.cpan.org/~rjbs/Email-Sender/lib/Email/Sender/Manual/QuickStart.pm
                                                   Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Net::SMTP
       -   伝統的なメール送信モジュール
       -   Perl 5.7.3からコアモジュール
       -   SMTPの手順に従って送信
       -   SMTPの知識が少し必要
       - ->datasend( ${Email::MIMEで作ったメール} );



                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




                       メールアドレス


                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Email::Address
       -   メールアドレス解析モジュール
       -   @x = テキストからアドレスを抽出
       -   "ほげ" <hoge@example.jp>
       -   Email::Address




                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Email::Address::Loose
       -   国内携帯電話のRFC違反アドレス対応
       -   RFC-ignored-localpart.@
       -   RFC..ignored..localpart@
       -   今は取得できないけどまだ存在する




                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Email::Valid
       -   メールアドレスが正しいかどうか検査
       -   ->address() 正しい形式かどうか
       -   ->mx() MXレコードがあるかどうか
       -   ->address(… '-tldcheck' => 1); #TLD




                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




                                      サーバ


                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    Net::Server::Mail
       -   use Net::Server::Mail::SMTP;
       -   ローカルに立ち上げるSMTPサーバ
       -   各SMTPコマンドに対応するsub {}を呼ぶ
       -   HELO, MAIL, RCPT, DATA,…
       -   受信後のキュー処理とかは自前で実装



                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




    qpsmtpd
       -   Perl製SMTPサーバ
       -   qmail-smtpdの拡張版的な位置付け
       -   perl.org, apache,org, cpan.org
       -   MTAを完全に置き換えるものではない
       -   ↑Sendmail, Postfix, qmailとか


     http://smtpd.develooper.com/
                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
Kansai.pm 第14回ミーティング in 京都 2011/11/26(土)




                             ご静聴
                            ありがとう
                           ございました

                                           Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.

More Related Content

Perl and Email #2/Kansai.pm第14回ミーティング@京都

  • 1. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Perl and Email #2 Perlの電子メール関係モジュールについてざっくりとした話 @azumakuniyuki Cubicroot Co. Ltd.
  • 2. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) 自己紹介 Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 3. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) 自己紹介 - Azuma, Kuniyuki - (@|id:)azumakuniyuki - サーバ管理者(*BSD, Linux, 昔はSolarisも) - プログラマ(Perl, /bin/sh, たまにC, R) - 京都市中京区(六角室町) Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 4. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Perl - /bin/shで書きにくい場合はPerl - 2008年秋からモダンPerlを勉強 - モダンPerl入門+CPANモジュールガイド - YAPC::Asia(2回参加・登壇) - Kansai.pm(2回目の参加) Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 5. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Perlで作ったもの - bounceHammer(ばうんすはんまー) - バウンスメール解析専用 - コマンドラインツール+WebUI - OpenSource! 2010/03〜 - http://bouncehammer.jp/ Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 6. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) 本題 Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 7. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Mail::*, MIME::* - 伝統的なメール関係のモジュール - 大量にある - どれを使ったらいいのやら Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 8. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Perl Email Project Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 9. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Perl Email Project(PEP) - Mail::*, MIME::*を刷新 - 軽量なEmail::* - http://emailproject.perl.org/ - 人手が足りない→Wiki閉じた(2009) - メーリングリストは流れている http://emailproject.perl.org/ Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 10. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Install PEP - cpan install Task::Email::PEP::All⏎ - ↑全部インストール(約40個ぐらい) - cpan install Task::Email::PEP::NoStore⏎ - ↑Class::DBI依存のEmail::Store以外 - cpan Email::Address⏎ - ↑個別にインストール Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 11. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) 作成・解析 Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 12. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Email::Simple - メール解析・作成モジュール - 単純なテキストメール用 - 添付ファイルとかmultipartなのは無理 Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 13. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Email::MIME - メール解析・作成モジュール - Email::MIME->create(... - ヘッダの日本語部分はEncode使う - 'To' => encode( 'MIME-Header-ISO-2022-JP', - 添付ファイルもOK Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 14. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) 送信 Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 15. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Email::Send - 軽量なメール送信モジュール - 昔はMail::Sendmail - Envelope Fromの指定ができない - Return::Valueモジュール Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 16. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Email::Sender - メール送信モジュール(Email::Sendの後継) - Envelope Fromの指定できる - Email::Sendより速い (65% faster) - Moose ←依存モジュールは多め - 速度が必要ならNet::SMTP (33% faster) http://search.cpan.org/~rjbs/Email-Sender/lib/Email/Sender/Manual/QuickStart.pm Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 17. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Net::SMTP - 伝統的なメール送信モジュール - Perl 5.7.3からコアモジュール - SMTPの手順に従って送信 - SMTPの知識が少し必要 - ->datasend( ${Email::MIMEで作ったメール} ); Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 18. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) メールアドレス Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 19. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Email::Address - メールアドレス解析モジュール - @x = テキストからアドレスを抽出 - "ほげ" <[email protected]> - Email::Address Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 20. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Email::Address::Loose - 国内携帯電話のRFC違反アドレス対応 - RFC-ignored-localpart.@ - RFC..ignored..localpart@ - 今は取得できないけどまだ存在する Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 21. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Email::Valid - メールアドレスが正しいかどうか検査 - ->address() 正しい形式かどうか - ->mx() MXレコードがあるかどうか - ->address(… '-tldcheck' => 1); #TLD Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 22. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) サーバ Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 23. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) Net::Server::Mail - use Net::Server::Mail::SMTP; - ローカルに立ち上げるSMTPサーバ - 各SMTPコマンドに対応するsub {}を呼ぶ - HELO, MAIL, RCPT, DATA,… - 受信後のキュー処理とかは自前で実装 Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 24. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) qpsmtpd - Perl製SMTPサーバ - qmail-smtpdの拡張版的な位置付け - perl.org, apache,org, cpan.org - MTAを完全に置き換えるものではない - ↑Sendmail, Postfix, qmailとか http://smtpd.develooper.com/ Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.
  • 25. Kansai.pm 第14回ミーティング in 京都 2011/11/26(土) ご静聴 ありがとう ございました Perl and Email #2 @azumakuniyuki / Cubicroot Co. Ltd.