最近のアクセス 2

このブログのリファラドメイン

前回はこちら→最近の当サイトへのアクセス

さて、まず当weblogの記事の人気ランキングは…以下の通り。

今回 推移 前回 対象ページ アクセス数の比率
1 2 [Outlook 2007 で重複メールを削除する](http://www.hadacchi.com/wp_blog/?p=639) 15%
2 1 [windows7 で proxy の設定](http://www.hadacchi.com/wp_blog/?p=118) 11%
3 3 [regsvr32.exe in Win7 x64](http://www.hadacchi.com/wp_blog/?p=428) 10%
4 new! - [パナソニック P-01D の root 奪取](http://www.hadacchi.com/wp_blog/?p=1388) 6%
5 4 [Windows7 で ffdshow で H.264 コーデックでデスクトップキャプチャ](http://www.hadacchi.com/wp_blog/?p=353) 6%
6 new! - [ブラウザMC☆あくしずの施設設置コストの考察誤りについて](http://www.hadacchi.com/wp_blog/?p=1409) 4%
7 6 [Android 携帯で Gmail が何日も送信されない件](http://www.hadacchi.com/wp_blog/?p=465) 4%
8 10 [Windows 7 (x64) で Ragnaro"k Online](http://www.hadacchi.com/wp_blog/?p=324) 4%
9 圏外 [Win 7 で空パスワードのユーザに共有機能を使わせる](http://www.hadacchi.com/wp_blog/?p=362) 3%
10 9 [hadacchi blog (トップページ)](http://www.hadacchi.com/wp_blog/) 2%

今回は、リファラもドメイン別に公開してみる。

このブログのリファラドメイン
このブログのリファラドメイン

Direct は、リファラ不明のアクセスで、hadacchi は同ドメインからのアクセスを意味する。(これが少ないことは、皆1ページだけ見て帰っていることを意味するので、哀しい)
単独で1%を越える比率を占めるアクセスのみラベル化し、それ以外は「その他」へ。
内容が内容だけに、もともと検索エンジンからのアクセスがほとんどである。
今回明らかになったのは、Google先生つえーな、ってこと。
最近の google からのアクセスは、google 内部のリダイレクトを噛まして飛んでくるので、どんな検索キーワードから飛んできたか分からなくて不満。

mysql 設定メモ

追記2
mysql のデータファイルを別パーティションにうつしたので追記。
例えば、/path/mysql に移すことにする。

# service mysql stop
# mv /var/lib/mysql /path/mysql
# vi /etc/mysql/my.cnf
- datadir = /var/lib/mysql
+ datadir = /path/mysql
# vi /etc/apparmor.d/local/usr.sbin.mysqld
+ /mnt/mysql/ r,
+ /mnt/mysql/** rwk,
# service apparmor restart

↑し忘れてもちゃんと動いたので、必要かは不明、いちおう後でやっといた

# service mysql start

なお、UNIX ソケットファイル socket = hogehoge を ramdisk とか早いディスクに移しても意味がないらしい。ファイルを実際に read/write するわけではないから、だそうな。

追記
mysql を 5.5 にして、チューニングしたので追記。
詳しくは、これだけはやっておきたいMySQL 5.5系の設定 - uehatsu's tech blog

character-set-server    = utf8
skip-character-set-client-handshake
default-storage-engine  = InnoDB
collation-server        = utf8_general_ci
innodb_file_format      = Barracuda
innodb_file_per_table   = 1
innodb_use_sys_malloc   = 0

先のページの通りだとエラーが出るので、default-storage-engine はIとDBをキャピタルに。(というか、5.5系ではもともと、InnoDB がデフォルトらしいので、不要っぽい)
また、innodb の独自ヒープを使えないよ、というエラーがなんか出て気持ち悪いので、innodb_use_sys_malloc=0 を追加した。

手順

  1. バックアップ。
    # mysqldump -u USER -p --opt DBNAME --net_buffer_length=8000 | gzip > GZIPFILE

    オプションの順番はテキトー

  2. DB削除。
    上の手順で--opt をつけていれば、drop table は関係ない。
    どこまでやるかは、どれだけスッキリしたいかで変えれば良いと思う。
    mysql の該当テーブルを消す。(drop table TBLNAME;)
    データベースごと消すのもあり。(drop database DBNAME;)
    mysql を完全に消すのもあり。(apt-get purge mysql-hogehoge、hogehoge は、色々あるやつ全部)
  3. mysql 5.5 を入れる。
  4. 設定変更。
    /etc/my.cnf へ追記する内容。

    character-set-server=utf8
    skip-character-set-client-handshake
    default-storage-engine=innodb
    collation-server=utf8_general_ci
    innodb_file_format=Barracuda
    innodb_file_per_table=1
    
  5. mysql 設定反映と確認。
    # service mysql restart
    # mysql -p
    > show variables like 'inno%';
    
  6. mysql を purge した場合、php5-mysql も消えてるかも知れんので再インストール。
    # apt-get install php5-mysql
    # service apache2 restart
    
  7. リストア。
    mysql の初期設定とか、DB 作ったりとか、dump した sql ファイルの取り込みは下の旧エントリを確認のこと。

これで、もと通りのはず。
でも、CPU の非力なマシンなので、未展開の領域にアクセスした時、応答が恐しく遅くなる。
あんまり酷かったら、このオプション (Barracuda) は外すかも…

追記、ここまで。

apache2 の設定メモ の続編.
mysql の設定とか.

設定

  • # mysql_secure_installation

    で初期設定.基本,全部 Y で良い.root パスをインストール時からイチイチ変えるのがメンドイ時は,最初だけn.

  • 全てのユーザー情報が削除されているため,root ログインのみ可能.

    # mysql -u root -p
  • ユーザの追加.
    grant all privileges on databasename.* to username@localhost identified by 'password';
    show grants for username@localhost;
    flush privileges;
    
  • ユーザーの DB を作成.
    $ mysql -u username -p
    > create database databasename;
    
  • データ移行.
    $ mysql -u username -p databasename < sqlfile

その他のtips

/etc/my.cnf の [mysqld] ディレクティブに

character-set-server    = utf8
collation-server        = utf8_general_ci

を追記すると、サーバー文字コードは変更可能
DB文字コードは、mysqlクライアント内で目的のDBに接続して、

alter database DBNAME character set utf8;

文字コードの調べ方は、
mysql クライアント内で

> status

または、

> show variables like "chara%";

1行が長すぎてエディットが難しいときは、

# mysqldump -u USERNAME -pPASSWD --opt --default-character-set=utf8 DBNAME --net_buffer_length=8000 | gzip > sql.gz

としてやれば、1行毎の文字数が 8,000 文字以下となるよう出力してくれる。

ダンプした sql ファイルの取り込みは、クライアントから

> source SQLFILE;

テーブルの文字コードを調べるには、show create table TBNAME; でテーブル作成コマンドを見る。
同じように、show create database DBNAME; でデータベース作成コマンドも見れる。

Android で FTPd

ES ファイルエクスプローラで宅内のサーバが見えない。
私の場合、モバイル回線からインターネット経由では見えているので、サーバ自体には問題ないと思うのだが、webdav に ssl + sni を使っているために、宅内でアクセスしようとすると ip アドレスでは目的の vhost にアクセスができず、ドメイン名でアクセスしようにも dns はグローバルアドレスを返すという問題があり、うまく宅内で動作しない。
でまぁ、FTPd を立てようと、どのソフトがいいかなーと探していて見付けたのが以下のエントリー。
Android端末とPCとのネットワーク越しのファイルのやりとりについて | 相方が携帯紛失 で、私と同じ状況の人がいた。

で、これって ES ファイルエクスプローラにも機能として具備されてんじゃねーの?と思ってアプリのメニュー内を探してみたらあった。
メニューボタン>Tools>Remote Manager で FTPd の on/off ができる。
ルートを external_sd にできるのもポイント高い。
なお、上の記事の人と同じくアプリのローカライズに悩まされた挙句、私はもともと英語ロケールで Android を使っているので、日本語でどう表示されるかは知らない。

Android のファイラ、万能やなぁ。

Ubuntu で Wi-Fi を使う

我が家の配線の関係上、どうしてもサーバを無線の先に設置する必要が生じた。
なので今、アクセスが重くなっている。申し訳ない。

さて Ubuntu で Wi-Fi を設定するにあたって、思いきりハマってしまったのでメモを残す。

  1. 入っていなければ、wireless-tools と wpasupplicant を入れておく。
  2. iwconfig で無線チップが認識されているかチェック。no wireless extensions の行しかなければ、認識してないので、次の手順で何とかする。
    1. ドライバを確認する。まずは lspci コマンドで PCI カードやオンボードチップなどが何が搭載されているかチェックする。
    2. lsmod で対応するモジュールが組込まれているかチェックする。オンボードチップの場合、asus_wmiとかacer_wmiとかになってるかも。なかったら、apt-get して insmod するか、ベンダのページからソース落としてきて make する…んだと思うが、今回は認識してたのでよく分からん。
  3. 無線の設定を書く。
    以下は、WPA2-PSK(AES) で SSID をステルスに設定している場合。

    # wpa_passphrase SSID PASSPHRASE(PSKのこと) > /etc/wpa_supplicant/wpa_supplicant.conf
    # vi /etc/wpa_supplicant/wpa_supplicant.conf
    
    ctrl_interface=/var/run/wpa_supplicant
    ctrl_interface_group=0
    ap_scan=1
    network={
            ssid="SSID"
            scan_ssid=1 # ← ステルスモードの時
            #psk="PASSPHRASE"
            psk=************************************************************
            proto=WPA2
            key_mgmt=WPA-PSK
            pairwise=CCMP
            group=CCMP
            priority=2
    }
    
  4. おためしで接続(アソシエート)してみる。(以下は、WLAN I/F が1つしかなくて、そんなに古くない場合。)
    # wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
    -D 以下は WLAN インターフェースの指定らしく、最近は wext を使うのが一般的っぽい。
  5. うまくいったら、コンソールが返ってこないので、Ctrl+C で落とす。
  6. うまくいくようなら、/etc/network/interfaces を書く。
    auto wlan0
    iface wlan0 inet dhcp
            wpa-driver      wext
            wpa-essid       SSID
            wpa-conf        /etc/wpa_supplicant/wpa_supplicant.conf
    

    私は、wpa-essid を記述していない解説サイトがあって、書き漏らしておりハマっていた。
    だって、wpa-conf の方に書いてあるし、いらんと思うじゃーん。

  7. 後から知ったが、次のコマンドで AP リストが見れる。
    $ iwlist wlan0 scan | grep ESSID

Linux のhosts.allow/deny

hosts.allow/deny をインポートすることができる。
1行1アドレス(IPでもNWでもドメイン名でも)のファイルを配置して、
hosts.allow などで、
sshd: /path/filename
とすればOK

Linuxのロギングについて

logrotate を使う方法。
logrotate は、 cron.daily で実行される。
logrotate の設定は、 /etc/logrotate.conf と /etc/logrotate.d/* に配置。
/etc/logrotate.d/rsyslog あたりを参考に手で書けばOK
空のファイルをrotateして、gzだけ増えていくのを防ぐには、notifempty を指定

rsyslog でログ出力の制御。
rsyslog でログを出力するデーモン等のログを残すか否かの設定は、 /etc/rsyslog.d/* を見る。
service rsyslog restart で反映。

cron の auth.log への出力を抑制

[SOLVED] remove cron from /var/log/auth.log [Archive] - Ubuntu Forums を参照。
答だけ書くと…

bio
December 27th, 2010, 01:42 PM
Don't touch /etc/pam.d/cron, just add the following line before the pam_unix.so call in /etc/pam.d/common-session-noninteractive:
session [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid

cron の実行ログが見たければ、 /etc/rsyslog.d 配下の default.conf 的な名前のやつで、 cron の行の頭の コメントアウトを外せば、 /var/log/cron.log 辺りに実行ログが出てくるので、これで十分だと思う。

VPSを使う

転勤が決まったらしいので,引越しに備えてVPSを整えてみた.
お名前.com の VPS が,初期費用がかからず,安価に短期間利用できるので良さげ.
ubuntu 12.04 LTS が選択できるので,小躍りして申し込んだら,ubuntu server ではなく ubuntu desktop であることが分かってゲンナリ.
とりあえず,コンソールエキスパートモードからインストールすることにしたので,手順を軽くメモる.

VPS のインストールディスクを仮想ホストに仕込むところは,公式のヘルプを参照のこと.
起動したら ubuntu desktop のインストーラが起動するところまでは,進んでいることを想定.

  1. 起動してインストール開始.
    • Advanced options
    • Command-line expert install
  2. Ubuntu のインストーラは,上から順に設定していけばいいので簡単.
    • Choose Language
    • English
    • United States
    • en_US.UTF-8
    • ja_JP.UTF-8[space][tab][Enter]
    • en_US.UTF-8
    • Configure the keyboard
    • No
    • English (US)
    • English (US)
  3. ここからは,KVM初体験なので,よく知らない.勘で進める.
    • Detect Network Hardware
    • usb-storage (USB storage)に[*]が入った状態で,[tab][Enter]
    • Configure the network
    • NW設定がどうなっているかなど知らんので,自動でまずはやってみる
      Yes
    • 設定したいホスト名を入力し,[tab][Enter]
    • とりあえず空欄でもいいし,先々つけたいドメインを入れてもいい
    • Choose mirror of the Ubuntu archive
    • ftp
    • http://www.ubuntulinux.jp/ubuntu/mirrors から,ミラーを選択し,まずはFQDNを入力
    • 次に,HTTPで言うところのGETとかPOSTの後ろにつけるパスを絶対パスで指定
    • Proxy設定は知らんので,とりあえずなしで進めてみる
    • Download installer components (これはちょー時間かかる)
    • load-cdrom
    • Detect and mount CD-ROM
    • なんかエラーがでて,以降はだいたい ubuntu server のインストールと同じ.

インストールコンポーネントのとこは,なんか省略できる気がする.
これ終わった後,isoイメージを抜いて再起動かけても,なかなかコンソールに画面が表示されなくて焦るが,起動が遅いだけなので我慢すること.
とりあえずコンソールからssh-serverを入れて,鍵とか一通り共有したら,あとはssh経由で頑張ること.

SquirrelMail で web メール導入

IMAP サーバを Web メールの SquirrelMail から叩く設定.
ubuntu の場合,apt-get から入れることができる.
しかしその場合,いらんパッケージもセットでついてきて鬱陶しいので,SquirrelMail の tarball を拾ってきて,導入することにした.
この場合,root 権限の必要な場所に設置する必要すらないので,ユーザーディレクトリに設置することも可能である.

他のモバイル向けテーマも実装した Web メールを導入したかったが,何やら色々とパッケージが必要そうなのでやめた.
モバイルからは K-9 メールで直接 IMAP を叩くことにした.

事前準備

  • 必須の準備
    • web サーバを準備する
    • PHP を導入する
    • IMAP サーバを導入する.
  • ついでの準備
    • web サーバを SSL 対応させる.

SquirrelMail の展開

SquirrelMail - Webmail for Nuts! から,tarball を落とす.
展開してでてくるディレクトリ内の doc ディレクトリの INSTALL を読めば,基本的には OK のはず.
/var/local に置けとかゴチャゴチャ書いてあるが,さっくり無視して /home 配下に置く.

SquirrelMail の設定

カレントディレクトリを配置した squirrelmail のフォルダとする.
./config/conf.pl をコマンドラインから実行する.

  • D からサーバのソフトウェアを選択すると,簡単に設定をインポートしてくれるらしい.
    対した設定を読み込んでくれないので,手で設定してもいいと思う.
  1. Organization Preferences は,個人用途では設定しなくても問題なし.
  2. Server Settings は,設定する.
    1. Domain は,自ドメインを持ってたら設定する.でもどこでこれが使われるかは不明.
    2. Invert Time は,メール送信の時に時刻がズレたら(18時間ズレる),設定すると良いらしい.私のサーバでは,設定不要だった.
    1. Update IMAP Settings で,IMAP サーバの設定を変更する.
      7 の TLS は,SSL のこと(本来,TLS が標準).
      8 の Server software は,上記の D と違って,ここで選んでも設定をインポートしてくれない.でも気持ち悪いのでちゃんと選んでおく.
    2. Update SMTP Settings で,SMTP サーバの設定を変更する.
      7 で SMTP 認証の方法を自動検知する選択肢があるが,私の場合はうまく動作せず,応答が返ってこなくなってしまった.メッセージにもあるように,使わない方がいいかも.
  3. Folder Defaults は,D オプションで設定されていれば,ほとんど変更不要のはず.
    Bcc で運用する私みたいな人は,7 とか 8 あたりは不要.
    17 は,フォルダ削除時に Trash を迂回するか否かの設定.false で Trash に格納.
  4. General Options は,1 や 2 のディレクトリ設定を相対パスにするくらい.
  5. Language preferences は,文字コードを iso-2022-jp にしただけでは文字化けが完全に回避されない.言語を ja_JP とすること.

SSL の設定

SNI でホスト名を分ける場合は,/etc/apache2/sites-enabled の VirtualHost に設定を追記する.
これは詳しくは過去の記事(apache2 の設定メモ)を参照のこと.
SSL なしでのアクセスを拒否する場合,squirrelmail を設置したディレクトリに .htaccess を追加して,SSLRequireSSL と記載する.

fetchmail/procmail

せっかく,dovecot でサーバを立てたので,分散しているメールを集約してみる試み.
dovecot の設定は,こちらを参照のこと→dovecotの設定 | hadacchi blog

準備

dovecot が maildir を使って動いている環境は準備すること.
ここに,何らかの手段で pop したメールを振り分けて入れれば終わり.
自動的にポーリングし,フィルタしてローカルの Maildir に配送する手段は,わりと限られている.
今回は,かつて使っていた fetchmail/procmail を使うことにした.
他の選択肢としては,getmail を使う方法もあるけど,今回の場合はどちらにせよ procmail の設定が必要なので,わざわざ mua を変える理由がなかった.
もっと無駄だけど簡単なやり方としては,Sylpheed みたいな mua を使って pop したメールを振り分け機能で振り分けても同じことはできる.
他にも,とにかく pop する機能がついていれば,何でも良い.

fetchmail の設定

ちゃんとドキュメントを読めば,結構簡単に設定できる.
man の他は,ここを参考にした → fetchmailrc - 揮発性のメモ
というか,ほとんどそのまんまになってしまった.
続きの記事にも目を通しておいた方が良いかも → fetchmailrc 注意事項 - 揮発性のメモ

# 管理者
set postmaster LOCALUSERNAME

# no bouncemail エラーメールを管理者に送信する
# bouncemail    エラーメールを差出人に返送する
set no bouncemail

# デーモン時のログファイル
set logfile "/PATH/fetchmail.log"

# メールのチェック間隔(秒)
set daemon 600

# no spambounce  スパム差し戻しを返送しない
# spambounce     スパム差し戻しを返送する
set no spambounce

# -------------------------------------
defaults
  protocol pop3

  #----- サーバオプション
  # no uidl  未読チェックをサーバ側でつける (デフォルト)
  # uidl     未読チェックをクライアント側でつける
  uidl

  #----- ユーザオプション
  # keep     既読メールを削除しない
  # no keep  問い合わせ後にサーバ上の既読メールを削除する (デフォルト)
  no keep

  # flush     問い合わせ前にサーバ上の既読メールを削除する
  # no flush  既読メールを削除しない (デフォルト)
  no flush

  # no fetchall  未読メールのみの取り込み (デフォルト)
  # fetchall     全メールの取り込み
  fetchall

  # mimedecode     MIMEデコードする
  # no mimedecode  MIMEデコードしない (デフォルト)
  no mimedecode

# -------------------------------------
poll SERVERADDR1 proto pop3
        user    "USERNAME1"
        pass    "PASSWORD1"
        mda     "/usr/bin/procmail -m /PATH/SERVER1.procmailrc"

# -------------------------------------
poll SERVERADDR2 proto pop3
        user    "USERNAME2"
        pass    "PASSWORD2"
        mda     "/usr/bin/procmail -m /PATH/SERVER2.procmailrc"
        ssl

だいたいこんな感じ.
daemon モードで起動するには,fetchmail -d 600 とかする.
起動時に自動で daemon モードで起こしたい場合,root で使うなら /etc/default/fetchmail で daemon=yes とかで良いと思う.
ただしこの場合,/etc/fetchmailrc が必要.
ユーザー権限の場合,cron で @reboot fetchmail -d 600 とかするのが簡単.
.fetchmailrc は 700 に指定しておかないとエラーを吐いて動かないので注意.

久々に man 読むと,勉強になる.port という指定は古いぜ,って書かれていた.今はserviceで指定するらしい.

procmail の設定

fetchmailrc の mda で procmail を指定すると,.procmailrc とかに従って振り分けされる.
ただし今回は,宛先を見て振り分けるのが難しいので(Bcc で配送されたメールを振り分けられない),
procmail -m procmailrc_file と指定する方法を取る.
Maildir の場合,配置先の文字列の最後を「/」で終わらないといけないので注意.
procmailrc_file の例はこんな感じ.
単にサブディレクトリに突っ込む場合.

MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/.INBOX.SERVER1/
LOGFILE=$MAILDIR/SERVER1.log

振り分けする場合.

MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/.INBOX.SERVER2/
LOGFILE=$MAILDIR/SERVER2.log

:0 H
* ^From:.*(address1@host\.domain|address2@host\.domain)
.INBOX.SERVER2.From/

:0 H
* ^FROM_MAILER
.INBOX.SERVER2.DAEMON/

:0 H
* ^TO:.*address3@host\.domain
.INBOX.SERVER2.To/

man procmailrc とか読むと,^TO とか ^FROM_MAILER とかの正規表現が書かれているので,必要に応じてどうぞ.