2017年3月11日土曜日

samba4 provisioning に失敗する

 ZFSを使うと、acl の持ち方が違うとかなので、
いまいち使えないところがあるようです。
仕方ないので、4GBくらいくれてやることに。

# zfs create -V 4GB zroot/samba4
# newfs /dev/zvol/zroot/samba4
# mount -o acls /dev/zvol/root/samba4 /var/db/samba4

2017年3月9日木曜日

samba4.6.0 on FreeBSD11

install について簡単に書く。

  • ports の、 net/samba44 をとりあえず入れてみる。
  •  必要なライブラリが入る。
  •  talloc-2.1.9 が必要なので、以下の作業を実施
  •  $ cd /usr/ports/devel/talloc
     $ sudo vi Makefile
     -  PORTVERSION=            2.1.8 
     +  PORTVERSION=            2.1.9
     $ sudo make makesum && make all reinstall
    
  • samba4.6 は 普通に展開する。
  • ./configure --enable-debug
  •  
 ちなみにtalloc-2.1.8 をインストールしたままのコンパイルは、

   pytalloc_GenericObject_reference_ex() が 存在しない 

ので こんなエラーがでる。




[3538/3912] Linking default/python/libsamba-python-samba4.so
default/source4/librpc/rpc/pyrpc_util_32.o: In function `pyrpc_import_union':
pyrpc_util.c:(.text+0x1244): undefined reference to `pytalloc_GenericObject_reference_ex'
pyrpc_util.c:(.text+0x126c): undefined reference to `pytalloc_GenericObject_reference_ex'
default/source4/librpc/rpc/pyrpc_util_32.o: In function `pyrpc_export_union':
pyrpc_util.c:(.text+0x13c0): undefined reference to `pytalloc_GenericObject_reference_ex'
collect2: error: ld returned 1 exit status 
 
 
参照: https://lists.samba.org/archive/samba/2017-March/206890.html
ちょっと調べればわかるものだ。 
 


2016年12月26日月曜日

Asterisk / HT701,HT503 について

Asterisk の設定で、ハマったところだけ抜き書きしておく。


1)FXS の設定で「Register Expiration:   (in minutes. default 1 hour, max 45 days) 」 程度にしておかないと、テスト中 register 動作がうごかない

 2)SIP User id/ secret の設定: asterisk(chan_sip/sip.conf) 側で、設定する場合
 [phone number]  →Authenticate ID:
   secret → Authenticate Password:
 に対応しているように思える。(特に[phone number] 側については検証が必要)
 
  電話機なので呼び出し番号が入るのが普通だけれども、そこを変えてしまうと
 どうも組み合わせが合わない。 - Wrong password
   設定例などは、 [ht503fxs]とかになっているけど、これがAuthenticateに使われる
 ように思える(推測の理由:phone number に揃えたら動いた)

3) host=dynamic にしないと register が失敗する - Peer is not supposed to register


 固定IP、有線でつなげるアダプタなのだが、レジスタ動作が動的割り当てに即した
 もののようである。なので、dynamicとすると動く(そうなる理由はわからないが、
 dynamicじゃないからだとデバッグログがいうのでそのようにした)

どうも用語が一致しないなどの、いわゆる「業界標準ができてない」世界のゴタゴタを
理解するのに大変苦労すること。大昔から通信屋と電算屋は仲がとても悪いように思う。

以上

2016年3月8日火曜日

qmail-spamocontrol / STARTTLS

qmail-spamcontrol の 運用について少し書く。

このパッチをすると、qmail-remote は TLSに対応する。

/var/qmail/control/tlsdestinations

制御ファイルを設置する と 接続先の サーバが、STARTTLS 対応していいればセッションをTLSで保護することができる。

このパッチの 2.7.31 では SSLv3以前のプロトコルでセッションを行おうとするが、もう既に "POODLE" "HEARTBLEED"、先週(2016/03/01) 発表になった "BROWN" などの脆弱性を突いてくることがわかっているために、これらの古いプロトコルを迂闊に使えると、最悪は SMTP セッション開始を 拒否される。

故に、2.7.32 以降のパッチが必要なのだが、port作者がさぼっている。

letsencrypt が FreeBSDでも稼働するようなったので、STARTTLS には多くの問題を抱えながらも、今後は強制的になっていくのではないかと考えている。 DKIMがそれほど普及もせず、 SPFも適当すぎるため、これらの後付け SMTP の付属物がロクなことをしないのは知っているのだが、少なくともデータのやりとりにTLSの保護は役に立つだろう。

qmail-spamcontrol 2.7.32 for FreeBSD-ports (private ed.)

さて qmail-spamcontrol が 古いので、 2.7.32 にしたい。
手順を以下に記す。

  1. vi /usr/ports/mail/qmail-spamcontrol/Makefile 
  2. 1,$s/2731/2732/
  3. wq 
  4. make makesum
  5.  
     
なんとこれだけで良い。大した手間ではなかった。実は 4.の作業を
手作業でやっていたが、
FreeBSD port 作成者のためのハンドブック 3.3 に 

3.3. チェックサムファイルの作成

make makesum と入力するだけで、 (訳注: bsd.port.mk に書かれている) port 生成ルールに従い、 自動的に distinfo ファイルが生成されます。
とあり、それで問題は解決した。

qmail-spamcontrol の FreeBSD-ports には、これ以外にも問題があるのだが、とりあえず今回はこれで済ませることにする。

以上

 

qmail-spamcontrol

FreeBSD-ports で qmail-spamcontrol を使っている。

SPAMCONTROL


この記録を書いている時点(2016/03/8) で、FreeBSD-portsでは、 2.7.31 である。
少々古く

" 30 Oct 2015 23:07:16
Original commit files touched by this commit  1.03.2731_2 "

もあり、qmail-remoteにパッチを加えて STARTTLSが可能になるのだが、これにいささか問題
[2.7.32] Fixed TLSv1 negotiation error for qmail-remote; disables SSLv2/SSLv3 connections for qmail-remote (Poodle bug in SSL).

を抱えているので、 2.7.32 としたい。 さてどうするか。

  1. FreeBSD-portsの正式な手続きを通して報告してパッチしてもらう
  2. 自分でパッチを拵えて満足する

過去において 1. の手続きをしたり、port author に伝えたところでも「ああそれは知ってる知ってる」みたいな態度、メンテナにスルーされたり、大抵ロクなことがないので、2.をやって Blogに書いて反応があるのをみることにした。 作業は大したことではない。

(続く)

2015年7月2日木曜日

nodejs、非同期、Promise 爺の手習い

四十の手習いで、node.js での開発をやってみる。

  • V8って何よ
  • node.js ってscriptのくせにサーバ書けるの?かなり生意気じゃね
  • javascript 型がないし、.で処理つなげたり function(hoge,function({} キモい
  • げー、非同期処理なのかよ。順序よく処理させるの苦労するじゃねえか

とりあえず、こんな感じである。
クロージャなんかもひいこら云ってるけど、もうjQueryで結構見てるので理解しないで動かしている恥ずかしい。理解したトコロで非同期処理されないのを保証しているクロージャ囲みのウザさ(例外処理がわやだコンチクショウ)的なところが。


・promise 使ってみた例(丸パクリだけど概念としてコレが一番大事だった)
function p(str) {
  return new Promise(function(resolve) {
    setTimeout(function() {
      resolve(str);
    }, 1000);
  });
}

//
p('Async 1').then(function(result) {
  console.log(result);
});

console.log('Sync 1'); 
 
  1. promiseで定義されている非同期型手続きを呼び出す場合 .then 使え。
    今のところthenableでないものは不便としか思えない。初学者ならば
    非同期処理を Promise(V8/node.jsなら最新のものにある)で括って
    呼び出すとき .then使って resolve()メソッドの中身を引っ張る。
    通常の return 文だけではどうにもならない。