ホーム » コンピュータ » Linux (ページ 30)

Linux」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

replaced vertical whitespace in Subject header with space

自作のScriptを動かしていたら、

replaced vertical whitespace in Subject header with space;
this will become fatal in a future version at XXXX.pl line XXX.

なんて警告メッセージが表示される。色々調べてみると原因は、 Email::MIME パッケージ。

メールは、古臭い時代の名残りもあって、メールヘッダ1行は、 「最悪でも1000文字程度(出展?)で、普通は 78 文字より長くは しないほうがいい」という規定。

使っているメールの文字は、40文字程度だけれども、Subject部は、 MIMEエンコードされるから、簡単に長くなる。

検証コードと結果

#!/usr/bin/perl
use Email::MIME ;
use Jcode ;
print Email::MIME->create(
header => [
From => 'foo@bar.com' ,
To   => 'baz@bar.com' ,
Subject => Jcode->new( "...(たっぷり)...")->mime_encode ,
] ,
attributes => {
content_type => 'text/html' ,
charset      => 'ISO-2022-JP' ,
encoding     => '7bit' ,
} ,
body => "あいうえおabcde" )->as_string ;

これを動かすと、

replaced vertical whitespace in Subject header with space;
this will become fatal in a future version at zz.pl line 5.
From: foo@bar.com
To: baz@bar.com
Subject: =?ISO-2022-JP?B?...?= =?ISO-2022-JP?B?...?=
Date: Sun, 2 Mar 2014 22:42:40 +0900
MIME-Version: 1.0
Content-Type: text/html; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit
あ...de

といった結果となる。 本来なら、MIME-Encode された長い行は、vertical whitespace(\n)で 折り返される。しかし、space に置き換えられて、 きわめて長い1行となっている。

実際、Email::MIME には

改めて、Email::MIME には、以下のように書いてある。

Revision history for Perl extension Email::Simple
2.203  2014-02-14 21:56:14-05:00 America/New_York
- translate vertical whitespace in headers
into horizontal whitespace, with a warning

今まで警告メッセージが表示されていなかったのは、2/14更新だからか…

いいのか?

ということで、改行を空白に置き換えてもいいのかなぁ…メールは正しく送られてはいるんだけど…

postfix の場合は….
line_length_limit (デフォルト: 2048 bytes) …
header_size_limit (デフォルト: 102400 bytes) ….
たしかに、今時のMTAは、そんなの正しく処理するようには思うけど…

ちなみに、 line-feed を vertical whitespace と呼ぶこともあるということを、初めて知った…

保留2個って何?

うーむ、Debian のパッケージで、以前から保留2個って 出るんだけど、"dpkg –get-selections | grep hold" しても 特に何も出てこないし、full-upgrade しても何も出ないし… いったい何がひっかかってるんだろ…

# aptitude -s full-upgrade
インストール・削除・更新されるパッケージがありません。
更新: 0 個、新規インストール: 0 個、削除: 0 個、保留: 2 個。
0  バイトのアーカイブを取得する必要があります。
展開後に 0  バイトのディスク領域 が新たに消費されます。

nagios3でDHCPのチェック

WZR-450HPのファームのバグ?で、止まっているはずのDHCPが動いていて、 予想外のIPアドレスが使われていて、侵入されたのかと心配したことから、 DHCPがlocalhostで動いていることと、他に動いていないことを確認するように nagios3を設定してみた。

ただし、dhcp動作確認のcheck_dhcpは、rootじゃないと動かないので、 sudoで動くようにしておき、動いていないのが正常なので、negate pluginで反転させる。

(( /etc/sudoers ))
Cmd_Alias DHCPCHECK = /usr/lib/nagios/plugins/check_dhcp
nagios ALL= NOPASSWD: DHCPCHECK
(( /etc/nagios-plugins/config/local.cfg ))
define command{
command_name  check-no-dhcp
command_line  /usr/lib/nagios/plugins/negate
/usr/bin/sudo -u root
/usr/lib/nagios/plugins/check_dhcp -s 255.255.255.255 -t 1
}
define command{
command_name  check-local-dhcp
command_line  /usr/lib/nagios/plugins/check_procs -C 'dhcpd' -c 1:
}
(( /etc/nagios3/conf.d/localhost_nagios2.cfg ))
define service{
use              generic-service
host_name        localhost
service_description  DHCP-other
check_command      check-no-dhcp
}
define service{
use              generic-service
host_name        localhost
service_description  DHCP-local
check_command      check-local-dhcp
}

Windows Virtual PCにDebianを入れてみた。

Windows7 側が x64 だったし、amd64 のnetinstを動かそうとしたけど、 ダメだった。んで、i386 の netinst をダウンロードして試してみたら、 ようやくインストーラが起動。

インストーラで入れる際は、TABキーを押してブートパラメータに、 “noreplace-paravirt” を追加する。

 

movabletype-opensource打ち切りか…

職場のmovabletypeのバージョンも、パッケージ更新と共に新しくなり、 操作メニューで日本語が使えなくなった。 だれかが作っているかとWebを探していたら、今使っている movabletype-opensource(5.2.7) だけど、本家 Six Apart で movabletype 6 を出すのに合わせて、MTOS のサポートは切れるらしい。

