apache httpd 2.4 で嵌まる

DP1M0712

apahce httpd 2.2.(wheezy)から2.4.(jessie)への移行で適当なサーバをえいやで上げて動かなくなったのを復旧したメモ.

virtual host が有効にならない

/etc/apache2/sites-enabled/ 以下には設定ファイルがあるのに読み込まれず default しか表示されない.

sites-available からリンクを貼り直そうとするとエラーとなる

$ sudo a2dissite example.com
ERROR: Site example.com does not exist!
$ sudo rm /etc/apache2/sites-enabled/example.com
$ sudo a2ensite example.com
ERROR: Site example.com does not exist!

エラーメッセージで検索するとファイル名を *.conf にすれば良いよう.

この部分の該当場所は /etc/apache2/apache2.conf のここ

IncludeOptional sites-enabled/*.conf

2.2からの変更を確認するとこのように変わっていた.

 # Include the virtual host configurations:
-Include sites-enabled/
+IncludeOptional sites-enabled/*.conf

ということでこんな感じで

$ sudo rm /etc/apache2/sites-enabled/example.com
$ sudo mv /etc/apache2/sites-available/example.com /etc/apache2/sites-available/example.com.conf
$ sudo  a2ensite example.com.conf

設定ファイルの数が多かったら /etc/apache2/apache2.conf の設定を * にしても良いかも(未検証)

-IncludeOptional sites-enabled/*.conf
+IncludeOptional sites-enabled/*

403 が出る

エラーログは以下のような感じ.見慣れないエラー.

[authz_core:error] [pid 20566] [client nnn.nnn.nnn.nnn:49821] AH01630: client denied by server configuration: /var/www

以下のガイドを見るとどうもacl 周りのコマンド変更のようで

Order deny,allow
Deny from all

の代わりに

Require all granted

で動くようになった.


Android のTTS でハングアウトメッセージを流す

Ingressで複数人で移動することがあったのですが,連絡は基本的にGoogle ハングアウト.motercycle では基本的に確認できません.Android には標準でTTS(Text To Speak) が利用出来ます.ハングアウトメッセージをTTS に繋げることが出来たら大雑把に状況確認が出来るのではと試してみました.

N2 TTS の導入

TTS にはKDDI研究所のN2 TTS を利用しました.導入手順は以下のページにあります.

追加音声も4×4種類あります.

今回はfa001 を利用しました.

Screenshot_2015-06-23-07-19-04Screenshot_2015-06-23-07-18-50Screenshot_2015-06-23-07-18-30

Voice Notify の設定

ハングアウトアプリからTTS に流し込めれば良いのですが,出来ないようです.Google Play Store で使えそうなアプリを探したところ通知を読み上げてくれるVoice Notify というアプリを見つけました.

このアプリを導入し,音声通知をOn に
Screenshot_2015-06-23-07-19-33

通知対象のアプリにハングアウトだけ登録します.アプリケーションが多い場合はメニューから Igoner All で一旦全部解除してから filter で検索すると便利です.
Screenshot_2015-06-23-07-20-29Screenshot_2015-06-23-07-20-16

ここで通知対象のアプリを増やすとそのアプリの通知も読み上げられます.メッセージの内容が読み上げられるかはそのアプリの通知内容次第になります.例えばGoogle+ では内容により省略されたりします.

ハングアウトの設定

通知をしたいハングアウトの通知をOn にします.これでハングアウトから通知があればその内容が読み上げられます.

Screenshot from 2015-06-23 07-35-06


これで実際に試してみましたが,思っていたより内容は把握出来ました.長文だと辛いですが短文なら十分.ボリュームは6割位でイヤホンマイク片耳(ダイソーで購入した@100のもの)で聞いていましたが低速なら問題なし,50km/h以上だと聞き取りづらくなってきました.恐らく高速道路だとダメでしょうね.この辺はスピーカーやイヤホン次第で変わると思います.

Dropbox の新機能のfile requests を試す

Dropbox に対不特定多数向けファイルアップロード機能が付いたということで試してみました。
(<br>タグが……)

ファイル非公開anonymous FTP の変りに使えるのかな?
てことで試しにURL 公開
Screenshot from 2015-06-18 09:30:57
Screenshot from 2015-06-18 09:31:15
Screenshot from 2015-06-18 09:31:26
Screenshot from 2015-06-18 09:40:35

https://www.dropbox.com/request/4mt4eOii9dJb3N5f0LsP

アップロードには氏名とメールアドレスが必要
適当でもよさそうだけど
Screenshot from 2015-06-18 09:43:28Screenshot from 2015-06-18 09:43:42
Screenshot from 2015-06-18 09:44:24
Screenshot from 2015-06-18 09:46:17

まだこなれてないようでWeb画面英語になったり日本語になったり
ファイルUp者へのメールは日本語で、共有元には英語だったりしました。

ファイル非公開anonymous FTP の様にファイル提出を不特定多数から受け取るのに良さそうです。容量制限などが設定出来るといいかもですね。(1ファイル1MB 迄とか.txt のみとか)

GNU Screen v4.3.0 を少し試す

先日リリースされたGNU Screen 4.3.0 の新機能が気になったのでbuild してみた。

  • New commands:
    • ‘sort’ command sorting windows by title
    • ‘bumpleft’, ‘bumpright’ – manually move windows on window list
    • ‘collapse’ removing numbering ‘gaps’ between windows, by
      renumbering

Build とか

% sudo apt-get install build-essential
% sudo apt-get build-dep screen
% wget http://ftp.gnu.org/gnu/screen/screen-4.3.0.tar.gz http://ftp.gnu.org/gnu/screen/screen-4.3.0.tar.gz.sig
% gpg --verify screen-4.3.0.tar.gz.sig
gpg: assuming signed data in `screen-4.3.0.tar.gz'
gpg: Signature made 2015年06月14日 02時01分43秒 JST using RSA key ID C53EF3A4
gpg: Good signature from "Amadeusz Sławiński <amade@asmblr.net>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 2EE5 9A5D 0C50 167B 5535  BBF1 B708 A383 C53E F3A4
% tar tvzf screen-4.3.0.tar.gz
% tar xzf screen-4.3.0.tar.gz
% cd screen-4.3.0
% ./configure --prefix=$HOME/usr/local --enable-colors256 --enable-rxvt_osc --enable-use-locale --enable-pam
% make
% make install
% where screen
/home/mk/usr/local/bin/screen
/usr/bin/screen
% screen --version
Screen version 4.03.00 (GNU) 27-May-15

そして気になっていた新機能を試してみました。

  • New commands:
    • ‘sort’ command sorting windows by title

想像ではawesome みたいにウィンドウの並びが縦横分割されていい感じに並ぶのかなーと思っていたのだけど、大分違った。
Ctrl-a : して sort と打ってみると、

Sorting inside a window is not allowed. Push CTRL-a “ and try again

と言われる。Ctrl + a " してscreen のウィンドウリストを出した状態で再度叩くとこんな感じでウィンドウタイトルでソートされた。

Screenshot from 2015-06-17 19:21:38

ちなみに、

  • ‘bumpleft’, ‘bumpright’ – manually move windows on window list

も試したけどコアダンプしたorz
多分指定ウィンドウを左右に移動出来るのだと思う

[screen caught signal 11. (core dumped)]

Debian jessie2stretch

Screenshot from 2015-06-17 12:08:41

jessie がリリースされて2月近く1度目のポイントリリース もされて普通に使えています.しかし,悟りを開くためにtesting のstretch にアップグレードしてみます.

以下に記すことにより悟りを開けば、アップグレード地獄という果てしない因果応報の葛藤から人は解脱し、Debian の涅槃の境地に到達できます。

Debian リファレンス 2.1.3. 永遠のアップグレード人生 より

参考URL

以下の公式文章と,前回Wheezy から Jessie にアップグレードした時のメモを参考にしました.

パッケージを最新にする

% sudo apt update
% sudo apt upgrade

backup

pkg 情報

デイリーでファイルに落として( /usr/bin/dpkg --get-selections "*" > dpkg_--get-selections )バックアップしているのでバックアップログを見てバックアップがちゃんと取れているのを確認

/etc, /var, /home など

デイリーでバックアップしているのでバックアップログを見てバックアップがちゃんと取れているのを確認
最近の $HOME はこんな感じでバックアップしている

ionice -c2 -n7 nice -n19 rsync --stats -avze ssh --delete --bwlimit=2048 --rsync-path="/usr/bin/ionice -c2 -n7 /usr/bin/nice -n19 /usr/bin/rsync" --exclude-from "$HOME/.rsync-backup_exclude-list" --link-dest=/mnt/backup/x201s/rsync/home/`/bin/date -d '1 day ago' +\%Y\%m\%d`/ $HOME micro-backup:/mnt/backup/x201s/rsync/home/`date +%Y%m%d`/

Pin の解除

% find /etc/apt/ -type f|grep preferences
/etc/apt/preferences
% rm /etc/apt/preferences

パッケージ状態の確認

% sudo dpkg --audit
% find /etc/apt/ -type f|grep preferences
% aptitude search "~ahold"

vim パッケージを削除をされないようにする

% sudo aptitude unmarkauto vim

以下はaptitude のman より

       markauto, unmarkauto
           それぞれ、自動的にインストールされた、および手動でインストールされたという印をパッケージに添付します。パッケージの指定は「install」コマンドと
           まったく同じ方法で行います。例えば「aptitude markauto '~slibs'」を実行すると、「libs」セクションのパッケージすべてに、自動的にインストールされ
           たという印が添付されます。

           自動的にインストールしたパッケージについてのさらに詳しい情報は、aptitude リファレンスマニュアルの「自動的にインストールしたパッケージの管理」セ
           クションを参照してください。

aptitude リファレンスマニュアルの「自動的にインストールしたパッケージの管理」セクション は以下から.

ソースリストの修正

非公式なソースを削除して公式だけにする.

% sudo rm -rf /etc/apt/sources.list.d
% sudo vi /etc/apt/sources.list
% grep -v ^# /etc/apt/sources.list|uniq

deb http://ftp.jp.debian.org/debian/ jessie main non-free contrib
deb-src http://ftp.jp.debian.org/debian/ jessie main non-free contrib

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

jessie をstretch にする.

% grep -v ^# /etc/apt/sources.list|uniq

deb http://ftp.jp.debian.org/debian/ stretch main non-free contrib
deb-src http://ftp.jp.debian.org/debian/ stretch main non-free contrib

deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

コンソール端末に移動する

X の端末だとX が不安定になることがあるのでコンソールの端末に移動.Ctrl + Alt + 1~6 とかで移動してログインする.
fbtermなどを使わないと日本語表示が出来ないので LANG=C にしておく.

% echo $LANG
ja_JP.UTF-8
% LANG=C

root 権限になる

% sudo -s
# echo $LANG
C

ログの取得開始

# script ~mk/jessie2stretch.log 
Script started, file is /home/mk/jessie2stretch.log

パッケージ情報を更新

# apt-get update

アップグレードに必要な容量を確認する

# apt-get -o APT::Get::Trivial-Only=true dist-upgrade
 :
 :
 :
1551 upgraded, 72 newly installed, 8 to remove and 0 not upgraded.
Need to get 79.4 MB/1645 MB of archives.
After this operation, 469 MB of additional disk space will be used.
E: Trivial Only specified but this is not a trivial operation.

最小アップグレード

# apt-get upgrade
 :
1212 upgraded, 0 newly installed, 0 to remove and 340 not upgraded.
Need to get 0 B/1180 MB of archives.
After this operation, 137 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
 :

dist-upgrade の影響を確認する

# apt-get -s dist-upgrade
  :

dist-upgrade する

# apt-get dist-upgrade
  :
The following packages will be REMOVED:
  iceweasel-l10n-csb iceweasel-l10n-ku iceweasel-l10n-zu librpmsign1 libsane:i386 tracker-utils xserver-xorg-video-modesetting
  xserver-xorg-video-siliconmotion
  :
339 upgraded, 72 newly installed, 8 to remove and 0 not upgraded.
Need to get 79.4 MB/465 MB of archives.
After this operation, 332 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
  :

不要になったパッケージを削除する

# apt-get autoremove
  :
0 upgraded, 0 newly installed, 32 to remove and 0 not upgraded.
After this operation, 28.6 MB disk space will be freed.
Do you want to continue? [Y/n]Y
  :
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

sudo 設定確認

# lv /etc/sudoers

以前 sudoers が書き換わっていた事があるので確認
念の為別端末( Alt + 1~6 )で確認も

% sudo -s
[sudo] password for mk: 
# whoami
root

ログ終了

# exit
Script done, file is /home/mk/jessie2stretch.log

再起動

% sudo shutdown -r now jessie2stretch dist-upgrade!

Version 確認

% cat /etc/debian_version 
stretch/sid
% uname -a
Linux x220 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux
% screenfetch
         _,met$$$$$gg.           mk@x220
      ,g$$$$$$$$$$$$$$$P.        OS: Debian testing stretch
    ,g$$P""       """Y$$.".      Kernel: x86_64 Linux 3.16.0-4-amd64
   ,$$P'              `$$$.      Uptime: 2m
  ',$$P       ,ggs.     `$$b:    Packages: 5457
  `d$$'     ,$P"'   .    $$$     Shell: zsh 5.0.7
   $$P      d$'     ,    $$P     Resolution: 1440x900
   $$:      $$.   -    ,d$$'     WM: GNOME Shell
   $$\;      Y$b._   _,d$P'      WM Theme: Adwaita
   Y$$.    `.`"Y$$$$P"'          GTK Theme: Not Found [GTK2], Not Found [GTK3]
   `$$b      "-.__               Icon Theme: Not Found
    `Y$$                         Font: Not Found
     `Y$$.                       CPU: Intel Core i7 CPU L 620 @ 2GHz
       `$$b.                     RAM: 1413MB / 7801MB
         `Y$$b.                 
            `"Y$b._             
                `""""

サードパーティのsource list を復活させる

/etc/apt/sources.list.d/* をリストアしたり.

% ls -A /etc/apt/sources.list.d/
atlassian-hipchat.list  chrome-remote-desktop.list  google-chrome.list  google-chrome.list.save  owncloud-client.list  spideroak.com.sources.list  steam.list  wuala.list
% sudo apt update
% sudo apt list --upgradable
一覧表示... 完了
libowncloudsync0/不明 1.8.2-1 amd64 [1.8.1+dfsg-1 からアップグレード可]
owncloud-client/不明 1.8.2-1 amd64 [1.8.1+dfsg-1 からアップグレード可]
owncloud-client-l10n/不明 1.8.2-1 all [1.8.1+dfsg-1 からアップグレード可]
% sudo apt upgrade
% sudo apt dist-upgrade

未だjessie がリリースされてそう経ってないので差分が少なくディストリビューションアップグレードはあっさり終わりました.アップデート時に面倒な設定ファイルの書き換えも1つだけでした.

追記)
コンソールでのキーマップが[標準 105 キー (国際) PC] になっていたので,[標準 101 キー PC] に変更した.

% sudo dpkg-reconfigure keyboard-configuration

WordPress へのspam 投稿をしたことのあるIP を拒否するようにした

最近WordPress へのコメントとトラックバックスパムが酷くなってきました。URL が含まれている物は承認が必要なようにしているのですが面倒です。このときにスパムはスパムだと手動で振り分けをしているので振り分けたものからIP を抜き出してアクセス制限を掛けるとましにならないかと設定してみました。

データベースから該当IP を抜き出す

MySQL からスパムを指定したIP の一覧は以下のようにして取得出来そうです。

$ cat /etc/wordpress/spamcommentip.sql
SELECT comment_author_IP FROM wordpress.wp_comments WHERE comment_approved='spam'
$ /usr/bin/mysql -umy -p < /etc/wordpress/spamcommentip.sql | /usr/bin/sort -n | /usr/bin/uniq -c| sort -n|cut -c-7|uniq -c
     81       1
     31       2
     26       3
     12       4
      8       5
      9       6
      4       7
      9       8
      1       9
      1      10
      3      11
      2      12
      3      13
      1      14
      1      15
      1      18
      4      20
      1      22
      1      23
      1      24
      1      26
      1      43
      1      82
      1     119
      1     146
      1     394

自動化したいので、MySQL にアクセスする為のMySQL の設定ファイルと、IP を抜き出すsqlファイルを用意します。

  • MySQL アクセスの為の設定ファイル

    $ cd /etc/wordpress
    $ umask 077
    $ sudo touch .my.conf
    $ sudo chown www-data.root .my.conf
    $ vi .my.conf
    cat .my.conf 
    user=wp
    password=XXXXXXXXXXXXXX
    database=wordpress
    
  • IP を抜き出す為のsqlファイル

    $ sudo vi /etc/wordpress/spamcommentip.sql
    $ cat $ cat /etc/wordpress/spamcommentip.sql
    SELECT comment_author_IP FROM wordpress.wp_comments WHERE comment_approved='spam'
    

以下のようにしてIP の一覧が取得出来るようになりました。

$ /usr/bin/mysql --defaults-file=/etc/wordpress/.my.conf < /etc/wordpress/spamcommentip.sql

apache httpd の .htaccess で指定IPアドレスからの WordPress のコメント投稿とトラックバックを制限

Debian のパッケージで WordPress を導入しているので導入パスは /usr/share/wordpress/ です。
設定ファイルは /etc/wordpress 以下です。
/usr/share/wordpress/.htaccess/etc/wordpress/htaccess のシンボリックリンクになっています。

アクセス制限をするには .htaccessdeny from ip address な感じで行けます。
さっきのIPの一覧取得時に並べ替えて同一IPをまとめて頭にdeny from を付けるようにします。

$ /usr/bin/mysql --defaults-file=/etc/wordpress/.my.conf < /etc/wordpress/spamcommentip.sql | /usr/bin/sort -n | /usr/bin/uniq | /bin/grep -v 'comment_author_IP' | /bin/sed "s/^/  deny from /"

あまり無いと思いますが、正しいIP アドレスを登録してしまっても本文が読めるようにコメントやトラックバックだけ制限しようと思います。コメント、トラックバックは次のwp-comments-post.php / wp-trackback.php を利用するようなのでこのファイルへのアクセスを制限します。
.htaccess の Files ディレクティブを利用して以下ような感じでいけそうです。

<Files ~ wp-comments-post.php|wp-trackback.php>
  deny from ip address
</Files>

動作確認は自分のIPアドレスを一時的に登録して行いました。blog本文にはアクセス出来てコメントURL は拒否されています。

% w3m -dump_head https://matoken.org/blog/blog/2015/06/09/facebook-pgp/|head -1
HTTP/1.0 200 OK
% w3m -dump_head https://matoken.org/blog/wp-comments-post.php|head -1
HTTP/1.1 403 Forbidden

cron を使って自動的に更新するようにする

IP list は外部ファイルにして読み込むようにすると便利そうですが、Include ディレクティブは .htaccess からは利用出来無いようなので分割ファイルを作って連結することにします。

  • /etc/wordpress/htaccess_base
    • 元のhtaccess
  • /etc/wordpress/htaccess_spamhead
    • Files ディレクティブの先頭
  • /etc/wordpress/htaccess_spamiplist
    • データベースから抜き出して作成した拒否IPリスト
  • /etc/wordpress/htaccess_spamtail
    • Files ディレクティブの末尾
  • /etc/wordpress/htaccess
    • 最終的に結合されて.htaccess のリンク元になるファイル

htaccess_base / htaccess_spamhead / htaccess_spamtail を用意します。

$ sudo cp -p /etc/wordpress/htaccess /etc/wordpress/htaccess_base
$ sudo sh -c "echo '<Files ~ wp-trackback.php|wp-comments-post.php>' > /etc/wordpress/htaccess_spamhead"
$ sudo sh -c "echo '</Files>' > /etc/wordpress/htaccess_spamtail"

htaccess_spamiplist / htaccess はcron で1時間毎に作成するようにします。

$ sudo -u www-data crontab -e
$ sudo -u www-data crontab -l
14 * * * *      /usr/bin/mysql --defaults-file=/etc/wordpress/.my.conf < /etc/wordpress/spamcommentip.sql | /usr/bin/sort -n | /usr/bin/uniq | /bin/grep -v 'comment_author_IP' | /bin/sed "s/^/  deny from /" > /etc/wordpress/htaccess_spamiplist && /bin/cat /etc/wordpress/htaccess-base /etc/wordpress/htaccess_spamhead /etc/wordpress/htaccess_spamiplist /etc/wordpress/htaccess_spamtail > /etc/wordpress/htaccess

これで1時間毎にWordPress 上でspam と判定したコメント/トラックバックの送信元IP からコメント/トラックバックを拒否するようになりました。
うまくいくといいのですが……。

追記)
設定して数日経ちましたが,spam激減しました!

Facebook PGP対応を試す

logo-gnupg-light-purple-bg

ということでFacebook 自体は殆ど利用していないのですが、PGP GNU 実装のGnuPG の鍵を登録してみました。

先ずは自分の鍵を確認して、

% gpg --fingerprint 572E532C         
pub   4096R/572E532C 2010-03-17
                 指紋 = 9C3E C527 2FFD AF80 3289  ADE4 398C 09CC 572E 532C
uid                  K.I.Matohara <matoken@gmail.com>
uid                  [jpeg image of size 2077]
uid                  Kenichiro MATOHARA <matohara@gdnewhat-jp.org>
uid                  Kenichiro MATOHARA (KagoshimaLinuxUserGroup.) <matoken@kagolug.org>
sub   2048R/74FBCF68 2015-01-15

公開鍵をASCIIで書き出しして、

% gpg -a --export 572E532C|xclip

facebook に登録します。登録ページは次からアクセス出来ます。
https://www.facebook.com/me/about?section=contact-info

Screenshot from 2015-06-02 11:16:18
Screenshot from 2015-06-02 11:16:38

ここで Use this public key to encrypt notification emails that Facebook sends you? にチェックを付けるとFacebook からの通知も暗号化されるのですが、以下のエラーになってしまいました。(チェックをしない場合はエラーにならない)
利用した鍵の問題だったようです。下記の追記を参照して下さい。

Screenshot from 2015-06-02 11:17:19

PGP public key will be unusable too soon
This PGP Public Key will be unusable for encryption within 30 days. This most likely means that its expiry date is within 30 days, it is already revoked, or the key does not have encryption enabled. Please extend the expiry date or add an encryption subkey to your existing key, or generate a new public key to receive encrypted notifications.

鍵は全部期限内で無期限なんだけどなぜだろう?1024R/2048R/4096Rの鍵をそれぞれ新しく作って試すとこれはいけました。
副鍵が多かったりimage がいけないのかな?公開鍵も大きいし

$ gpg -a --export 572E532C|wc -l #怒られる4096R
208
$ gpg -a --export BD929CA7|wc -l #1024R
13
$ gpg -a --export DB7157B1|wc -l #2048R
30
$ gpg -a --export D9A959F4|wc -l #4096R
52

鍵の登録がうまくいくと以下のような暗号化メールが届きます。これを復号して確認URL にアクセスすると次のメールから暗号化されます。

% head /home/mk/encrypted.asc
-----BEGIN PGP MESSAGE-----

hQIMAxvR4gJcick7AQ/9GA1pbc/bU7p3o3PcxxsTT3HdPeOA5KdD5/GBcxODM1SS
ousJS+9g/IRgykaHcUHcYTJCbW/vyhQnm33Q+HjmOGI6t3n6UfTpxiNFH7WVSNVW
cd5nVSYj/9nlvq1lBk200+NjYdbxSPK40RrLMGwjMHkqRNilK85xFrOW1+B7FRXq
mYdSZkQ2n1XQsqywL+onPGkuM1RA0NARqNX9Iq4PJLrSx04h+8DgCAk8gul7z/iU
l3YnVjDz+I45EMQyzABckFbQQDoFC1T75tV+HDKJetSGQALoYGltA5COZusQdarM
Qmk+ukg+4xWAinV/Vci9jqANdeUDryADKh8nnuJoxVFyz9V4fIJjfp75+D5zPNdQ
uwrTQzBDRQIF9Qttk+5Id8Pi2/vuDzrRFO0ELrh/Zah78Wd3iMUykk2GMeXdnGve
7sq+LT0xkOt1i6vUzYpvlWwxlQ8gdUCXoIIlzEsMD0+TvEhx5xu9/OWt7CCKpYUg
% gpg -d /home/mk/encrypted.asc

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“Kenichiro MATOHARA (4096R key) <matoken@gmail.com>”
4096ビットRSA鍵, ID 5C89C93B作成日付は2015-06-08 (主鍵ID D9A959F4)

gpg: 4096-ビットRSA鍵, ID 5C89C93B, 日付2015-06-08に暗号化されました
      “Kenichiro MATOHARA (4096R key) <matoken@gmail.com>”
Content-Type: multipart/alternative;
        boundary="b1_391ab87f1b42dbae36913baf98ac3c0c"


--b1_391ab87f1b42dbae36913baf98ac3c0c
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit

こんにちは、Kenichiroさん

This is an email to help you enable encrypted notification emails for your Facebook account.

If you prefer to not enable encrypted notification emails from Facebook, you may simply ignore this message.

If you enable encrypted notification emails, Facebook will begin encrypting notification emails to you with your public key. These may include account recovery notification emails.

BEWARE: If at some time in the future you cannot decrypt your account recovery notification emails and if you also become locked out of Facebook, you may be unable to recover your Facebook account.

To proceed with enabling encrypted notification emails, please click this link:

Yes, encrypt notification emails sent to me from Facebook.[https://www.facebook.com/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX]

よろしくお願いいたします。
Facebookチーム

Facebook はなんでこの機能を付けたのかよくわかりませんが,以下の辺りも関係しているのかもですね.

ところで,この機能はクレジットカード会社や銀行なども取り入れて欲しいところです.自分の契約しているところだと法人向けだとやっている所はあるようですが個人向けは無さそうで残念です…….

おまけ?
Key fingerprint = 9C3E C527 2FFD AF80 3289 ADE4 398C 09CC 572E 532C
https://gist.github.com/200fce0896b735ccbc13


追記)
Google+ で+Niibe Yutakaさんにコメントを貰って暗号化用の副鍵が無いのが原因だったようですorz

572E532Cを—edit-keyで見てみると暗号のための副鍵はないので(署名Sと認証Aだけ)、主鍵は署名Sと鍵への署名Cで、この鍵では暗号化メールは送れません。暗号化の副鍵を追加して、ついでにrevokeした副鍵は削除して登録してみるといいんじゃないでしょうか。

% gpg --edit-key 572E532C
gpg (GnuPG) 1.4.18; Copyright (C) 2014 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

秘密鍵が使用できます。

pub  4096R/572E532C  作成: 2010-03-17  満了: 無期限      利用法: SC
 信用: 絶対的     有効性: 絶対的
This key was revoked on 2014-02-11 by RSA key 572E532C K.I.Matohara <matoken@gmail.com>
sub  2048R/E0FE9E3E  作成: 2011-02-23  失効: 2014-02-11  利用法: S
sub  2048R/74FBCF68  作成: 2015-01-15  満了: 無期限      利用法: A
[ultimate] (1). K.I.Matohara <matoken@gmail.com>
[ultimate] (2)  [jpeg image of size 2077]
[ultimate] (3)  Kenichiro MATOHARA <matohara@gdnewhat-jp.org>
[ultimate] (4)  Kenichiro MATOHARA (KagoshimaLinuxUserGroup.) <matoken@kagolug.org>

gpg> uid 1

pub  4096R/572E532C  作成: 2010-03-17  満了: 無期限      利用法: SC
 信用: 絶対的     有効性: 絶対的
This key was revoked on 2014-02-11 by RSA key 572E532C K.I.Matohara <matoken@gmail.com>
sub  2048R/E0FE9E3E  作成: 2011-02-23  失効: 2014-02-11  利用法: S
sub  2048R/74FBCF68  作成: 2015-01-15  満了: 無期限      利用法: A
[ultimate] (1)* K.I.Matohara <matoken@gmail.com>
[ultimate] (2)  [jpeg image of size 2077]
[ultimate] (3)  Kenichiro MATOHARA <matohara@gdnewhat-jp.org>
[ultimate] (4)  Kenichiro MATOHARA (KagoshimaLinuxUserGroup.) <matoken@kagolug.org>

gpg> key 1

pub  4096R/572E532C  作成: 2010-03-17  満了: 無期限      利用法: SC
 信用: 絶対的     有効性: 絶対的
This key was revoked on 2014-02-11 by RSA key 572E532C K.I.Matohara <matoken@gmail.com>
sub* 2048R/E0FE9E3E  作成: 2011-02-23  失効: 2014-02-11  利用法: S
sub  2048R/74FBCF68  作成: 2015-01-15  満了: 無期限      利用法: A
[ultimate] (1)* K.I.Matohara <matoken@gmail.com>
[ultimate] (2)  [jpeg image of size 2077]
[ultimate] (3)  Kenichiro MATOHARA <matohara@gdnewhat-jp.org>
[ultimate] (4)  Kenichiro MATOHARA (KagoshimaLinuxUserGroup.) <matoken@kagolug.org>

gpg> delkey
この鍵を本当に削除しますか? (y/N) y

pub  4096R/572E532C  作成: 2010-03-17  満了: 無期限      利用法: SC
 信用: 絶対的     有効性: 絶対的
sub  2048R/74FBCF68  作成: 2015-01-15  満了: 無期限      利用法: A
[ultimate] (1)* K.I.Matohara <matoken@gmail.com>
[ultimate] (2)  [jpeg image of size 2077]
[ultimate] (3)  Kenichiro MATOHARA <matohara@gdnewhat-jp.org>
[ultimate] (4)  Kenichiro MATOHARA (KagoshimaLinuxUserGroup.) <matoken@kagolug.org>

gpg> addkey
鍵は保護されています。

次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“K.I.Matohara <matoken@gmail.com>”
4096ビットRSA鍵, ID 572E532C作成日付は2010-03-17

ご希望の鍵の種類を選択してください:
   (3) DSA (署名のみ)
   (4) RSA (署名のみ)
   (5) Elgamal (暗号化のみ)
   (6) RSA (暗号化のみ)
選択は? 6
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
要求された鍵長は4096ビット
鍵の有効期限を指定してください。
0 = 鍵は無期限
 <n>  = 鍵は n 日間で満了
 <n>w = 鍵は n 週間で満了
 <n>m = 鍵は n か月間で満了
 <n>y = 鍵は n 年間で満了
鍵の有効期間は? (0)
Key does not expire at all
これで正しいですか? (y/N) y
本当に作成しますか? (y/N) y
今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。

十分な長さの乱数が得られません。OSがもっと乱雑さを収集
できるよう、何かしてください! (あと175バイトいります)
...............+++++

十分な長さの乱数が得られません。OSがもっと乱雑さを収集
できるよう、何かしてください! (あと198バイトいります)
...................+++++

pub  4096R/572E532C  作成: 2010-03-17  満了: 無期限      利用法: SC
信用: 絶対的     有効性: 絶対的
sub  2048R/74FBCF68  作成: 2015-01-15  満了: 無期限      利用法: A
sub  4096R/2D937827  作成: 2015-06-11  満了: 無期限      利用法: E
[ultimate] (1). K.I.Matohara <matoken@gmail.com>
[ultimate] (2)  [jpeg image of size 2077]
[ultimate] (3)  Kenichiro MATOHARA <matohara@gdnewhat-jp.org>
[ultimate] (4)  Kenichiro MATOHARA (KagoshimaLinuxUserGroup.) <matoken@kagolug.org>

gpg> save

% gpg --send-keys 572E532C
gpg: 鍵572E532Cをhkpサーバーkeys.gnupg.netへ送信

この状態で公開鍵をFacebook に登録するとまくいきました。