Vine からパピーへのお引越し

リリースされた日本語版に関するもの

モデレータ: 暇人, YoN, nyu

返信する
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Vine からパピーへのお引越し

投稿記事 by シノバー »

我が家では15分おきにメールを自動チェックし、必要ならば携帯に転送するというシステムが、24時間動いています。一度壊れたことがあって、そのときに急遽中古のPCにHDDを換装して動かしておりました。それが最近調子がおかしいのです。突然死にます。立ち上げ直すとしばらく動いているが、また落ちる。もともと中古のハードウェアだしHDDはさらに古いものなので、おかしくても当たり前なのかもしれません。

更新するにあたり、パピーに移行することにしました。24時間稼働なのでボードはatom、USBフラッシュでファンレス、かつ消費電力を抑える狙いです。パピーは 431JP2012 とします。

旧システムは Vine-4.2。かなり古いです。それだけでなくパピーはいろいろ特殊なので、移行はかなりたいへん。そのために行ったことを、このトピックに記録します。

---
話の前提に我が家のLANシステムについて説明します。LAN上で3つのコンピュータが役割を分担しています。1台はLAN内DNSと外部に対してwwwサービス。24時間運用で、これが止まるとLAN内で困るだけでなく外にも迷惑が掛かるので、本当はこれもそろそろ更新したい。

2つ目が今回更新対象の、メールだけを扱うPCです。止まったとて、メールチェックが遅れるだけなので、重要度は少し下がる。なのでときどき落ちていてもこれまで放置していた。だが、メールを失ってしまうとかなりまずい。

3つ目は日常に使い、テストなどを行うもの。重要なデータさえバックアップしておけば、クラッシュしようがどうしようが大きな問題は起こらない。
最後に編集したユーザー シノバー [ 13/05/28(火) 22:09 ], 累計 1 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

mini_sendmail

投稿記事 by シノバー »

今回のPCはメールのマネジメントを専らにするものなので、sendmailが必須となる。だがLAN内のSMTPサーバーは1台目が持っているので、SMTPサーバーはそちらへ転送でもよい。そもそも1台目のSMTPサーバーも、LAN内は自分で扱うが、外部へのメール送信はプロバイダのSMTPサーバーへ転送している。我が家はドメインも持っておらず、固定IPも無いので、この方法でないとメールを受け取ってもらえない。

なのでSMTPサーバーは1台目(じっさいは外部に対してはプロバイダのSMTPサーバー)を使うこととする。この目的ならば mini_sendmailが使える。
http://acme.com/software/mini_sendmail/

431JP2012上でコンパイル。スクリプト /usr/sbin/sendmail を追加。
EDIT:(2014-08-08)
mini_sendmail-1.3.6-1-p4.pet
http://shino.pos.to/party/bridge.cgi?puppy/opt/
インストールの後、
/etc/mini_sendmail.conf.example を /etc/mini_sendmail.conf にコピーし、編集、転送先の SMTPサーバーを設定する。
#SMTP_SERVER=smtpserver.some.provider.com
## standard SMTP_PORT is 21, but some use 587.
#SMTP_PORT=21
#MY_EMAIL=myaccount@some.provider.com
テストは -v オプションを付けて:

コード: 全て選択

# echo "Subject: test" | sendmail -v myaccount@some.provider.com
<<<< 220 smtpserver.some.provider.com ESMTP Postfix
>>>> HELO puppy
<<<< 250 smtpserver.some.provider.com
>>>> MAIL FROM:<myaccount@some.provider.com>
<<<< 250 Ok
>>>> RCPT TO:<myaccount@some.provider.com>
<<<< 250 Ok
>>>> DATA
<<<< 354 End data with <CR><LF>.<CR><LF>
<<<< 250 Ok: queued as 3B13E884002
>>>> QUIT
<<<< 221 Bye
最後に編集したユーザー シノバー [ 14/08/08(金) 20:12 ], 累計 1 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

fetchmail, procmail

投稿記事 by シノバー »

メールの振り分け、転送は fetchmail>procmail を使っています。これらのpetが見つからなかったのでソースより 431JP2012上でコンパイルしました。
fetchmail-6.3.26-p4.pet
procmail-3.22-p4.pet
http://shino.pos.to/party/bridge.cgi?puppy/opt/

(参考) configure オプション

コード: 全て選択

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --host=i486-t2-linux-gnu
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

python, tcl/tk

