どさにっきLTE 〜2013年8月下旬〜

by やまや
<< = >>

2013年8月22日(木)

gmail の逆引き制限

_ おとといぐらいからちらほら に出てたけど、gmail が逆引きのない v6 アドレスからのメールを蹴り始めたらしい。もうめんどくさいので主張は繰り返さないけど、バカですか。

_ 各所の情報を総合すると、gmail がこの制限を入れたのは先週の金曜か土曜日あたりかららしいんだけど、その話を聞いて火曜日に ここを見にいったときには

IPv6 向けの追加のガイドライン
↑の一節はなかったはず。制限が入ったのは先週末だけど、この文言が追加されたのはきのうか今日ということ。つーか、これ「一括送信のガイドライン」なんだよねぇ。バルクではなく単発のメールを送る場合でもこの制限が適用されてるようだけど。

_ とりあえず、新しめの postfix なら smtp_address_preference = ipv4 と設定しておけば v4 を優先するようになるので回避できるとは思う。gmail 以外も v4 が優先されるようになっちゃうけど。これが使えない古い postfix では

-- master.cf
smtp4      unix  -       -       n       -       -       smtp -o inet_protocols=ipv4

-- transport
gmail.com	smtp4:
とか書いておくと、gmail 宛のみ v4 で送るようになるはず。試してないけど。これだと gmail.com には v4 で送ってもそれ以外の google apps なドメインには v6 で送ってしまうので、見つけしだい transport に追加する感じで。めんどくさかったら、main.cf に default_transport = smtp4 と書いておけば、どこに送るのも v4 のみになるはず(smtp_address_preference と違って v4「優先」ではなく、v4「のみ」)。

_ sendmail はやりかたわかんない。.mc で

