アーカイブ » シンプル・アイ社長

Postfixで特定の送信元アドレス、送信先アドレスのキューを一括削除する

Written in 2013年10月03日 by | コメントする( 0件 )

mailq を実行すると、

-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------

CFC83527CBDA*     851 Thu Oct  3 11:06:56  foo@hogehoge.jp
(delivery temporarily suspended: host smtp.hogehoge.jp[111.222.111.222] refused to talk to me: ・・・・)
recipient1@fugafuga.com
recipient2@foofoo.com
recipient3@barbar.com

のようにキューがリストされる。(上記は一件のみ)

この場合、送信元アドレスはfoo@hogehoge.jpであり、送信先は、recipient1@fugafuga.com、recipient2@foofoo.com、recipient3@barbar.comである。これらの情報を参照し、それを条件としてQueue IDを引っ張ってきて、postsuper –d に渡せばキューを消せる。

そのためのシェルはman postsuperに載っているものを参考にできる。

送信元アドレスを条件にしてキューIDをリストする場合

mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $7 == "foo@hogehoge.jp" ) print $1 }'

送信先アドレスを条件にしてキューIDをリストする場合

mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $8 == “recipient1@fugafuga.com” || $9 == “recipient1@fugafuga.com” ) print $1 }'

のようにする。$8以降が送信先アドレスである。

特定のドメインのアドレス、という条件にする場合は正規表現を使う。

mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $7 ~ "hogehoge.jp" ) print $1 }'

ここで得られるキューIDには*や!がついていたりするので、それを外すため、パイプを追加する。

| tr -d '*!'

そして、これをpostsuper –dに渡す。

| postsuper -d -

完成したシェルは以下の通り。

mailq | tail -n '+2'  | grep -v '^ *(' | awk 'BEGIN { RS = "" } { if ( $7 ~ "hogehoge.jp" ) print $1 }' | tr -d '*!' | postsuper -d -

これで一括削除ができる。

丸太運んで骨折

Written in 2013年05月27日 by | コメントする( 0件 )

指骨折(横から)指骨折(正面から)

先の土曜日、切り倒した桜の幹を運んでたら丸太と地面の間で指挟んだ。医者いってレントゲン撮ったら左手薬指の先が折れてた。。。最初に診てもらった先生に、「ギター弾きたいんですけど。。。」というと、「ギターやる人は丸太運ばない」と一蹴された。医者にそもそも論を言われると残念。

本日、常勤の先生に診てもらい増した。結構ばらばらだったこともあり、手術のメリットが小さく、このままくっつけることとなった。レントゲンの写真撮らせてもらった。せっかく痛い思いしたので。

全治2カ月らしい。タイピングが遅くなって不便。。。仕事忙しいのに。。。

courier-imapの送信済みフォルダ名

Written in 2012年12月07日 by | コメントする( 0件 )

courier-imapでIMAPを通信をする際に、メーラ側から送信済みフォルダや、ごみ箱フォルダを作成・指定できますが、その際、フォルダ名に日本語を使うと、サーバ側のMaildir以下に作成されるフォルダ名は、文字化けしたような文字列になっている。これはフォルダ名が「UTF7-IMAP」にエンコードされているのだ。

「送信済み」というフォルダは、「&kAFP4W4IMH8-」みたいになっているでしょう。

それでこの文字化けしたような文字列をマルチバイトに戻したい時は、PHPでは以下のようにする。

$folder_name = mb_convert_encoding( $folder_name, 'UTF-8', 'UTF7-IMAP' );

ここではUTF-8に変換している。

WEBメールなどを作成される方はこのエンコード変換が必要でしょう。参考になれば幸いです。

やきとんやガルニ

Written in 2012年09月30日 by | コメントする( 1件 )

2012-09-28 18.17.152012-09-28 19.32.54

高校時代の同級生が新宿区市谷仲之町でやきとん屋をはじめた(http://garni-tokyo.com/)ので、顔出して来ました。落ち着いた雰囲気の素敵なお店でした。男性でも女性でも、一人でも行けるお店です。豚、野菜を炭火でていねいに焼いてくれる。ワインと一緒におしゃれにいただけます。

2012-09-28 18.29.272012-09-28 18.45.17

左の写真は、前菜を盛り合わせてくれました。同級生だったんで特別盛になってると思うので、参考にしないでほしい。右は、サバの燻製。幸せです。やきとんの写真撮らなかったのが惜しかった。

お客さんを丁寧にもてなしてくれるいい店です。お客から愛されているのを観察できて、同級生として嬉しい限りでした。東京に行った時の行きつけの店になりそうです。みなさんも行ってみてください。2人で経営してますが、2人とも気さくで、親しみやすいので、話しかけてみるべし。

第二種電気工事士の技能試験 当日

Written in 2012年07月28日 by | コメントする( 0件 )

2012-07-28 10.06.15

会場は幕張メッセの国際展示場の第9ホール。隣のホールでは恐竜展をやっていた。すごい大勢で試験をうけるので驚いた。千葉県でこんなにたくさんの人がこの資格を取るんですね。

外は猛暑でしたが、会場内はクーラーが利いていて快適でした。助かります。

幾分、気持ちがあわてたけど、5分くらいの余裕をもって作品を完成させられました。思わぬミスで不合格になっていないか心配ですけどね。

第二種電気工事士の技能試験の練習(4、5夜目)

Written in 2012年07月27日 by | コメントする( 0件 )

出題候補13種類は一応全部練習した。

2012-07-26 22.59.472012-07-27 20.20.59

第二種電気工事士の技能試験の練習 3夜目

Written in 2012年07月25日 by | コメントする( 0件 )

出題回路作成の練習をして3夜目。今晩は4つ練習した。今回のは時間も5分くらい前には終わった。2つは10分以上余った。作業量自体が少ないのか、作業速度が上がったのか。

2012-07-25 20.55.512012-07-25 21.52.28

2012-07-25 22.32.062012-07-25 23.13.37

第二種電気工事士の技能試験のための練習

Written in 2012年07月25日 by | コメントする( 0件 )

技能試験が今週末の7月28日(土)にあるのだが、今週になって急ピッチで技能試験の練習中。。。
今年出題予定の13問を順番にやっているのだが、やってみるとこれがなかなか制限時間の40分にぎりぎりなことが分かった。よく練習しないと時間オーバーになりそうだ。筆記試験は2時間もあって、半分くらいで終わっちゃったのに、実技はなんでこんなに時間が厳しいんだろう。。。

二晩で7つやってみた。のこり3日であと6つ練習しないと。できれば時間ぎりぎりだったやつをもう一度練習しておきたいところです。うっかりミスで即不合格になるので、侮れない試験だと思う。

2012-07-23 22.14.522012-07-23 23.08.232012-07-23 23.58.04

2012-07-24 00.54.402012-07-24 21.33.342012-07-24 22.58.552012-07-24 23.45.21

10進数と62進数を相互変換するPHP関数

Written in 2012年06月18日 by | コメントする( 0件 )

62進数なんてどこかの古代文明かって感じですが、たとえばたくさんの数値をGETパラメータで渡したいが、クエリーの長さに制限のあるような環境の場合、数値を62進数にすれば桁数が減りますよね。そんなニーズで作ったものです。参考までにコード公開。

16進数は、0,1,2,3,・・・,8,9,A,B,C,D,E,Fで桁があがりますが、62進数は、0,1,2,3,・・・,8,9,a,b,c,・・・,x,y,z,A,B,C,・・・,X,Y,Zまできて桁があがります。数値、小文字、大文字という順ですね。数字が10文字、小文字が26文字、大文字が26文字なので合計で62あるのだ。

<?php

// 62進数を10進数に変換
function dec62to10( $dec62 )
{
  $dec62 = trim( $dec62 );
  if ( !preg_match( '/^[0-9a-zA-Z]*$/', $dec62 ) ) {
    trigger_error( "62進数を指定してください。", E_USER_ERROR );
  }
  if ( !$dec62 ) {
    return 0;
  }
  $digits = strlen( $dec62 );
  $lower_a = unpack( 'C', 'a' );
  $upper_a = unpack( 'C', 'A' );
  $dec10 = 0;
  $code = unpack( 'C', $dec62 );
  for ( $i=1; $i<=$digits; $i++ ) {
    $char = substr( $dec62, $i-1, 1 );
    if ( preg_match( '/[a-z]/', $char ) ) {
      $num = 10 + $code[ $i ] - $lower_a[1];
    } elseif ( preg_match( '/[A-Z]/', $char ) ) {
      $num = 36 + $code[ $i ] - $upper_a[1];
    } else {
      $num = $char;
    }
    $dec10 += pow( 62, $digits - $i ) * $num;
  }
  return $dec10;
}

// 10進数を62進数に変換
function dec10to62( $dec10 )
{
  $dec10 = trim( $dec10 );
  if ( !preg_match( '/^\d*$/', $dec10 ) ) {
    trigger_error( "10進数を指定してください。", E_USER_ERROR );
  }
  if ( !$dec10 ) {
    return 0;
  }
  $lower_a = unpack( 'C', 'a' );
  $upper_a = unpack( 'C', 'A' );
  $digits = 0;
  do {
    $digits++;
  } while ( $dec10 / pow( 62, $digits - 1 ) >= 1 );
  $digits--;
  $dec10_tmp = $dec10;
  $dec62 = '';
  for ( $i=1; $i<=$digits; $i++ ) {
    $digit_num = floor( $dec10_tmp / pow( 62, $digits - $i ) );
    if ( $digit_num < 10 ) {
      $dec62 .= $digit_num;
    } elseif ( $digit_num < 36 ) {
      $dec62 .= pack( 'C', $digit_num - 10 + $lower_a[1] );
    } else {
      $dec62 .= pack( 'C', $digit_num - 36 + $upper_a[1] );
    }
    $dec10_tmp -= $digit_num * pow( 62, $digits - $i );
  }
  return $dec62;
}

?>

洋食「カレント」絶品ですね

Written in 2012年06月15日 by | コメントする( 0件 )

2012-06-15 19.33.00

2012-06-15 19.42.18

オードブルはサーモンとハムと野菜。野菜はジュレ状のソースと共にキャベツとレタスでまかれていていました。2皿目はサーモンのムースと甘海老。海老のだしが利いたソース。

2012-06-15 19.51.05

2012-06-15 20.00.35

スープはカリフラワーの冷製スープ。コンソメのジュレがのっている。一品目のメインは真鯛のソテー。エリンギが添えられていました。

2012-06-15 20.17.34

2012-06-15 20.35.53

二品目のメインはサーロインステーキ。デザート盛り合わせ。

すべてのパーツが丁寧に仕事されていて感動です。あたたかい料理の食器は暖かく、冷たい料理の食器は冷たい。付け合せの野菜が充実しているのも楽しいです。地元、長生村でつくられた野菜で、珍しい野菜もいくつか並びます。お金を払って、それ以上の満足のある貴重なお店です。ずっといてほしいです。