投稿記事 by シノバー »

fetchmailは動くのですが .fetchmailrc を作成するための GUIが pythonとtcl/tkを必要とします。python は devxに入っていますが、 tcl/tk対応の部分 Tkinter が欠けています。本家wikiおよびフォーラムで情報がありました。
http://puppylinux.org/wikka/python
http://www.murga-linux.com/puppy/viewtopic.php?t=80426

これら情報をもとに python および tcl/tkの sfsを作りました。
python-2.5.6-p4.sfs
tcl_tk-8.5.7-p4.sfs
http://shino.pos.to/party/bridge.cgi?puppy/opt/

(参考) python-2.5.6 は 431JP2012 + tcl_tk-8.5.7-p4.sfs 上でソースよりコンパイル。

コード: 全て選択

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --host=i486-t2-linux-gnu
--
今回はすでにある .fecthmailrc をそのまま使うので、これら fetchmailconf, python, tcl/tk は使わない。
最後に編集したユーザー シノバー [ 13/05/28(火) 21:57 ], 累計 1 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

nkf, bsfilter, ruby

投稿記事 by シノバー »

メールの振り分けに nkf と bsfilterを使用しています。
nkf は新谷さんのものがありました。
nkf-2.1.0-koro1.pet
http://openlab.jp/puppylinux/download/p ... /Shintani/

bsfilterはソースをダウンロードして makeするだけ。
http://sourceforge.jp/projects/bsfilter/
bsfilter-1.0.18-ruby1.9.rc5.pet
http://shino.pos.to/party/bridge.cgi?puppy/opt/

bsfilterを動作させるには Ruby が必要です。 431P2012上でソースよりコンパイルしました。
http://www.ruby-lang.org/ja/
ruby-1.9.3.429-p4.sfs
http://shino.pos.to/party/bridge.cgi?puppy/opt/

(参考) Rubyのコンパイルオプション

コード: 全て選択

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --host=i486-t2-linux-gnu
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

メールユーザーの追加

投稿記事 by シノバー »

常時自動で動かすので rootのままでは少々不安。すでにある spot などを流用する手もありますが、Vineのときと同じ ユーザーをパピーに作成します。adduser で作れますが、あらかじめ /home を作成しておくのがポイント。
# mkdir -p /home
# adduser tako
Changing password for tako
New password: yaki
Retype password: yaki
Password for tako changed by root
パスワード「yaki」は、じっさいの画面には表示されません。
ユーザー tako のホームディレクトリ /home/tako が作られているはず。
(参考) http://takaq1.plala.jp/contents/puppy/ftpd/

/home/tako/ に以前に使っていた .fechmailrc や .procmailrc をコピーしておきます。
.fechmailrc は次のような内容。パーミッションを 700 とします。
# Configuration created Mon Dec 1 08:59:11 2008 by fetchmailconf 1.52 $Revision: 4740 $
set logfile "/home/tako/fetchmail_log"
set postmaster "postmaster"
set bouncemail
set no spambounce
set properties ""
poll popserver.some.provider.com with proto POP3
user 'myaccount@some.provider.com' there with password 'mypassword' is 'tako' here options stripcr
mda '/usr/bin/procmail'
青色のところは適宜変えてください。
ログファイル "/home/tako/fetchmail_log" もあらかじめ作っておきます。

ただし Vine-4.2で日本語は euc-jp、パピーは utf-8 なので、振り分けレシピ .procmailrc のコード変換が必要でした。 nkfでやるのが早いが、 geanyでもできる。

旧の.procmailrc を geany で開くと文字化けしています。「ファイル>読み直す」で EUC-JPを選択。正しく見えたら、こんどは「文書>エンコーディング」で UTF-8を選択。これを書き戻せばUTF-8になる。

レシピ中で nkf を使って euc-jp に変換している部分 nkf -eZ1 を -wZ1 に変更
#タイトルデコード
:0
* ^Subject:\/.*
{
:0
* ^Subject:.*iso-2022-jp
DECODED_SUBJECT=|echo "$MATCH"|nkf -mwZ1|sed 's/[[:space:]]//g'
:0 E
DECODED_SUBJECT=|echo "$MATCH"|nkf -wZ1|sed 's/[[:space:]]//g'
}
(参考) http://www.jaist.ac.jp/~fjt/procmail.html

必要ないのかもしれないが、/home/tako/Mail を作っておきます。
rootで作業するとオーナーが rootになってしまうので、tako に戻します。

