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

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...