メーリングリストをSympaにする

長らくMLといえばfmlを使っておりました。
mailmanも使ったんですがなんかしっくりこない。
しかしfmlもfml8がなかなか進まないのと、
UTF-8なsubjectが文字化けしやすかったりする問題があり(perlの環境によるの?)
MLをガンガン使ってるクライアントに不評でしたので、思い切ってSympaに変えてみました。

オープンソースのメールサーバ/Sympaとは
今年の2月ぐらいから「メーリングリスト」で検索したらSympaが出てくるようになった。
こちらのサイトに掲載されたのが大きかったんでしょうか。

しかしSympa、あまり日本では使われていないのか、情報があんまりない。
フランス語で「サンパ」と読むらしいですよ。

環境: CentOS7、postfix、既にfml8導入済

Sympa yumリポジトリの登録
yumリポジトリ (Red Hat / CentOS) – メーリングリスト管理ソフトウェア Sympa
$ wget 'http://sympa-ja.org/download/rhel/sympa-ja.org.rhel.repo'
# mv sympa-ja.org.rhel.repo /etc/yum/repos.d/
# yum -y install sympa-httpd

MySQL(mariadb)でSympa用にDBとユーザーを作成。
DB:sympa
User:sympa
Pass:(pass)
# vi /etc/my.cnf
[mysqld]
default-character-set = utf8

セットアップ
# sympa_wizard.pl
適当に質問に答えると完了
間違えて答えてもあとでconfigファイルで直せる(はず)

# vi /etc/sympa.conf
domain mydomain.example.com
listmaster admin@mydomain.example.com
lang ja-JP
supported_lang ja
title Mydomain ML
aliases_program postalias

# postalias /etc/sympa/aliases.sympa.postfix
# postalias /var/lib/sympa/sympa_aliases

ここのpostaliasでpermission deniedが出て非常に苦労した記憶があるが、
どうにかして通った…所有者とパーミッションは下記の通りになっている。
-rw-r--r-- 1 sympa sympa 1165 Apr 6 17:29 sympa_aliases
-rw-r--r-- 1 sympa root 12288 Apr 6 17:29 sympa_aliases.db

# vi /etc/postfix/main.cf
alias_maps = hash:/var/spool/ml/etc/mail/aliases, hash:/etc/aliases, hash:/etc/sympa/aliases.sympa.postfix, hash:/var/lib/sympa/sympa_aliases
recipient_delimiter = +

fml8用のaliasesも残してある(併存してるので)
/etc/aliases.sympa.postfix が基本コマンド向け、
/var/lib/sympa/sympa_aliases がML追加されるたびに更新されるファイル

# vi /etc/httpd/conf.d/sympa.conf
Sympa管理画面の設定。適当に認証とか制限とかかけておく。

ここからはGUI。webインターフェースにアクセス。
http://mydomain.example.com/sympa/
管理者アドレスを登録して、あとはメニューを見ればわかる…はず…

よく使う設定
リストの設定変更>送受信の設定>

返信先アドレス (reply_to_header)
値: リスト (list)
すでに存在するヘッダを優先する (apply) : Reply-To:ヘッダを上書き (forced)

件名につける目印 (custom_subject)
[%list.name%]:[%list.sequence%]
※0パディングの桁数を決めたいが方法がわからない

fml8からの移行だったので
・同名のMLがfml8とSympaに存在すると、postfix上も同じアドレスがダブるのでエラー。
切り替えは素早く。
・/var/lib/sympa/list_data/(ml-name)/stats の1つめの値がMLの通し番号。
勝手に書き換えても動いた。

Raspberry Piでキオスク端末を

QRコードを読み取ってwebサーバーにpostするだけの端末が欲しい。
こりゃーキオスク端末の出番だぞ、でも予算かけたくないぞ、ということで
chromestickとかchromeboxとか、AndroidでROM焼きするか、iPadか、などと考えたが
格安にいけるのはRaspberry Piとディスプレイの組み合わせでした。

購入物