コード: 全て選択

# chown tako.tako -R /home/tako
あと、fetchmailが /var/spool/mail/tako を作りたがります。メールは /home/tako/Mail 以下に貯められるので /var/spool 以下は必要ないはずですが、念のため /var/spool/mail を作っておきます。ただし ユーザー tako から書き込みができるようにする必要があります。/var/spool/mail をグループusersから書き込みできるようにし、 tako を グループ users に加えます。

コード: 全て選択

# mkdir -p /var/spool/mail
# chown root.users /var/spool/mail
# chmod 775 /var/spool/mail
# addgroup tako users
最後に編集したユーザー シノバー [ 14/07/15(火) 09:19 ], 累計 1 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

bsfilter の準備

投稿記事 by シノバー »

振り分けに使っている bsfilter に準備が必要です。 bsfilterと ruby をインストールしておきます。
以前にデーターベース .bsfilterがあればディレクトリごとそっくりコピーでも構いません。
新調する場合は次を参考に
(参考) http://sourceforge.jp/projects/bsfilter ... ?tid=10758
スパムメールのサンプル、スパムでないメールのサンプルが必要。
最後に編集したユーザー シノバー [ 13/06/01(土) 17:55 ], 累計 2 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

samba

投稿記事 by シノバー »

リモートホストからは samba共有でメールボックスにアクセスすることとします。
本フォーラムの 追加アプリケーション>Sambaサーバー viewtopic.php?f=25&t=1504
431JP2012 なので samba-3.0.26-3-sfs4.sfs を使います。
http://shino.pos.to/party/bridge.cgi?puppy/opt/pup4/

設定ファイルは /etc/opt/samba/smb.conf 、起動スクリプトは /etc/init.d/smb となってます。smb.conf あるいは smb.conf.sample に [homes] の設定があるのですが、'valid users = %S' がうまく動作しませんでした。パピーのユーザーと sambaのユーザーを同期させる設定ができていないのかもしれません。

次のように 'validusers = tako' と、ユーザー名を直接書き入れました。 browseable = yes また、path も設定しました。

コード: 全て選択

[homes]
     comment = Home Directories
     path = /home/tako
     browseable = yes
     writable = yes
     valid users = tako
sambaユーザーに tako を加えます

コード: 全て選択

# smbpasswd -a tako
New SMB password: yaki
Retype new SMB password: yaki
Added user tako.
なお、上記パッケージに含まれる smbadduserは動かないみたい。

smb.conf をテストします。

コード: 全て選択

# testparm
問題が無いようであれば sambaを起動します。

コード: 全て選択

# /etc/init.d/smb start
pnethoodなどでユーザー名、パスワードを入れて homes をマウントできるようであれば OK。
最後に編集したユーザー シノバー [ 14/04/01(火) 10:51 ], 累計 1 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

crontab

投稿記事 by シノバー »

あとは fetchmail を定期的に自動的に実行すればよい。ところが crontabに問題があった。

crontab を非特権ユーザーで実行するには crontabに SUIDビットを立てないといけないらしい。ところが /usr/bin/crontab は /bin/busybox へのリンクとなっており、SUIDビットをいじれない。busybox とは別に crontabをコンパイルしてもよいのだが、めんどうくさいので次のようにする。

/bin/busybox のコピーを /bin/sbusybox として作る。これに SUIDビットを付ける。次に/usr/bin/crontab(現在は /bin/busybox へのリンク)を削除し、代わりに /bin/sbusybox へのリンクとする。

コード: 全て選択

# cp /bin/busybox /bin/sbusybox
# chmod 4755 /bin/sbusybox
# ln -sf /bin/sbusybox /usr/bin/crontab
crontab -e はテキストエディタ mp を使うみたいだが、431JP2012では mpは無いので crontab -e は動かない。いずれにせよコンソールエディタでは使いにくいので、geanyで次の内容のファイルを作り、crontab-tako とする。作業は rootで行う。
EDIT:(2014-08-08) ログを毎回更新で使いまわすようにした。

コード: 全て選択

*/15 * * * * fetchmail &>/home/tako/fetchmail_log
15分おきに fetchmail を実行するものとなっている。rootで

コード: 全て選択

# crontab -u tako crontab-tako
これで、この内容が /var/spool/cron/tako に記録される。確認は

コード: 全て選択

