Translate

2016年1月28日木曜日

CentOS7.2でamavisdとspamassassinが起動しなくなった



Server WorldのPostfix+Clamav+Amavisd
http://www.server-world.info/query?os=CentOS_7&p=mail&f=6

を参考にCentOS7.2SELINUXenforcingしたままメールサーバをあげたのだけど
何故かメールが送れなくなった。

で調べてみるとpostfixdovecotclamd@amavisdは動いているのに
amavisdspamassassinが止まっていた..

手動でsystemctl start amavisdしても動かない..

/var/log/maillog を眺めていてふと

 spamd[1865]: config: no rules were found! Do you need to run 'sa-update'?

なる文字を見つけた..

!これだよ..

sa-updateが動かない..
http://fight-tsk.blogspot.jp/2011/11/sa-update-d.html


Ubuntu 10.04LTSでメールサーバ上げた時やったやつ..
4年前にはまったやつじゃん..

おれ..全然成長しとらんわ...
..て、いうか、最初からメール動いてなかったんじゃ..


..と、いうわけで

http://www.apache.org/dist//spamassassin/source/

にある現時点の最新版

# cd /tmp
# wget http://www.apache.org/dist//spamassassin/source/Mail-SpamAssassin-rules-3.4.1.r1675274.tgz
# wget http://www.apache.org/dist//spamassassin/source/Mail-SpamAssassin-rules-3.4.1.r1675274.tgz.asc
# wget http://www.apache.org/dist//spamassassin/source/Mail-SpamAssassin-rules-3.4.1.r1675274.tgz.md5
# wget http://www.apache.org/dist//spamassassin/source/Mail-SpamAssassin-rules-3.4.1.r1675274.tgz.sha1
# sa-update --install ./Mail-SpamAssassin-rules-3.4.1.r1675274.tgz


してから

# systemctl start amavisd
# systemctl start spamassassin

したら..動きました..

/var/log/messages

 clamd: LibClamAV Warning: RWX mapping denied: Can't allocate RWX Memory: Permission denied
 clamd: LibClamAV Warning: Bytecode: disabling JIT because SELinux is preventing 'execmem' access.
 clamd: Run  'setsebool -P clamd_use_jit on'.


ってワーニングも出ていたので、

# setsebool -P clamd_use_jit on

しときました。

SELINUXenforcingのままメールサーバを立てる場合は気をつけて

2016年1月26日火曜日

CentOS7.2上にJenkinsをインストールしProxyを設定し更新したら「Signature verification failed in update site 'default'」というエラーが表示される

CentOS 7.2 のDVDイメージ(1511)が出たので、これをつかってOSをインストールして、Jenkinsを起動した。

で、プラグインの設定でProxyをセットして「保存」し、「更新」しようとしたら、


 Signature verification failed in update site 'default' (詳細)

と表示されて、プラグインを追加・更新することができない。

で、調べてみたら..

Java and Old Hash Algorithms
https://isc.sans.edu/forums/diary/Java+and+Old+Hash+Algorithms/16571/

という記事をみつけた。

CentOS 7.2のデフォルトJavaがJava1.8.0.71(執筆時点)になっており、
MD2もしくはRSAハッシュが1024ビット未満だとdisableになるように設定されているかららしい。


対処方法も書いていて、

#jdk.certpath.disabledAlgorithms=MD2, RSA keySize < 1024

$JAVA_HOME/lib/security/java.securityの上記の行をコメントアウトすればよいとのこと。


CentOS7.2にFreeIPAを入れ、次にJenkinsをいれると、OpenJDK1.7.0とOpenJDK1.8.0両方はいるが、/usr/bin/javaalternativesで1.8.0側にリンクされている。


なので、
 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.71-2.b15.el7_2.x86_64/jre/lib/security/java.security
を編集して再起動したらアップデートありの赤マークが出てくるようになった


でも、みんな騒いでないなあ..なんでだろ..
ひょっとしてうちのproxyだけなのかなあ..



2016年1月12日火曜日

JenkinsのMQTT Nortify Pluginを使ってみる



Jenkinsのプラグインを検索していたら
"MQTT Nortification Plugin"
というイマドキなプラグインを見つけた。



ので無性に試してみたくなってJenkinsへインストールしてみた。

でジョブ設定に入って「ビルド後の処理の追加」を覗いてみると
MQTT Nortification」という欄ができていた。

追加するとMQTTブローカ先の指定やPublishするトピック名、メッセージ本体、QoSなどが設定できるようになっていた。


これを試すにはMQTTブローカが必要になる。

で、ふと思ったのだけどJenkins実行環境がproxy環境配下のDockerマシン上なので、BluemixのIoT Foundationに直接メッセージを送れない..

しょうがないので、同じDocker上に別コンテナでMosquittoをたちあげた




Jenkins側のジョブでは、
Broker URL欄に"tcp://localhost:1883"、
Credentials欄はなしのまま(Mosquittoで認証設定していないため)、
Topic欄は"iot-2/evt/status/fmt/json"(なんでもいいけどIoT FoundationのQuickstartでも動かせることができるように)、
Message欄は(IoT Foundation推奨フォーマットJSON形式の)
{
"d":{
"myName":"Jenkins Test"
"result":$BUILD_RESULT,
"url":$PROJECT_URL,
"culprits":$CULPRITS
}
}

とした。
MQTTブローカに最後のメッセージを1件のこして新たに追加されたSubscriberに対して最初にそのメッセージを送りたい場合はRetain Message欄をチェックするらしい。お試しでは使わないので何もしなかった。

で、ジョブを実行するとmosquitto_sub側のターミナルにメッセージが表示され、動作していることがわかった。




CULPRITSは空か..何が入るかはもう少し使ってみないとわからないが、少なくとも成功かどうかやジョブ名はSubscriber側におくることはできるようだ。


これで、Arduino側でLチカとか使えばXFDできそう..


Docker上でpublicイメージansi/mosquittoを使ってMosquittoをあげてみる



Proxy環境内で動作するMQTTブローカが必要になったので
DockerHubを検索してみた。

残念ながらOfficialがなかったので
一番ダウンロードの多い"ansi/mosquitto"を試してみた。

publicイメージなので、以下試したい人はat your own riskでやってください。



サイトのREADME.mdは超シンプル。

sudo docker pull ansi/mosquitto で取得して
sudo docker run -p 1883:1883 --name mosquitto -d ansi/mosquittoで実行しろ

としか書かれていない。

実行後、sudo docker exec -it mosquitto /bin/sh して
シェル対話実行可能状態にする。

Mosquitoには、コマンドでpublish/subscribeできる
コマンドmosquitto_pubmosquitto_subがあるので
Subscribeしたら標準出力させるように
mosquitto_subを使って動作確認してみる。

ldd /usr/local/bin/mosquitto_subすると、
/usr/local/libへのパスがないことがわかったので、
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib して
SOライブラリのパスを増やして
mosquitto_sub -t <Subscribeしたいトピック> で実行して
別のマシンでpublishしたらつながった。
#Publisher側プログラムがない人はmosquitto_pubを代わりに別ターミナルで動かせばいい

これで、
いちいちローカルにインストールしないでも
Mosquittoが使えるようになった。






ニワカIoT屋の人にもDocker環境は便利だ;-p

ClaudeをOpenAI O1のように思考させるDifyサンプルを試す

 Difyの「探索」タブにはさまざまなサンプルが載っており、その1つに「Thinking Claude (OpenAI O1 Alternative)」というものがある。   このサンプルがどういうものか、未だに自分でも解けない以下の問題をためしに聞いてみることにした。 『人類の...