タグ

ブックマーク / blog.tmtms.net (68)

  • Postfix 3.1 の新機能 / JSON形式キュー表示と配送流量制御 - tmtms のメモ

    Postfix 3.1 がリリースされました。 個人的に気になった新機能は JSON-format Postfix queue listing. Destination-independent delivery rate delay の2つです。 JSON形式キュー表示 今までは mailq や postqueue -p コマンドで次のような表示がされていました。 ~% postqueue -p -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 8A9AE6EF 275 Sun Mar 6 23:47:06 sender@example.com (deferred transport) rcpt1@example.net rcpt2@example.net 94AC010A! 298 Sun Mar 6 23

    Postfix 3.1 の新機能 / JSON形式キュー表示と配送流量制御 - tmtms のメモ
    stealthinu
    stealthinu 2016/03/07
    JSON形式でキューの情報取れるようになったのと配送時に一通毎の送信間隔を指定できる。携帯キャリア宛とかで一気に大量に流すと拒否られるのでそういうのを指定しておくとプログラム側で制御しなくてよくなりそう。
  • 文字化けメールその2 - tmtms のメモ

    スパムメール…というかフィッシングメールが送られてきたのですが、文字化けしていました。 文字化けメール研究家としては(ry メーラーで見ると Subject と文が次のようになっていました。 From: 【りそな_y行】 <mp@resona-gr.co.jp> Subject: 人_J_^サ_`ビス 文字化けとしてはちょっと珍しい感じでなので、ソースを見てみます。 From: =?GB2312?B?ob6k6qS9pMrjedDQob8=?= <mp@resona-gr.co.jp> Subject: =?GB2312?B?sb7Iy9VK1F6ltalgpdOluQ==?= これを素直にデコードすると、「【りそな〓y行】」「人〓J〓^サ〓`ビス」となります。「〓」は変換に失敗した部分です。 charset が GB2312 となっています。GB2312 は中国で使われている文字エ

    文字化けメールその2 - tmtms のメモ
    stealthinu
    stealthinu 2016/02/22
    中国産のスパムは文字エンコーディング指定がGB2312と言いつつ実はGBKであることが一般的のため化けてしまうという例。これは知らんかった。
  • 文字化けメール - tmtms のメモ

    DELL にユーザー登録したらメールが送られてきたんですが、そのメールが文字化けしてました。 文字化けメール研究家としては解析せざるを得ません。 メーラーで見ると Subject が次のようになっていました。 デルアカウントに$4EPO?$$$?$@$-!"$"$j$,$H$&$4$6$$$^$9! メールのソースを見ると次のようになっていました。 Subject: =?iso-2022-jp?Q?=1B=24B=25G=25k=25=22=25=2B=25=26=25s=25H=24K?= =?iso-2022-jp?Q?=244EPO=3F=24=24=24=3F=24=40=24=2D=21=22=24=22=24j=24?= =?iso-2022-jp?Q?=2C=24H=24=26=244=246=24=24=24=5E=249=1B=28B=21?= この Subject の

    文字化けメール - tmtms のメモ
    stealthinu
    stealthinu 2016/02/22
    複数行ヘッダになる場合の分割処理が甘い例。こういうのって昔のほうがちゃんと処理されてた気がする。今やこの手の知識というか技術は継承されずに適当に処理されてしまい問題が起きやすくなってるのでは。
  • MIMEヘッダエンコーディングは複雑すぎてつらい - tmtms のメモ

    これは NSEG Advent Calender の7日目の記事です(内容は NSEG とも長野とも関係ありませんが…)。 www.adventar.org メールの送信者(From)や件名(Subject)は来ASCII(の一部の文字)しか書くことができないんですが、MIME(RFC2047)の登場によって日語等の非ASCII文字を記述することができるようになりました。 とは言ってもメールアプリから見て日語が表示できているだけで、内部的にはASCII文字にエンコードされています。MIMEヘッダエンコーディングと呼ばれています。 たとえば、「日語」という文字列は =?utf-8?b?5pel5pys6Kqe?= や =?iso-2022-jp?b?GyRCRnxLXDhsGyhC?= に変換されています。 この処理が実は非常に複雑で、正しくエンコードされてない場合がかなりあります。

    MIMEヘッダエンコーディングは複雑すぎてつらい - tmtms のメモ
    stealthinu
    stealthinu 2015/12/08
    『MIMEヘッダエンコーディングは複雑でつらい』subjectをutf-8エンコードって一般的になってきてるのかな?
  • 「理論から学ぶデータベース実践入門」読書会スペシャルを開催しました #nseg - tmtms のメモ

    理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL (WEB+DB PRESS plus) 作者:奥野 幹也発売日: 2015/03/10メディア: 単行(ソフトカバー) 11/28 に NSEG 第69回勉強会として「理論から学ぶデータベース実践入門」読書会スペシャルを開催しました。 nseg.doorkeeper.jp NSEG の Wiki。 5月から隔週で水曜日の18:30〜20:00に読書会を開催していたのですが、そろそろ終わりに近付いてきたので、特別ゲストとして著者の奥野さんをお招きして、ほぼ最終回スペシャルとして開催しました。 会場はいつもの読書会でも使用させていただいてるギークラボ長野さんでした。 なかなか参加者数が伸びずに心配したのですが、最終的には参加者数22人でした。 地方開催らしく当日ドタキャンは0人でした。長野県外からの参加者も5名いら

    「理論から学ぶデータベース実践入門」読書会スペシャルを開催しました #nseg - tmtms のメモ
    stealthinu
    stealthinu 2015/12/03
    ほんと良い勉強会でした。自分のやつは商用の特定CMSをdisる内容なのでさすがにちょっと資料公開するのはどうかと思って。すみませんです。
  • Software Design 9月号の特集の記事を書きました - tmtms のメモ

    Software Design 9月号の特集の記事を書きました。もう三週間も前に発売になってますが…。 ソフトウェアデザイン 2015年 09 月号 [雑誌] 出版社/メーカー: 技術評論社発売日: 2015/08/18メディア: 雑誌この商品を含むブログ (3件) を見る 第1特集「正規表現・SQL・オブジェクト指向 苦手克服のベストプラクティス」の正規表現の記事と、第2特集「メールシステムの教科書」の第1章と第2章を書きました。第2特集の第4章は NSEG 仲間の佐藤さんが書いてます。 正規表現もメールも基的なことしか書いてませんが、何か参考になれば幸いです。 ところで正規表現の記事の方には誤りがあります。 p.27〜28 誤 任意の50文字のあとに文字列末尾があるような位置に適合します。つまりこの位置以降の文字数が50文字であることを指定できるのです。 正 任意の5〜10文字のあと

    Software Design 9月号の特集の記事を書きました - tmtms のメモ
    stealthinu
    stealthinu 2015/09/09
    とみたさんと一緒に書かせていただいたSDの記事について。と言っても自分は4章のとこをちょこっと手伝わせていただいただけだけど。とみたさんは3本分も書いててパねえ。
  • Postfix で独自のルックアップテーブルを作る - tmtms のメモ

    Postfix 3.0 から導入された動的データベースプラグイン機構を使用して、独自のルックアップテーブルを作ってみます。 Postfix を次のようにしてインストールしてあります。 重要なのは dynamicmaps=yes なので、これさえあれば他のパラメータ指定はなんでもいいです。 % make makefiles dynamicmaps=yes\ command_directory=/usr/local/postfix/sbin\ config_directory=/usr/local/postfix/etc\ default_database_type=hash\ daemon_directory=/usr/local/postfix/libexec\ data_directory=/var/local/postfix/lib\ html_directory=no\ mail_s

    stealthinu
    stealthinu 2015/02/16
    postfixの動的データベースプラグインのサンプル。結構簡単に使える。
  • Postfix から MySQL を使う - tmtms のメモ

    これは Postfix Advent Calendar 2014 の15日めの記事です。 ルックアップテーブル Postfix のルックアップテーブルは Linux だと通常は hash 形式のファイルですが、ファイルの代わりに MySQL, PostgreSQL, LDAP 等を参照することができます。 どの形式が使えるかは postconf -m コマンドで使用できる形式の一覧を見ることができます。Ubuntu だと次のようになってます。 % postconf -m btree cidr environ fail hash internal memcache nis proxy regexp sdbm socketmap sqlite static tcp texthash unix Ubuntu では deb で対応形式を追加できるようになっています。 % sudo apt-get

    stealthinu
    stealthinu 2014/12/15
    『charset を指定することができません。接続用の charset がカラムの charset と異なる場合、クエリがエラーになることがあります。』なんと。イントラ向けとかで日本語渡す必要ある環境の時は注意だな。
  • 7bit と 8bit の狭間で - tmtms のメモ

    これは Postfix Advent Calendar 2014 の6日目の記事です。 その昔、電子メールは 7bit データでした。 日語は ASCII の範囲におさまらないのですが、ISO-2022-JP*1にエンコードすることで 7bit になるので、日語でメールする人たちはそのようにしてました。今でも日語を扱うメールアプリのデフォルトのエンコーディングは ISO-2022-JP になってることが多いと思います。 ただしヘッダの From や To フィールドには規格上 ISO-2022-JP は書けないので、メールアドレスの表示名には日語は使えませんでした。 余談ですが、メール文の冒頭で自分の名前を名乗る日の風習は From に日語で名前が書けなかったためじゃないかと、個人的に妄想してます。 バイナリデータは uuencode 等でテキストに変換して、メール文に貼り

    stealthinu
    stealthinu 2014/12/08
    えっ?相手が対応してれば Content-Transfer-Encoding: 8bit つけたら8bitでメール送っても良いんだ。知らんかった…
  • Postfix の拡張メールアドレス - tmtms のメモ

    これは Postfix Advent Calendar 2014 の4日目の記事です。 Postfix では拡張メールアドレスを使うことができます。 tmtms@example.com というメールアドレスがあった場合、tmtms+ext@example.com というメールアドレスも自動的に有効になります。ext 部分はなんでも構いません。 サービス毎に異なるメールアドレスを登録したい場合にいちいち aliases 等でメールアドレスを新たに作成する必要はありません。 Gmail でも使えるようですが自分は Gmail 使ってないので詳しくは知りません。元々の発祥は qmail だと思います。 [追記] どうやら qmail 以前に Sendmail でも使えたようです。 拡張メールアドレスを使うには、recipient_delimiter パラメータに区切り文字を設定します。 上のよう

    stealthinu
    stealthinu 2014/12/04
    『Postfix 2.11 から recipient_delimiter に複数文字を登録できる』おおお!そんな細かな機能拡張が。
  • Postfix の main.cf のフォーマットについて - tmtms のメモ

    これは Postfix Advent Calendar 2014 の2日目の記事です。 Postfix が登場する以前、MTA と言えば Sendmail でした。Sendmail の設定ファイル sendmail.cf は人間が読むことも書くことも難しくて、設定ファイルを簡単に書くためのツールがいくつかあるくらいでした。それに比べたら Postfix の設定ファイルはかなり簡単です。 Postfix の重要な設定ファイルは主に2つあります。master.cf と main.cf です。 今回は main.cf のフォーマットについて詳しく書いてみます。 基形式 基は次の形式です。簡単です。 パラメータ名 = 値 「=」の前後の空白はあってもなくても構いません。また行末の空白文字は無視されます。 コメント 「#」で始まる行はコメントです。 # コメント 「#」は必ず行頭になければなりま

    Postfix の main.cf のフォーマットについて - tmtms のメモ
    stealthinu
    stealthinu 2014/12/02
    ほええ、ユーザー定義パラメータなんてあるんだ。存在しないパラメータは勝手に使ってどっかで参照させることが出来るのね。知らんかったから使ったことなかった。
  • Postfixのパラメータ - tmtms のメモ

    Postfix 2.9 がリリースされたころに「Postfixのパラメータ」という記事を書きましたが、それ以降の変更について書いてみます。 新しいパラメータ、全然しらない…。 Postfix 2.9.11 パラメータ数 701 Postfix 2.10.5 パラメータ数 709 追加 postscreen_upstream_proxy_protocol postscreen_upstream_proxy_timeout process_id process_name smtpd_log_access_permit_actions smtpd_relay_restrictions smtpd_upstream_proxy_protocol smtpd_upstream_proxy_timeout 変更 proxy_read_maps デフォルト値に $smtpd_sender_login_m

    Postfixのパラメータ - tmtms のメモ
    stealthinu
    stealthinu 2014/10/30
    最近ぜんぜんPostfix追ってなかったから参考になった。TLSがらみが多い。
  • メールアドレスの正規表現 - tmtms のメモ

    たまにメールアドレスの形式を正規表現で表すのは不可能とかというのを目にするのですが、そんなことはありません。入れ子がなければたいていの文字列の形式は正規表現で表すことができます。 ということで、RFC5321, 5322 からメールアドレスの正規表現を書いてみました。 /\A([0-9a-z!\#$%&'*+\-\/=?^_`{|}~]+(\.[0-9a-z!\#$%&'*+\-\/=?^_`{|}~]+)*|\"([\x20\x21\x23-\x5b\x5d-\x7e]|\\[\x20-\x7e])*\")@[0-9a-z]([0-9a-z-]*[0-9a-z])?(\.[0-9a-z]([0-9a-z-]*[0-9a-z])?)*\z/i ちょっと長いですけど、最近の Ruby だと (?<hoge>) と \g<hoge> を使うことで、同じ正規表現の繰り返しを簡単に書くことができる

    メールアドレスの正規表現 - tmtms のメモ
    stealthinu
    stealthinu 2014/09/09
    正規表現Tシャツ誕生の瞬間に立ち会えるとは!
  • Dockerイメージを作る (NSEG#54) - @tmtms のメモ

    NSEGの第54回勉強会で「Dockerイメージを作る」という発表をしました。 Dockerイメージを作る (SlideShare にもアップロードしました) スライドにも書きましたが、前回以降にやったことの自分用のまとめみたいな感じで、世間的に目新しい話題は特に無いです。 今回も会場はケイケンさんの会議室でした。前の日まで参加申し込み5人だったのですが、当日の参加者は10人でした。 他の人の発表 @hiro345さんの Frontend framework and Template 先週末の HTML5時代のフロントエンド開発入門でも思ったんですけど、最近のフロントまわりの技術にはさっぱりついていけてなくて良くないです。 @earth2001yさんの「昨日、ぺちゃくちゃで NSEG を喋りました」 定期的に開催されている ぺちゃくちゃないとNAGANOの話。 ぺちゃくちゃないとNAGAN

    Dockerイメージを作る (NSEG#54) - @tmtms のメモ
    stealthinu
    stealthinu 2014/09/03
    とみたさんのDockerイメージを作るの件、プライベートのレジストリサーバを立てて管理するとことか参考になる。
  • Gitで最初のコミットをどうにかする - tmtms のメモ

    最初のコミットの内容を変更したい Gitで最初のコミットの内容を変更したいと思って git rebase -i <最初のコミット> とやっても、最初のコミットは出てきません。 % git log --oneline 4f4f42c 二番目のコミット 9d4876c 最初のコミット % git rebase -i 9d4876c pick 4f4f42c 二番目のコミット このような場合は git rebase -i --root を指定すると良いようです。 % git rebase -i --root pick 9d4876c 最初のコミット pick 4f4f42c 二番目のコミット 最初のコミットの前に別のコミットを入れたい さっきと同様に git rebase -i --root で開いて、最初のコミットを edit にします。 % git rebase -i --root edit

    Gitで最初のコミットをどうにかする - tmtms のメモ
    stealthinu
    stealthinu 2014/05/29
    最初のコミット内容を変更したり最初のコミットの前にコミット突っ込んだりしたいとか、最初のコミットがらみの操作方法。
  • 「文字化けに関するトラブルシューティング」 - tmtms のメモ

    ちょっと前の話ですが、こんなツイートを見かけました。 「『PDF ファイルが開かない場合の対処方法』という PDF ファイル 」pic.twitter.com/f4wixbH97r を見て、とっさに「文字化けに関するトラブルシューティング」を思い出した。 pic.twitter.com/vvbRWOoDT0— suno (すの) (@suno88) February 16, 2014 職業柄文字化けデータを見ると復元せずにはいられないので、文字化けデータを私に見せるのはやめて欲しいです。 文字化け業界に長くいると、経験上パッと見てなんで文字化けしたのかだいたいわかるようになります。 今回のは、来 EUC-JP なのにシフトJISとして表示しちゃってる感じです。 半角カナが多い場合はだいたいこのパターンです。 % ruby -e 'puts "日語にほんごニホンゴ".encode("EU

    「文字化けに関するトラブルシューティング」 - tmtms のメモ
    stealthinu
    stealthinu 2014/05/26
    『職業柄文字化けデータを見ると復元せずにはいられないので、文字化けデータを私に見せるのはやめて欲しいです』ネタとしても面白いけど文字化けパターンから文字化け理由判定方法が参考になる。
  • Postfix のデーモン - tmtms のメモ

    Postfix の master から起動されるデーモンの動きについて調べてみました。 Postfix は smtpd, qmgr, cleanup 等の複数のデーモンが連携して動作しています。 すべてのデーモンは master から起動されますが、master は各デーモンの起動と監視をしているだけで、master 自身はメールの配送には絡んでません。デーモン起動後は各デーモン同士が連携してメール配送を行います。 実際、メール配送に関係ないデーモンを master から起動しても何の問題もありません。 master は master.cf の記述に従って、TCP ソケットまたは UNIX ドメインソケットでクライアントからの接続を待ち受けます。クライアントから接続の要求があると、デーモンを起動し、接続以降の処理は基的に起動したデーモンに任せます。 しかし master から起動されるデ

    Postfix のデーモン - tmtms のメモ
    stealthinu
    stealthinu 2014/01/31
    postfixのmasterの仕組みとmasterから呼び出されるデーモンの作り方。masterってそういうものだったのか。だからmaster.cfとmain.cfとにわかれてるのね。そんなことも理解してなかったよ… orz
  • OSS貢献者賞を頂いたので昔話をします - tmtms のメモ

    この記事は、おっさんの自分語りと昔話なので、あまり読む価値はないです。 もう1ヶ月くらい前になるのですが、OSS貢献者賞を頂きました。 最近はあまりOSSに貢献するようなことをしてる自覚はなかったので、なぜ自分が候補にあがったのか謎でした。OSS貢献者賞のページによると、 影響力のある開発プロジェクトを創造、運営した開発者やグローバルプロジェクトにおいて活躍する卓越した開発者及び普及に貢献した方を表彰するもの ということらしいです。創造や運営してないし、たぶん卓越した開発者でもないので、「普及に貢献した」だろうと思い、じゃあ最近のことじゃなくて過去の実績が評価されってことならいいかと、受賞させていただくことにしました。 ちゃんとした受賞理由は発表のページに載るまで知らされてなかったのですが、予想通り MySQL 関係でした。 MySQLの初期の日語化パッチを作成し、国内での普及に大きく貢

    OSS貢献者賞を頂いたので昔話をします - tmtms のメモ
    stealthinu
    stealthinu 2013/03/27
    とみたさんのMySQLやRubyとの関わりの経緯と歴史。文章からもとみたさんの飄々とした雰囲気が伝わってくるなあ。
  • Ubuntu 12.10 で core ファイルが作成されない - tmtms のメモ

    Ubuntu 12.10 でプログラムを走らせた時に segmentation fault と出力されるのに core ファイルが作成されませんでした。 ulimit -a コマンドで見てみると、 -c: core file size (blocks) 0 となっていて core ファイルのサイズの上限が 0 = core ファイルを作成しないようになっていたので、ulimit -c unlimited コマンドで core ファイルの上限を撤廃しました。 -c: core file size (blocks) unlimited そこでもう一度プログラムを走らせてみたところ、segmentation fault (core dumped) となり core ファイルを作成したようなメッセージなのですが、実際には作成されていません。 core(5) を見てみると、/proc/sys/ker

    Ubuntu 12.10 で core ファイルが作成されない - tmtms のメモ
    stealthinu
    stealthinu 2013/01/04
    Ubuntu12でcoreファイルがうまく吐かれないようになっちゃってるとのこと
  • Rubyのエンコーディングその2 - tmtms のメモ

    この前「Rubyのエンコーディング」という記事を書いたのですが、それをネタに 8/25 の NSEG で発表しました。 Rubyのエンコーディング from Masahiro Tomita この中で、エンコーディングが原因で予期しないところで落ちてしまうことが結構あるという話もしたんですが、今回はプログラムが落ちないようにするにはどうすればいいかを考えてみます。 エンコーディングが原因で落ちてしまうのは大体次のパターンのようです。 文字列や正規表現のエンコーディングが異なる 文字列中に不正な文字が含まれている 文字列や正規表現のエンコーディングが異なる 正規表現をリテラルで生成していれば、エンコーディングは敢えて指定しない限りは普通はスクリプトエンコーディングになってると思うので、問題は文字列の方です。 特にファイルから読み込んだ文字列のエンコーディングが何になっているかに注意しましょう。

    Rubyのエンコーディングその2 - tmtms のメモ
    stealthinu
    stealthinu 2012/09/03
    とみたさんのRubyエンコーディング回りの話続き。