7インチディスプレイ。HDMI対応、1024×600。


Raspberry Pi 3 Model B。専用ケースつきのほうが取り回しが良かろうと。透明のを買いました。


電源。弱かったり不安定だと困るのでそこそこ良さげなやつ。


microSDHCカード。Raspbian OSは4GB以上とのことですが、手元に転がってたのはコレでしたので。

早速翌日届く。amazonプライムさすがです。

Raspbian OSのインストール。
Download Raspbian for Raspberry Pi
ブラウザ使用が前提なのでDesktop版をダウンロード。
Version:March 2018でした。torrentが圧倒的に速かった。

zipの中のimgをmicroSDHCにddで書こう…と思ったらubuntu機消してた。
windowsでimg書けるツールを使う。
「Rufus」ブート可能なISOイメージファイルをもとにブータブルUSBメモリを簡単に作成 – 窓の杜ライブラリ

出来たらmicroSDHCカードをRaspberry Piに挿して電源オン!

あっさり起動する。
いきなりデスクトップ環境まで進む。

画面解像度の選択肢に1024×600がないので、作る。
検索すると様々な情報が出てきますが、下記1行を追記するだけで良かったです。
$ sudo vi /boot/config.txt
hdmi_cvt=1024 600 60 3 0 0 0

しかし画面比が直らない…と思ったらディスプレイ側の設定が4:3固定になってました。んもー

起動時、GUIになったらキオスクモードでchromium browserを起動する。
$ vi ~/.config/lxsession/LXDE-pi/autostart
@chromium-browser --kiosk http://192.168.xxx.xxx/

シャットダウン時に物理的に電源を切る必要がありますが、
だいたい立ち上げっぱなしだし、必要十分。
VNCサーバーも設定オンにするだけでいきなり立ち上げられるので
何かあったときもリモート管理がラクです。

Asteriskで留守電作ったメモ

Asterisk PBXで留守電を受けて、内容をメールで送ってくるようにしたんだけども
まとめてる時間がないのでとりあえず参考にしたURLを列挙しておく。
私はCentOS7に入れた。以前CentOS5でやってたときと比べてあっさり入った記憶。
Brastelの050Freeで受けてます。

Asteriskで050 Freeに留守電を付ける – majishini

バイク野郎のひとりごと: Raspberry Pi 3へAsteriskを構築する — その3

GSMファイルに変換した音声ファイルをAsteriskのIVR音声に使用する – つるながの綴方

WAVをAsterisk用のGSMへ変換する – Qiita

AsteriskによるIP-PBXの構築(SuSE9.3編)

Asterisk cmd VoiceMail – voip-info.org

Asterisk cmd VoiceMailMain – voip-info.org

CentOSのコマンドラインから音楽を流す

自宅で仕事中にBGMをかけたいなー、と。

手元のPCでかければいいんですが、たまたまスピーカーが自宅サーバーの隣にあるし、
自宅サーバーといいつつDJ用のmp3が入ってるファイルサーバーなので
そっちのほうがライブラリが豊富。じゃあそのサーバー機で流せないかなー、と。

なお、会社ではTDKのBOOMBOXにChromecast Audioを繋げています。

自宅用にChromecast Audioを買っても良いんでしょうけど、注文しても届くまでの間は聞けない。
ふと自宅サーバーに使っているNEC Express5800 S70/SDを見てみるとオンボードでRealtek ALC262が乗ってる。
裏側を確認したらちゃんとLINE OUTがついてました。
じゃぁこれをスピーカーに繋いだらいいじゃない。

しばらく触ってなかったサーバーなのでyum updateするかーと思ったら、できない。
CentOS5だもんね…
これで解決: 古いLinuxでyumがYumRepo Errorで実行できない場合
これで解決。これはこれで後で入れ替えないとな。

とりあえず aplay hoge.wav してみると、サウンドカードが見つからないと言われる。
/etc/modprobe.conf を見てみると、どうやら認識はされている模様。はて。
あらためて system-config-soundcard を走らせてみても結果が変わっていないようですが、
rootでaplayしたら音が出ました。一般ユーザーから見えないのか。

