Soumettre la recherche
Mettre en ligne
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
•
2 j'aime
•
6,672 vues
azumakuniyuki 🐈
Suivre
メール送信温故知新、今昔物語。
Lire moins
Lire la suite
Logiciels
Signaler
Partager
Signaler
Partager
1 sur 52
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
azumakuniyuki 🐈
GroovyでJSON2014
GroovyでJSON2014
Yasuharu Hayami
オープンデータを利用したWebアプリ開発
オープンデータを利用したWebアプリ開発
dokechin
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
鉄次 尾形
2017年春のPerl
2017年春のPerl
charsbar
CGI Perlでわかる!サーバレス
CGI Perlでわかる!サーバレス
Tatsuro Hisamori
YAPC::KANSAI 2017 LT
YAPC::KANSAI 2017 LT
maka2donzoko
Ranking system by Elasticsearch
Ranking system by Elasticsearch
Kazuhiro Osawa
Recommandé
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
Hokkaido.pm#13参加報告 | YAPC::Kansai 2017 Osaka
azumakuniyuki 🐈
GroovyでJSON2014
GroovyでJSON2014
Yasuharu Hayami
オープンデータを利用したWebアプリ開発
オープンデータを利用したWebアプリ開発
dokechin
Perl ウェブ開発の中世〜CGI と Plack の間〜
Perl ウェブ開発の中世〜CGI と Plack の間〜
鉄次 尾形
2017年春のPerl
2017年春のPerl
charsbar
CGI Perlでわかる!サーバレス
CGI Perlでわかる!サーバレス
Tatsuro Hisamori
YAPC::KANSAI 2017 LT
YAPC::KANSAI 2017 LT
maka2donzoko
Ranking system by Elasticsearch
Ranking system by Elasticsearch
Kazuhiro Osawa
First step of Performance Tuning
First step of Performance Tuning
risou
僕と北海道とPerl、それとMakefileも。
僕と北海道とPerl、それとMakefileも。
azumakuniyuki 🐈
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
純生 野田
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
sairoutine
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
Ichito Nagata
今だからこそ振り返ろう!OWASP Top 10
今だからこそ振り返ろう!OWASP Top 10
Daiki Ichinose
Twitterの被ブロック数可視化ツールを作ってみた
Twitterの被ブロック数可視化ツールを作ってみた
おさ OSA
開発の本質:チケット数を1/100にする方法
開発の本質:チケット数を1/100にする方法
Takahiro Kubo
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
dcubeio
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
Hiroyuki Hiki
ハードディスクの正しい消去(2015.7)
ハードディスクの正しい消去(2015.7)
UEHARA, Tetsutaro
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
azuma satoshi
PerlモジュールをRubyに移植する時に落ちた穴々
PerlモジュールをRubyに移植する時に落ちた穴々
azumakuniyuki 🐈
人工知能と機械学習の違いって?
人工知能と機械学習の違いって?
Shuyo Nakatani
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
Yukiya Nakagawa
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
Keisuke Nishitani
10年モノ熟成Perlとの付き合い方
10年モノ熟成Perlとの付き合い方
Masaki Nakagawa
サーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
Technology for reduce of mistakes - うっかりをなくす技術
Technology for reduce of mistakes - うっかりをなくす技術
karupanerura
YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活
azumakuniyuki 🐈
NSEG勉強会(101)LT: 僕と長野県
NSEG勉強会(101)LT: 僕と長野県
azumakuniyuki 🐈
Contenu connexe
En vedette
First step of Performance Tuning
First step of Performance Tuning
risou
僕と北海道とPerl、それとMakefileも。
僕と北海道とPerl、それとMakefileも。
azumakuniyuki 🐈
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
純生 野田
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
sairoutine
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
Ichito Nagata
今だからこそ振り返ろう!OWASP Top 10
今だからこそ振り返ろう!OWASP Top 10
Daiki Ichinose
Twitterの被ブロック数可視化ツールを作ってみた
Twitterの被ブロック数可視化ツールを作ってみた
おさ OSA
開発の本質:チケット数を1/100にする方法
開発の本質:チケット数を1/100にする方法
Takahiro Kubo
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
dcubeio
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
Hiroyuki Hiki
ハードディスクの正しい消去(2015.7)
ハードディスクの正しい消去(2015.7)
UEHARA, Tetsutaro
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
azuma satoshi
PerlモジュールをRubyに移植する時に落ちた穴々
PerlモジュールをRubyに移植する時に落ちた穴々
azumakuniyuki 🐈
人工知能と機械学習の違いって?
人工知能と機械学習の違いって?
Shuyo Nakatani
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
Yukiya Nakagawa
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
Keisuke Nishitani
10年モノ熟成Perlとの付き合い方
10年モノ熟成Perlとの付き合い方
Masaki Nakagawa
サーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
Technology for reduce of mistakes - うっかりをなくす技術
Technology for reduce of mistakes - うっかりをなくす技術
karupanerura
En vedette
(20)
First step of Performance Tuning
First step of Performance Tuning
僕と北海道とPerl、それとMakefileも。
僕と北海道とPerl、それとMakefileも。
データベース設計徹底指南
データベース設計徹底指南
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
レガシーな Perl システムに DDD (ドメイン駆動設計)を取り入れる
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
今だからこそ振り返ろう!OWASP Top 10
今だからこそ振り返ろう!OWASP Top 10
Twitterの被ブロック数可視化ツールを作ってみた
Twitterの被ブロック数可視化ツールを作ってみた
開発の本質:チケット数を1/100にする方法
開発の本質:チケット数を1/100にする方法
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
サーバーレスでシステムを開発する時に⼤切な事
サーバーレスでシステムを開発する時に⼤切な事
ハードディスクの正しい消去(2015.7)
ハードディスクの正しい消去(2015.7)
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
PerlモジュールをRubyに移植する時に落ちた穴々
PerlモジュールをRubyに移植する時に落ちた穴々
人工知能と機械学習の違いって?
人工知能と機械学習の違いって?
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
React Nativeはクロスプラットフォームモバイルアプリ開発の夢を見るか #DroidKaigi
AWSでアプリ開発するなら 知っておくべこと
AWSでアプリ開発するなら 知っておくべこと
10年モノ熟成Perlとの付き合い方
10年モノ熟成Perlとの付き合い方
サーバーレスの今とこれから
サーバーレスの今とこれから
Technology for reduce of mistakes - うっかりをなくす技術
Technology for reduce of mistakes - うっかりをなくす技術
Plus de azumakuniyuki 🐈
YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活
azumakuniyuki 🐈
NSEG勉強会(101)LT: 僕と長野県
NSEG勉強会(101)LT: 僕と長野県
azumakuniyuki 🐈
Email is Slack
Email is Slack
azumakuniyuki 🐈
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
azumakuniyuki 🐈
SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2
azumakuniyuki 🐈
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
azumakuniyuki 🐈
Hachioji.pm #40 次のbounceHammer開発中
Hachioji.pm #40 次のbounceHammer開発中
azumakuniyuki 🐈
2013 11-30-mailqueue-monitoring
2013 11-30-mailqueue-monitoring
azumakuniyuki 🐈
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
azumakuniyuki 🐈
Perlの書籍紹介/KOF2013
Perlの書籍紹介/KOF2013
azumakuniyuki 🐈
実践的bounceHammer / KOF2013
実践的bounceHammer / KOF2013
azumakuniyuki 🐈
JSONでメール送信(Haineko) / KOF2013
JSONでメール送信(Haineko) / KOF2013
azumakuniyuki 🐈
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
azumakuniyuki 🐈
Perl and Email #3 ``Haineko''/Kyoto.pm #5
Perl and Email #3 ``Haineko''/Kyoto.pm #5
azumakuniyuki 🐈
Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」
azumakuniyuki 🐈
Namba.pm #0 LT資料
Namba.pm #0 LT資料
azumakuniyuki 🐈
最近僕が使うようになったPerl 5.10以降の新しいやつ
最近僕が使うようになったPerl 5.10以降の新しいやつ
azumakuniyuki 🐈
Perl and Email #2/Kansai.pm第14回ミーティング@京都
Perl and Email #2/Kansai.pm第14回ミーティング@京都
azumakuniyuki 🐈
KOF 2011 bounceHammerによるバウンスメール解析の技術
KOF 2011 bounceHammerによるバウンスメール解析の技術
azumakuniyuki 🐈
Plus de azumakuniyuki 🐈
(20)
YAPC::Nagoya::Tiny 2019 | Makefile生活
YAPC::Nagoya::Tiny 2019 | Makefile生活
NSEG勉強会(101)LT: 僕と長野県
NSEG勉強会(101)LT: 僕と長野県
Email is Slack
Email is Slack
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
[スパム報告]ボタンを押すとどうなるのか | Hosting Casual Talks #4
SendGridのない世界 | SendGrid Night in Osaka #2
SendGridのない世界 | SendGrid Night in Osaka #2
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
自動構築と自動テスト〜インフラのコード化とクラウドの優位性
Hachioji.pm #40 次のbounceHammer開発中
Hachioji.pm #40 次のbounceHammer開発中
2013 11-30-mailqueue-monitoring
2013 11-30-mailqueue-monitoring
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Plackで実装したメールサーバ"Haineko"のその後/Shibuya.pl #1
Perlの書籍紹介/KOF2013
Perlの書籍紹介/KOF2013
実践的bounceHammer / KOF2013
実践的bounceHammer / KOF2013
JSONでメール送信(Haineko) / KOF2013
JSONでメール送信(Haineko) / KOF2013
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
猫とPerl〜応用編1/YAPC Asia Tokyo 2013 LT-THON::Tiny
Perl and Email #3 ``Haineko''/Kyoto.pm #5
Perl and Email #3 ``Haineko''/Kyoto.pm #5
Kansai.pm #15 LT資料「猫とPerl」
Kansai.pm #15 LT資料「猫とPerl」
Namba.pm #0 LT資料
Namba.pm #0 LT資料
最近僕が使うようになったPerl 5.10以降の新しいやつ
最近僕が使うようになったPerl 5.10以降の新しいやつ
Perl and Email #2/Kansai.pm第14回ミーティング@京都
Perl and Email #2/Kansai.pm第14回ミーティング@京都
KOF 2011 bounceHammerによるバウンスメール解析の技術
KOF 2011 bounceHammerによるバウンスメール解析の技術
メールフォームからメールを送る近代的な方法 | YAPC::Kansai 2017 OSAKA
1.
メールフォーム から メールを送る 近代的な方法 @azumakuniyuki YAPC::Kansai 2017 Osaka
2017/03/4(土) MOTEXさん
2.
メールフォーム から メールを送る 近代的な方法 @azumakuniyuki YAPC::Kansai 2017 Osaka
2017/03/4(土) MOTEXさん メール送信 温故知新
3.
自己紹介 @azumakuniyuki (東邦之) 株式会社Cubicroot (京都市) 3 -
インフラエンジニア(ラック実装から構築・保守) - *BSD, Linux, 古くはSolaris, SunOS - ネットワークの設計・サーバの構築と保守 - インフラのコード化支援(Ansible,Serverspec) - 数年前からプログラマー - 主にPerl, Rubyも - サイトの開発(バックエンド) - メール関連の開発 YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
4.
ニャーン 4YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
5.
子 曰 温 故 而 知 新 可 以 為 師 矣 論 語 ・ 爲 政 第 二 YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
6.
子 曰 温 故 而 知 新 可 以 為 師 矣 論 語 ・ 爲 政 第 二 YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
7.
7 /usr/sbin/sendmail YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
8.
/usr/sbin/sendmail 8 - 信頼と実績・歴史と伝統のSendmailそのもの - -rwxr-sr-x
root smmsp sendmail* - setgidされたやつ - おなじみのコマンドは全部/usr/sbin/sendmailが実体 - /usr/bin/newaliases - /usr/bin/mailq 必ずある(V8Sendmail) YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
9.
9 - /etc/alternatives/mta - Postfixと同居しているパターン多い -
/usr/sbin/alternatives(8)で切り替えられる - /usr/sbin/sendmail.sendmail - /usr/sbin/sendmail.postfix 必ずある(何かと同居) /usr/sbin/sendmail YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
10.
10 - Sendmailを駆逐したい勢力 - Sendmailが捨てられて何かに置き換わっている -
/var/qmail/bin/sendmail - /usr/bin/exim - macOS $ strings /usr/sbin/sendmail | grep postfix 必ずある(入れ替わってる?) /usr/sbin/sendmail YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
11.
11 - どれも本家の/usr/sbin/sendmailとある程度の互換性がある - my
$sendmail = '/usr/sbin/sendmail -t'; - php.ini/sendmail_path= - ; (default: "sendmail -t -i"). - CGI::FormBuilder - qw(/usr/lib/sendmail /usr/sbin/sendmail /usr/bin/send... - LWP::Protocol::mailto - qw(/usr/sbin/sendmail /usr/lib/sendmail /usr/ucblib/s... 存在する前提になってる /usr/sbin/sendmail YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
12.
12 $ hostname |
mail -s 'Nyaan' neko@nyaan.jp $ ls -laF `which mail` lrwxrwxrwx ... /usr/bin/mail -> mailx* $ strings /usr/bin/mailx | grep sendmail /usr/sbin/sendmail 存在する前提になってる /usr/sbin/sendmail YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
13.
13 無いといろいろマズい、たぶん /usr/sbin/sendmail YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
14.
14 127.0.0.1:25 YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
15.
15 25 = SMTP YAPC::Kansai
2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
16.
16 $ netstat -na
| grep LISTEN | grep -E ':(25|587)' tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp6 0 0 ::1:25 :::* LISTEN # /usr/sbin/lsof -i:25 COMMAND PID USER ... sendmail 2401 root ... localhost:smtp (LISTEN) MTAでなくても動いてる 127.0.0.1:25 YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
17.
17 # mailq -Ac /var/spool/clientmqueue
(1 request) ... v22IJrNi0022 ... Fri Mar 3 02:22 root (Deferred: Connection refused by [127.0.0.1]) neko@nyaan.jp # crontabの結果がメールで来ないとか、いろいろ困る。 動いてないとキューに溜まる 127.0.0.1:25 YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
18.
18 動いている前提になっている localhost:25 - Mail::Sendmail - 'smtp'
=> [ qw( localhost ) ], - Email::Sender - ::Transport::SMTP - has host => (..., default => sub { 'localhost' }); - Email::Send::SMTP - my $host = delete($args{Host}) || 'localhost'; YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
19.
19 To: neko@nyaan.jp ニャーン 里親になる! なまえ メール でんわ @ 送信 /usr/bin/mail* smtp.nyaan.jp:25 Sendmail, Postfix,
... ~/dead.letter Mail Queue 127.0.0.1:25 /usr/sbin/sendmail* YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
20.
20 192.0.2.222:25 YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
21.
21 別のSMTPサーバを経由する 192.0.2.222:25 - 多くのWebサーバから外へ出るメールのゲートウェイとして - ゲートウェイ? -
ウィルスチェックをするとか - 特定のFrom:なメールだけ通過させる - 野良メールはゲートウェイで捨てる - 優先度(Precedence:)別に処理するとか - 登録完了系はすぐに送信 - お知らせ系はキューに貯めて毎時0分に送信 YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
22.
22 今は外へメールが送りにくい 192.0.2.222:25 - OP25B: Outbound
Port 25 Blocking - 一般家庭の回線から外部のSMTPへ接続できない - ISPがブロックしている - 固定IPアドレスの回線なら外向きのSMTP接続も大丈夫 - SPF: Sender Policy Framework - DNSのTXTレコードで設定されている - 「**@nyaan.jpは192.0.2.222からしか送信しませんよ」 - ↑TXTに書いていないとこからのメールは「迷惑メール」行き? YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
23.
23 To: neko@nyaan.jp ニャーン 里親になる! なまえ メール でんわ @ 送信 /usr/bin/mail* smtp.nyaan.jp:25 Sendmail, Postfix,
... ~/dead.letter Mail Queue 127.0.0.1:25 /usr/sbin/sendmail* 192.0.2.222:25 YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
24.
24 smtp.gmail.com:587 YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
25.
25 587 = Submission YAPC::Kansai
2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
26.
26 SMTP認証を経てメール投函 smtp.gmail.com:587 - 587 =
Submission - <input type = 'submit' value = '送信'> - 素数 - 587番ポートは認証が必須(で設定されているのが殆ど) - OP25Bな環境では(ほぼ)唯一のメール送信方法 - ほとんどのメールサーバはSubmissionに対応している - Gmail, Office365, Yahoo!, SendGrid, Amazon SES - 会社のメールサーバとか(Sendmail, Postfix, ...) YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
27.
27 Email::Sender smtp.gmail.com:587 use Email::Sender; my $SMTP
= Email::Sender::Transport::SMTP->new( 'host' => 'smtp.gmail.com', 'port' => 587, 'sasl_username' => '*********@gmail.com', 'sasl_password' => '*************' ); YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
28.
28 Net::SMTP or Net::SMTPS smtp.gmail.com:587 use
Net::SMTP; # TLSで通信するならNet::SMTPS; use Authen::SASL; my $smtp = Net::SMTP->new('smtp.gmail.com', 'Port'=>587); my $auth = Authen::SASL->new('callback' => { 'user' => '*******@gmail.com', 'pass' => '********' }; $smtp->auth($auth); YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
29.
29 Sendmail (/etc/mail) smtp.gmail.com:587 # grep
authinfo sendmail.cf Kauthinfo hash /etc/mail/authinfo # vi authinfo Authinfo:smtp.gmail.com "U:**@gmail.com" "P:**" "M:plain" # makemap hash authinfo < authinfo # chmod 0600 ./authinfo YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
30.
30 Postfix (/etc/mail/postfix) smtp.gmail.com:587 # grep
smtp_sasl main.cf smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/authinfo # vi authinfo [smtp.gmail.com]:587 ***@gmail.com:**** # /usr/sbin/postmap authinfo # chmod 0600 ./authinfo* YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
31.
31 To: neko@nyaan.jp ニャーン 里親になる! なまえ メール でんわ @ 送信 /usr/bin/mail* smtp.nyaan.jp:25 smtp.GMail.com:587 Sendmail, Postfix,
... ~/dead.letter Mail Queue 127.0.0.1:25 /usr/sbin/sendmail* 192.0.2.222:25 #! /usr/bin/env perl use Net::SMTP; use Email::MIME; YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
32.
32 「温故」編まとめ SMTP or Submission a.
/usr/sbin/sendmailが要る - コマンドラインでも送れるし b. 127.0.0.1(localhost)の25番ポートでMTAが動いている - Net::SMTPとか使っても送れる c. 25番ポートにSMTP接続できる別サーバが要る - WebサーバでMTAが動いていない時のため d. 587番ポートで認証できるアカウントとサーバが要る - OP25Bでブロックされている時 YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
33.
子 曰 温 故 而 知 新 可 以 為 師 矣 論 語 ・ 爲 政 第 二 YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
34.
34 443 = HTTPS YAPC::Kansai
2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
35.
35 メール配信サービスのAPI HTTP API - 有名且つ大きいところ -
Amazon SES https://aws.amazon.com/jp/ses - SendGrid https://sendgrid.kke.co.jp/ - 信頼と実績・歴史と伝統のSMTPインターフェイスもある - Submission(認証して)で送る - SMTPアレルギーが無いなら楽かも、たぶん。 - HTTP(HTTPS)で送信する方が速い - 大量に送るならHTTP-APIを使う方が良い YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
36.
36 AmazonSESのモジュール HTTP API - Amazon::SES -
依存: [JSON::XS, Moo, LWP::UserAgent, ...] - Net::AWS::SES - 依存: [HTTP::Headers, LWP::UserAgent, MIME::*] YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
37.
37 SendGridのモジュール HTTP API - Mojo::SendGrid
(Mojolicious) - 2016年3月に登場した(新しい!) - Mail::SendGrid - 2011年からある - 依存: [HTTP::Tiny, IO::Socket::SSL, JSON, Moo, ...] - WebService::SendGrid - 依存: [JSON::XS, Moose, DateTime::Formt::HTTP, ...] YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
38.
38 僕? HTTP API use Furl; my
$http = Furl->new(...); my $mail = { 'to' => 'neko@nyaan.jp', 'from' => 'kijitora@example.jp', 'subject' => 'Nyaan', 'text' => Encode::encode('UTF-8', 'にゃーん'), ... }; $http->post('https://sendgrid.net/api/mail.send.json',, $mail); YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
39.
39 依存が少ないのを選んでる HTTP API - 依存が沢山あるモジュールは好みでは無い -
Perlのコアモジュールなら少しぐらいOK - 開発時間 < コードが動いている時間 - 依存は少ない方がええやんね - 極少人数開発が多いし - 依存先モジュールの変更点を追いかけるのは大変やし... YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
40.
40 To: neko@nyaan.jp ニャーン 里親になる! なまえ メール でんわ @ 送信 /usr/bin/mail* smtp.nyaan.jp:25 smtp.GMail.com:587 Sendmail, Postfix,
... ~/dead.letter Mail Queue 127.0.0.1:25 /usr/sbin/sendmail* 192.0.2.222:25 email.us-east-1...:443 sendgrid.com:443 #! /usr/bin/env perl use Furl; use Email::MIME; #! /usr/bin/env perl use Net::SMTP; use Email::MIME; YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
41.
41 SMTP or HTTP YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
42.
42 どっちが良いの? YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
43.
43 SMTPの良いところ SMTP or HTTP -
MTAが操作できるなら非常に柔軟なことができる - 手持ちのSMTP(Submission)アカウントで送信OK - Gmail, Yahoo!でなくても自前で建てたサーバ経由でもOK - そもそも昔からある汎用的な技術で枯れている! - 選択肢が多い - Sendmail, Postfix, qmail, Exim4, OpenSMTPD, Exchange, - qpsmtpd - コマンドラインから手軽に送信(mailx, telnet) YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
44.
44 HTTPの良いところ SMTP or HTTP -
MTA(SendmailやPostfixとか)が動いてなくてもOK - そもそもSMTPに関わらなくても良い - Webサイトに組み込みやすい - メールキューの監視・管理をしなくても良い - 外に出やすい(80, 443だけ外出OKとかOP25Bは無関係とか) - テンプレート機能とかメール送信以外が充実 YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
45.
45 SMTPのイマイチなところ SMTP or HTTP -
MTA(Sendmail, Postfix, ...)が必要になることが多い - Sendmailは難解と言われる - PostfixもSMTPの知識が無いと難しい - キューの管理(たくさん滞留すると大変) - 国内の携帯電話宛とか特に - DNSのことも気にせなアカン - 外出しにくい(OP25BとかSPFとか) - ロストテクノロジー YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
46.
46 HTTPのイマイチなところ SMTP or HTTP -
証明書とか面倒くさい - ちょっとテストしたいだけやのに - キューの制御ができない - 一旦エンドポイントに渡した後は何もできない - Suppressionリストが共有(Amazon SES) - 同じリージョン内でバウンスしたアドレスには送れない - 国内の携帯電話宛では厄介 - バウンス情報が少なすぎる(SendGrid) YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
47.
47 適材適所 二者択一では無い YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
48.
48 To: neko@nyaan.jp ニャーン 里親になる! なまえ メール でんわ @ 送信 /usr/bin/mail* smtp.nyaan.jp:25 smtp.GMail.com:587 Sendmail, Postfix,
... ~/dead.letter Mail Queue 127.0.0.1:25 /usr/sbin/sendmail* 192.0.2.222:25 email.us-east-1...:443 sendgrid.com:443 #! /usr/bin/env perl use Furl; use Email::MIME; #! /usr/bin/env perl use Net::SMTP; use Email::MIME; 127.0.0.1:2794 メールのヘッダと本文をJSON で書いてHTTP POST Haineko YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
49.
49 メールを送った後 YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
50.
50 バウンス処理しましょ Email Bounces - メールアドレスは水物・ナマモノ -
Perlなら良いモジュールがある! YAPC::Kansai 2017 Osaka | 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
51.
51 メールを送った後 Sisimai http://libsisimai.org/ YAPC::Kansai 2017 Osaka
| 2017/03/04(土) MOTEXさん メールフォームからメールを送る近代的な方法 @azumakuniyuki
52.
終
Télécharger maintenant