# crontab -u tako -l
*/15 * * * * fetchmail &>/home/tako/fetchmail_log
最後に編集したユーザー シノバー [ 14/08/08(金) 20:34 ], 累計 3 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

Mailボックス

投稿記事 by シノバー »

fetchmailで受信したメールは procmailによって /home/tako/Mail 以下のフォルダに入るようにしている。pupsaveの中だといっぱいになる恐れのほか pupsave自身が壊れるかもしれないので怖い。なので /mnt/home/Mail ディレクトリを作り、 /home/tako/Mail はそちらへのリンクとする、/mnt/home は ext4 でフォーマットされている。ここで /mnt/home/Mail の所有者を tako にしておかねばならない。

コード: 全て選択

# mv /home/tako/Mail /mnt/home
# ln -s  /mnt/home/Mai /home/tako/Mail
でよいはずだが、念のため
# chown tako.tako -R /mnt/home/Mail
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

sshd

投稿記事 by シノバー »

このPCはメールを自動受信、振り分けたあと一部を携帯に転送するのが主任務。貯まったメールは sambaを通じ、リモートから sylpheedなどで閲覧する。リモート操作には smbaだけでは不十分なので、sshdを入れておく。

パピーへのsshdの導入は次の記事が詳しい。
http://takaq1.plala.jp/contents/puppy/ssh/index.html
4.x用公式パッケージ openssh-5.3p1-p4.pet をインストールする。
さらに下のスクリプトを作り /etc/init.d/rc.sshd として置く。
# /etc/init.d/rc.sshd setup
と入力すれば、2つのパスフレーズを聞いてくるので、決めたものを入れる。パスフレーズなし(Enterキーのみ)でもよい。
これで準備はできた。ローカルからテスト。
#ssh tako@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is xxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost,127.0.0.1' (RSA) to the list of known hosts.
tako@localhost's password:
#

リモートからアクセスするにはIこのホスト(仮に 'mailkeeper'とする)IPを固定にしておく。我が家では自前のDHCPDとDNSサーバーで名前解決もできるので、
#ssh tako@mailkeeper
で接続できる。

非特権ユーザー tako でログインして su コマンドで rootになるというのが普通の手順だが、パピーの su は、それができない。'su - tako' で特権ユーザー root から 非特権ユーザー tako になることはできるが、その逆はできない。代わりに ssh で特権ユーザー root に直接ログインすることとなる。
---
/etc/init.d/rc.sshd

コード: 全て選択

#!/bin/sh

SSHDPID=$(pidof sshd)
stopsshd() {
 for P in $SSHDFPID; do
   kill $P
 done
}

case "$1" in
start)
  [ "$SSHDPID" ] && echo "sshd is already running(pid=$SSHDPID)." || /usr/sbin/sshd
;;
stop)
  [ "$SSHDPID" ] && stopsshd
;;
restart)
  [ "$SSHDPID" ] && stopsshd
  SSHDPID=""
  sleep 1
  /usr/sbin/sshd
  SSHDPID=$(pidof sshd)
  [ "$SSHDPID" ] && echo "sshd is running(pid=$SSHDPID)." || echo "sshd is not running."
;;
status)
  [ "$SSHDPID" ] && echo "sshd is running(pid=$SSHDPID)." || echo "sshd is not running."
;;
setup)
  /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
  /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
;;
esac
最後に編集したユーザー シノバー [ 13/06/03(月) 09:33 ], 累計 1 回
The bar master, Shino's Bar
http://shinobar.net/
アバター
シノバー
記事: 3139
登録日時: 09/03/21(土) 00:05
連絡する:

リモートデスクトップ

投稿記事 by シノバー »

ssh でリモートから操作できるようになったが、パッケージをインストールするのに、petget は Xがないと動かない。なのでリモートデスクトップを使う。
パピーへの VNCサーバーの導入には 本家フォーラム にあるx11vnc_server-0.9.4B.pet を使う。
ペンギンの壺のページが詳しい。

また、リモート側パピーへの VNCクライエントの導入は本家フォーラムの同じところから入手できる tightvnc_viewer-1.3.9.pet を使う。
レグシム ブログの記事が詳しい。

追記(2015-12-29)
リモートからのキー入力でシフトキーが効かない問題がある。本家フォーラムのDAJさんの投稿によれば、x11vnc の起動に -nomodtweak オプションが要るとのこと。
The bar master, Shino's Bar
http://shinobar.net/
返信する