% alsacard
pen error: No such file or directory
% su -
# alsacard
0
# aplay "all that matters(A)-louise.wav"
再生中 WAVE 'all that matters(A)-louise.wav' : Signed 16 bit Little Endian, レート 44100 Hz, ステレオ

で、調べたら、auidoグループに所属しているユーザーじゃないとダメなんですね。
Express5800/S70 タイプSD + CentOS 6.4で音を出す – コンピュータ/ソフトウェア関連Tips

# usermod -aG audio myusername
# reboot

念のため再起動(alsaのrestartでもよかったかもしれない)

Advanced Linux Sound Architecture – ArchWiki
あんまり必要のないユーザーをaudioグループに入れるな、ともありますが、まぁ使うのは自分一人だし。

そんなわけで無事に再生できた。mp3もOK。

% mpg123 "DRILL KING ANTHOLOGY-01-ドリルキング・アンセム(ドリルキング社歌).mp3"
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layers 1, 2 and 3
version 1.20.1; written and copyright by Michael Hipp and others
free software (LGPL) without any warranty but with best wishes

Playing MPEG stream 1 of 1: DRILL KING ANTHOLOGY-01-ドリルキング・アンセム(ドリルキング社歌).mp3 ...

MPEG 1.0 layer III, 192 kbit/s, 44100 Hz joint-stereo
Title: ドリルキング・アンセム Artist: ドリルキング社歌
Comment: Album: DRILL KING ANTHOLOGY
Year: 1994 Genre: Unknown

いい感じです。
しかし毎度CLIでaplayやらmpg123やら打ち込むのは大変だし、プレイリスト機能もほしい。
こうなると適当なwebインターフェースとかを持ったプレーヤーが欲しくなりますね…
そういうのないのかな。

いやむしろChromecast Audioのエミュレーターみたいなのがあればいいのか。
cheapcastとかleapcastとかはあったみたいですが続いてないですね。

※追記
VLCにwebインターフェースがあるっぽいですね。さっすがー
Control VLC via a browser – VideoLAN Wiki


関係ないですが、amazonはFire Stickとかを推してるだけあって、Chromecastを売ってないんですねw

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Chromecast Audio
価格:4978円(税込、送料無料) (2017/6/21時点)

古いWordPressサイトをStaticPressで静的に書き出してしまおう

WordPressで作ってた古いサイトを静的サイトに変換しておけば、
今後バージョンアップだとかセキュリティアップデートだとかに手間取らない。

ということで久々に触ったサイトのWordpressを最新版にバージョンアップして
StaticPressプラグインを導入。

有効化するぞーと思ったらエラーが。
class-static_press.phpの965行目でsyntax error。unexpected T_SL…

$regex = <<<'END'
/
(中略)
/x
END;

PHPのヒアドキュメントの開始でエラー。
シングルクォートで囲む ‘xxx’ という指定法はNowdoc形式といって、PHP5.3以降でないと使えない。
今回使ってたサーバーはさすが古いだけあって5.2.xでした。

幸い、(中略)の中にシングルクォートや変数を含む部分は無かったので

$regex = '
/
(中略)
/x
';

として解決。
直接プラグインを書き換えるのは一時しのぎだけど、
どうせこのサイトは静的に書き出してしまうのだからこれでも良かろう。

「良かろう」なんて普段使わない言葉遣いしたら亘理町の「よかろう寿司」に行きたくなったわね!はらこめし!
(↓元祖はらこめし味くらべのときの様子)

で、有効化したらメニューのStaticPressから設定して書き出し開始。
設定の「静的サイト URL」は、出力したファイルを後で運用するURLを指定しておく。
「出力先ディレクトリ (ドキュメントルート)」は既存のwordpressファイルととカブると面倒なので
独自のディレクトリを指定しておいた方がラクだと思う(無ければ作ってくれる)。

あとはできあがったファイルを適当に移設して公開すればオッケーよ!