なんでも掲示板

[◆投稿フォームへ][◆発言検索][◆トップページへ]

このページは過去の遺産として残してあるものです。書き込みはできません(書き込むと自動的にブラックリストに登録され、以後のアクセスができなくなります)。


[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を見る限り、まだちょくちょく来てるみたいですね。

Message ID: Password:
$Id: sqlbbs.php,v 1.8 2004/02/21 06:38:02 mira Exp $