CLIENT_OPTIONS(`Family=inet6, Address=::1')
とか書くと、::1 をソースアドレスとして送ろうとして失敗して v4 にフォールバックするんじゃないかな、たぶん。あるいは、filter-aaaa-on-v4 yes してる BIND に v4 で名前解決しにいくようにすれば、AAAA が返ってこなくなるので実現できるだろう。どっちにしても筋が悪すぎるけど。


2013年8月26日(月)

whitespace.sh

_ brainfuck と並ぶ変態言語のひとつ、コードを空白とタブと改行だけで記述する Whitespaceのインタプリタを 書いてみた。sh で。いくつかサンプルコードを試してみたかぎりではとりあえずどれも動く。すっげー遅いけど。ash (freebsd)、dash (debian)、bash で動作確認。特殊な機能は使っていないので、ksh でも動くと思う。たぶん。元祖 bournce sh では動かないはず。とくに難しいことはやってない。whitespace でプログラムを書くより、whitespace を実行するプログラムを書く方がずっとカンタン。だいたい半日ぐらいの作業。brainfuck に比べるとかなり、というか、bf のシンプルさに比べるとムダに複雑だが(この手のネタ言語にしては珍しく符号つき整数を扱える!)、まあそうはいっても大して大きな言語ではないので、既存の実装は一切参照せず、公式の チュートリアルに書いてあるとおりに忠実に実装。というか公式実装は haskell でまったく読めんので参考にしようがない。チュートリアルでわかりにくい部分をサンプルコードを動かしながら調整した程度。

_ 空白、タブ、改行の3種類の文字しか使わないという部分はおいておいて、なんか言語仕様おかしくね。スタックに値を push して pop して、ってのを繰り返す言語なんだけど、だったら命令の実行に必要な引数は事前に値をスタックに積んでおいて、それを pop してくればいいじゃないか。そうではなく命令の後に引数を取るものが多く、その一方で引数をスタックから拾ってくるものも多く、両者混在していてぐちゃぐちゃ。なんて見苦しい仕様。どうせ実用にならないネタ言語だからどうでもいいんだけどさ。


2013年8月30日(金)

nytimes.com 乗っ取り関連?

_ うーん。うちに来てたクエリのログ (*1)を眺めてたら、

Aug 28 18:12:52 <daemon.info> eel nsd[94215]: client 72.13.58.93: query nytimes.com./IN/A +
こんなのを見つけてしまったんだけど、なんだべこれ。 New York Times が乗っとられた件に関連してるんじゃないかと思うけど、でも、それに関連したクエリをうちのサーバに投げてくる理由がわからん。

_ 28日18時というと、時系列的には書き換えられてしまった情報はすでに戻されて何時間か経った後だが、キャッシュはまだ残っている可能性がある時刻のようだ。聞いてきた IP アドレスは nsdb.verisignlabs.com になるんで、乗っ取られた情報をキャッシュしたままじゃないか調査してまわってたのかなー、というのがもっともありそうな推測ではあるんだけれど。UDP クエリなので IP アドレスが詐称されている可能性もなくはないけど、詐称ではなくほんとに verisignlabs による調査なのだとしたら、インシデント発生から調査実施に至るまでフットワークが軽すぎるよな。すげぇ。53番が開いている IP アドレスのリストと、そのリストに対してクエリを投げるプログラムがすでに存在していて、好きなパラメータでいつでも発動できるようになってるんだろうなー、たぶん。


(*1): NSD に パッチを当てたもの。

ロリポ wordpress 攻撃事件

_ もひとつセキュリティインシデント。言いたいことがないではないけど、他の人がさんざん言いつくしてるのでまあいいや。

_ 一点だけ。GMO 傘下のレン鯖屋さんって、サービス内容が似通ったものがひじょーに多いので、実はブランドが違うだけで内部構成はほとんど同じなんじゃないかと想像してるんだけどどうなんですかね。つまり、今回攻撃を食らったのはロリポだったようだけど、ロリポ以外でもGMO 傘下の共用レン鯖サービスを提供してるところでは同じ攻撃を受ける可能性があるんじゃないですかね。ちゃんと対策してんのかね。

_ どうでもいいけど、このロリポップって、lollipop (いわゆるペロペロキャンディのこと)じゃなくて、l がひとつ少ない lolipop だったのね。さっきはじめて気がついた。


2013年8月31日(土)

befunge.sh

_ 8月いっぱい締切で書いてくれと言われていた作文がまだ終わってないが、現実逃避は得意だぞ。

_ ということで、 whitespaceに続いて、 befungeのインタプリタも sh で書いてみたここにあるサンプルは、スタックが空になっているときに値を pop しても、エラーにならずに 0 が返ってくることを想定してるものが多いんだが…。そういう仕様なの? 探してみたかぎりではそう動くべし的な記述は見つからなかったんだけど、そう動かないとコケるサンプルがが多いからそうなんだろうなぁ。とりあえずある程度は対応しておいたけど、完全ではないのでコケたりするかも。

_ befunge って、brainfuck や whitespace に比べるとマイナーだけどおもしろいよね。たいていのプログラム言語はふつーソースコードを上から下に順番に解釈・実行するけど、befunge にそういう縛りはない。上下左右に動く。 wikipediaにあった hello world の例。

v @_       v
>0"!dlroW"v
v  :#     <
>" ,olleH" v
   ^       <
<>v^ が進行方向を変える命令。スタートは左上隅から右方向だけど、この例ではいきなり v で下方向に動く。そこから方向転換の <>v^ と空白(nop)を除いた文字を順番に拾っていくと、0"!dlroW"#:" ,olleH",:!_ となる。全部説明するとアレなのでかいつまむと、"..." が文字列、, が1文字出力。そして最後の _ は条件分岐で、スタックの先頭が 0 かどうかで進行方向が左右のどちらかに分岐する。これにより、まだスタックに文字が残っていれば右に動いて文字列の出力を続け、文字列を最後まで出力していたら左に動いて @ (プログラム終了)を実行するという動作になる。ちなみに左右分岐だけでなく、上下分岐もあるが、ジャンプやサブルーチンといった概念はない。

_ 上の hello のサンプルは文字列に含まれる , や ! を別の意味の命令にも使うというトリッキーなことをしているけど、そういうことをしなければ箱を矢印でつないだフローチャートをそのままコードに落としこむようなイメージで書けるので、発想は独特だけどそれほど難しくはなさげな気がする。

_ ちうことで、FizzBuzz を書いてみた。fizz と buzz の文字列がコード上で読みやすく配置されるようにがんばってみた。

0        >1+    v v   .:<
>>:55*4*-| v      < >:5%|
^,*25<<  @#<    >:3%|
      |%5:,,,,"Fizz"<
     ^    ,,,,"Buzz"    <
      >                 ^
…理屈としてわかっていても、処理の流れが交差しないようにうまく二次元上にコードを配置するのがめんどくさすぎる。誰だ難しくなさげとか言った奴は(←自分だ)。


<< = >>
やまや