なんでも掲示板
[◆投稿フォームへ][◆発言検索][◆トップページへ]このページは過去の遺産として残してあるものです。書き込みはできません(書き込むと自動的にブラックリストに登録され、以後のアクセスができなくなります)。
[1098] Re: direct SMTP from perl (元の記事) |
Name: べるりん |
Date: 2004/11/13 00:51:22 |
Host: rei.ipv6.magisystem.net (2001:380:1c6:1:203:93ff:fee8:a88a) |
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.5) Gecko/20041111 Camino/0.8+ |
> > うちのメーリングリスト配信プログラムを改良して、sendmailを経由しないで > > 直にMXを参照して送信するようにしたいと思っています。 ありがとうございます。 Net::SMTP使うと結構簡単なんですね。 (今まで IO::Socketしか使ったことがなかった) この Net::DNS::Resolver でMXを取得し、そのMXに対して Net::SMTP->new を実行し、データをたれ流せばいいのですね。 これから試してみたいと思います。(笑) |
[1097] Re: direct SMTP from perl (元の記事) |
Name: MIRA |
Date: 2004/11/12 16:28:39 |
Host: esanet.c.u-tokyo.ac.jp (157.82.63.79) |
User-Agent: Mozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.7.2) Gecko/20040820 |
> うちのメーリングリスト配信プログラムを改良して、sendmailを経由しないで > 直にMXを参照して送信するようにしたいと思っています。 ちょっと勘違いしていました。MXを引くには use Net::DNS; my $res = new Net::DNS::Resolver; my @mx = mx($res, $domainname); my @mailservers; if(@mx){ my $preference = ''; my $i = 0; foreach my $rr (@mx) { if($preference == $rr->preference){ $i++; } else { $i = 0; } $preference = $rr->preference; $mailservers[$rr->preference][$i] = $rr->exchange; } } else { $mailservers[0][0] = $domainname; } みたいにやって、@mailserversのホストへ接続することになります。 MXが複数あれば、timeoutした時などに順次MXへ接続するようにし ます。あと、同じホスト名で複数のIPアドレスを持つ場合もあるの で、そういう改造もしておくとよいかも。 |
[1096] Re: direct SMTP from perl (元の記事) |
Name: MIRA |
Date: 2004/11/12 11:42:21 |
Host: esanet.c.u-tokyo.ac.jp (157.82.63.79) |
User-Agent: Mozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.7.2) Gecko/20040820 |
> うちのメーリングリスト配信プログラムを改良して、sendmailを経由しないで > 直にMXを参照して送信するようにしたいと思っています。 > > そこで前にMIRAさんが言っていた perl から直接port 25を叩いてメールを送信する > スクリプト(モジュール?)のソースコードを参考にしたいな、と思っているんですが、 > よかったら公開していただけませんか? IO::Socketを使ったものもあるのですがたぶん素直にNet::SMTP 使ったほうが楽です。私は下記のようにしてます。 Print_ERROR()はなんか適当に作って下さい。 IO::Socketを使うほうは my $smtp = IO::Socket::INET->new(PeerAddr => 'localhost',PeerPort => 25,Pro to => 'tcp'); でport 25を叩いてあとはひたすらSMTPのコマンドを打ち、コマ ンドに対する相手メールサーバからの応答を調べて、250以外な らエラーにするとかいろいろあって大変です。 ちなみに下記のコードでは明示的にlocalhostのメールサーバを 使用していますが、Net::DNSモジュールを使って直接相手さきの MXレコードを引いてlocalなsendmailを一切使用しないものも作れ ると思います。timeout処理とか大変ですが。 sub Sendmail { use Net::SMTP; my $from = $_[0]; my $fromstr = $_[1]; my $to = $_[2]; my $subject = $_[3]; my $message = $_[4]; $subject = Jcode->new(Jcode->new($subject)->jis)->mime_encode; $fromstr = Jcode->new(Jcode->new($fromstr)->jis)->mime_encode; $message = Jcode->new($message)->jis; my $message2=<<MESS; From: $fromstr <$from> To: $to Subject: $subject X-Sender-IP: $ENV{'REMOTE_ADDR'} Reply-To: $from Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit $message MESS my $smtp = Net::SMTP->new("localhost"); if($smtp){ if(!$smtp->mail($from)) { $smtp->quit; &Print_ERROR("メール送信に失敗しました。"); } if(!$smtp->to($to)) { $smtp->quit; &Print_ERROR("メール送信に失敗しました。"); } if(!$smtp->data()){ $smtp->quit; &Print_ERROR("メール送信に失敗しました。"); } if(!$smtp->datasend($message2)){ $smtp->quit; &Print_ERROR("メール送信に失敗しました。"); } $smtp->quit; } else{ &Print_ERROR("メール送信に失敗しました。"); } } |
[1095] direct SMTP from perl |
Name: べるりん |
Date: 2004/11/11 22:40:13 |
Host: rei.ipv6.magisystem.net (2001:380:1c6:1:203:93ff:fee8:a88a) |
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.5) Gecko/20041111 Camino/0.8+ |
うちのメーリングリスト配信プログラムを改良して、sendmailを経由しないで 直にMXを参照して送信するようにしたいと思っています。 そこで前にMIRAさんが言っていた perl から直接port 25を叩いてメールを送信する スクリプト(モジュール?)のソースコードを参考にしたいな、と思っているんですが、 よかったら公開していただけませんか? # メールで送ってもらってもいいです。 |
[1094] Re: snapshot (元の記事) |
Name: MIRA |
Date: 2004/11/11 14:38:25 |
Host: esanet.c.u-tokyo.ac.jp (157.82.63.79) |
User-Agent: Mozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.7.2) Gecko/20040820 |
http://www.cetus-net.org/ftp/NetBSD/snapshot/alpha/20041104-2.99.10/ > > ただし、これは-mcpu=21164aつきでコンパイルしているので、動かない > 機種があると思います。 どうも一部のコマンドの挙動がおかしいので、-mcpuを外して作り直しました。 http://www.cetus-net.org/ftp/NetBSD/snapshot/alpha/20041109-2.99.10/ |
[1093] Re: snapshot (元の記事) |
Name: MIRA |
Date: 2004/11/07 00:10:46 |
Host: mira.cetus-net.org (3ffe:501:1866:0:2d0:b7ff:fe13:d236) |
User-Agent: Mozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.7.3) Gecko/20041010 |
> NetBSD/i386とsparcのsnapshot(2.99.10)を作ってみました。 > > http://www.cetus-net.org/ftp/NetBSD/snapshot/i386/20041101-2.99.10/ > http://www.cetus-net.org/ftp/NetBSD/snapshot/sparc/20041102-2.99.10/ Alpha CPU用のsnapshotも作ってみました。 http://www.cetus-net.org/ftp/NetBSD/snapshot/alpha/20041104-2.99.10/ ただし、これは-mcpu=21164aつきでコンパイルしているので、動かない 機種があると思います。 |
[1092] snapshot |
Name: MIRA |
Date: 2004/11/05 12:28:17 |
Host: esanet.c.u-tokyo.ac.jp (157.82.63.79) |
User-Agent: Mozilla/5.0 (X11; U; NetBSD i386; en-US; rv:1.7.2) Gecko/20040820 |
NetBSD/i386とsparcのsnapshot(2.99.10)を作ってみました。 http://www.cetus-net.org/ftp/NetBSD/snapshot/i386/20041101-2.99.10/ http://www.cetus-net.org/ftp/NetBSD/snapshot/sparc/20041102-2.99.10/ |
[1091] RAIDframe |
Name: MIRA |
Date: 2004/10/25 20:10:18 |
Host: mira.cetus-net.org (3ffe:501:1866:0:2d0:b7ff:fe13:d236) |
User-Agent: w3m/0.5 |
1ヶ月ほど前に新しい天文用の冷却CCDを入手して暇さえあれば観測データを 取得していますが、多い時に一晩2GBくらいのデータになるので、バックアップ 手段を考えないとなぁと思っています。 USB接続の外付けHDDを2台買ってRAIDframeでRAID1にでもしようかと思ってます が、umassにつけたSCSIデバイスの番号ってどういう順序でつくものなんでしょ うか?やはり検出された順なのかな? 例えば最初sd0とsd1でRAID組んでいて、再起動した時にsd0とsd1が入れ替わって たりするとあまりよくないような気がするのです。 # まぁUSBでRAIDなんて組まないほうがよいのかもしれませんが。 |
[1090] Re: 困るホストといえば… (元の記事) |
Name: べるりん |
Date: 2004/10/23 00:47:36 |
Host: rei.ipv6.magisystem.net (2001:380:1c6:1:203:93ff:fee8:a88a) |
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.4) Gecko/20041021 Camino/0.8+ |
> http://www.magisystem.net:8080/misc/others/ip_filter.pl よくよく見てみたらリストの最後が必ずしも allocated とは限らないみたい。 (allocated|assigned)に直して下さい。 |
[1089] 困るホストといえば… |
Name: べるりん |
Date: 2004/10/19 01:00:55 |
Host: rei.ipv6.magisystem.net (2001:380:1c6:1:203:93ff:fee8:a88a) |
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.4) Gecko/20041009 Camino/0.8+ |
こんなリストを発見しました。 http://ftp.apnic.net/stats/apnic/delegated-apnic-latest http://ftp.apnic.net/stats/lacnic/delegated-lacnic-latest これを元にまとめて hosts.allow で deny するスクリプトを作成。 http://www.magisystem.net:8080/misc/others/ip_filter.pl なかなかいいかも。 # 例の変わったPTRレコードの持ち主は、私もipfilterで弾いています。(笑) # logを見る限り、まだちょくちょく来てるみたいですね。 |