HNS(Hyper Nikki System)から MovableType に切り替え、かなり経つが、 オープンソースの協力が大きい、WordPress に乗り換える時期かな…

ちょいと、手間がかかるだろうし、はぁ…

gvfs is not accessible: Permission denied

昨日より、Nagios から、下記のようなメールが1時間おきに届くようになった。

Sub: PROBLEM Service Alert: localhost/Disk_All is CRITICAL **
DISK CRITICAL
- /run/user/1000/gvfs is not accessible: Permission denied

確認すると、gvfs はGNOME のデスクトップの仮想ファイルシステムとの ことであるが、パッケージ更新で入った様子。 昨日 xrdpd 経由で、作業した後からの症状。ひとまず使わないので、 動かないように設定する。

(( /etc/environment ))
GVFS_DISABLE_FUSE=1

いつかは普通に使うようになるかもしれないので、設定をメモ。

samba 4.0 入っちゃった

Debian/testingで運用しているけど、パッケージを、"aptitude full-upgrade" を実行したら、samba 4.0 が候補に表示されてて、 やばいかと思ったけど、そのまま入れてしまった。

samba 3.6→ 4.0 だし、4.0 で Active Directory サポートで、 大幅に変わって四苦八苦のうえ、ダウングレードの羽目にあうかと 思ったけど、意外と何もなく動いている。

/etc/init.d/samba の中身も変わっていて、 /etc/init.d/{smbd,nmbd,samba-ad-dc}をそれぞれ起動するようになっている。 ただ、Active Directory 絡みの設定が無いので、 /etc/init.d/samba-ad-dc は自動的に動かない。

他の資料を見ると、smbd,nmbd で動く「レガシーバイナリ」と、samba の 単一サーバで動く「sambaバイナリ」があるらしい。 Debian のパッケージは、設定ファイルから自動判断して、 /usr/sbin/{smbd,nmbd} を起動するか、/usr/sbin/samba を起動するか うまく調整してくれているようだ。

ということで、Active Directory 絡みの設定を書いてないので、 無難に移行が済んだということか…


perl-base 5.18 を入れたら postgrey が動かなくなっていた

自宅外から、自宅へのメールが届いていないことが判明。 原因を調べてみると、どうも postgrey が起動していない。 なんで起動しないのと、手作業で postgrey を起動していると、pid ファイルが原因ぽいことが 分ってきた。手作業で起動スクリプトを治そうとしたけど、 動いたり動かなかったり。改めて、"postgrey pidfile debian" で調べていたら、 perl 起動時の "-T" オプションあたりが関係していて、 その根本原因は、perl-base 5.18 になっているため。

作者がパッチを提供しているというけど、パッケージには反映されていないようなので、 パッチの差分を /usr/sbin/postfix に手作業で修正した。

if($opt{dbdir}) {
$opt{dbdir} =~ /^(.*)$/; $opt{dbdir} = $1;
}
+    # untaint what is given on --pidfile. It is not security sensitive since
+    # it is provided by the admin
+    if($opt{pidfile}) {
+        $opt{pidfile} =~ /^(.*)$/; $opt{pidfile} = $1;
+    }
+    # untaint what is given on --inet. It is not security sensitive since
+    # it is provided by the admin
+    if($opt{inet}) {
+        $opt{inet} =~ /^(.*)$/; $opt{inet} = $1;
+    }
# determine proper "logsock" for Sys::Syslog
my $syslog_logsock;

perl 5.18.1-4 に更新

以前、perl 5.18 に更新したら、ことごとくパッケージ更新に トラブルになったので、 perl 5.14 に hold していた。 しかし、ある程度時間が経って競合などのトラブルも 無くなったみたいなので、”aptitude unhold perl”してみた。

以前なら、大量の競合パッケージ削除が発生していたけど、 無事に更新ができた。

ただ、munin-cron が、下記のようなメッセージを吐くように なってしまった。

defined(@array) is deprecated at /usr/share/perl5/Log/Log4perl
/Config.pm line 864.
(Maybe you should just omit the defined()?)

perlで、配列未定義チェックで、defined( @array ) で書いてあるけど、 defined では正しく動かないし、if ( @array ) で十分ということらしい。

ということで、該当ファイルの defined を消す。

メール添付の音声3gpをmp3に変更

子どもにsoftbankの見守り携帯を持たせてみた。 だけど、音声メールを送る機能があるんだけど、 添付ファイルが 3gp 形式。 iPhoneで見ようと思っても、かなり面倒くさい。

ということで、自宅サーバの特設メールアドレスに送らせて、 添付ファイルのデータ形式を変更して再送させるプログラムを作ってみた。

気まぐれで書いたから、節操無く統一性もなく perl module 呼び出している汚いコードだな。 処理内容は、添付ファイルを分解し、".3gp"の添付だけ、".mp3"を作って、 改めて添付ファイルを作成して送信。 ただし、音声添付無しのメールも飛ぶので、単純テキストはそのまま送る。

試しに動かしてみたが、自宅に見守り携帯が届く段階で、graylist にひっかかり、 一旦受付拒否されてやんの。softbank.ne.jp だし whitelist には入れられないしなぁ。 まあ、メールが届くのが数分遅れるだけだけどさ。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト