milter-managerで以下のエラーがでるようになってしまったので調べてみました。
ArgumentError: invalid byte sequence in US-ASCII
これまで動作していた設定は特に変更していません。
環境
- OS: Ubuntu 12.04
- milter-manager: 1.8.6
milter-managerは
deb http://downloads.sourceforge.net/project/milter-manager/ubuntu/stable/ precise universe
からaptでインストールしたものです。
milter-managerのおもな設定は以下です。
特別にいじってはいません。
/etc/milter-manager/milter-manager.conf
load("applicable-conditions/*.conf")
load_default
load_if_exist("milter-manager.local.conf")
/etc/milter-manager/defaults/debian.conf
# -*- ruby -*-
security.privilege_mode = true
base_dir = "/var/run/milter-manager"
manager.connection_spec = "unix:#{base_dir}/milter-manager.sock"
controller.connection_spec = "unix:#{base_dir}/milter-manager-controller.sock"
candidates = [
["milter-greylist",
["Sendmail Compatible", "Stress Notify", "Trust",
"Remote Network", "S25R", "Unauthenticated"]
],
["spfmilter",
["Remote Network", "Unauthenticated", "No Stress"]],
["clamav-milter", []],
["dkim-filter", []],
["opendkim", []],
["spamass-milter",
["Remote Network", "Unauthenticated", "No Stress"]],
["amavisd-new-milter", []],
]
candidates.each do |candidate, conditions|
detector = DebianInitDetector.new(configuration, candidate)
detector.detect
detector.apply(self) do |milter|
milter.applicable_conditions = conditions
end
end
[code]
エラーログの内容は以下のような感じでした。
[code]Mar 28 09:44:58 smtp milter-manager[18767]: ArgumentError: invalid byte sequence in US-ASCII:
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager/debian-init-detector.rb:57:in `gsub'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager/debian-init-detector.rb:57:in `parse_init_script'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager/init-detector.rb:26:in `detect'
Mar 28 09:44:58 smtp milter-manager[18767]: /etc/milter-manager/defaults/debian.conf:27:in `block in load_configuration'
Mar 28 09:44:58 smtp milter-manager[18767]: /etc/milter-manager/defaults/debian.conf:23:in `each'
Mar 28 09:44:58 smtp milter-manager[18767]: /etc/milter-manager/defaults/debian.conf:23:in `load_configuration'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:381:in `instance_eval'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:381:in `load_configuration'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:413:in `block in load'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:412:in `each'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:412:in `load'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:418:in `load_if_exist'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:426:in `load_default'
Mar 28 09:44:58 smtp milter-manager[18767]: /etc/milter-manager/milter-manager.conf:5:in `load_configuration'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:381:in `instance_eval'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:381:in `load_configuration'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:342:in `block in load'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/core/callback.rb:20:in `guard'
Mar 28 09:44:58 smtp milter-manager[18767]: /usr/lib/milter-manager/binding/lib/milter/manager.rb:341:in `load'
コードの中身をみてみると、/etc/init.d/milter-greylistをopenしてgsubをするタイミングでinvalid byte sequenceのエラーになっていました。
/etc/init.d/milter-greylistをみてみると
#! /bin/sh
# Greylist init script
# July 2004
# BERTRAND Joël
.
.
となってました。
ここの「Joël」がUTF-8になっていたためエラーとなっているようでした。
暫定的にこの1行を削除したところ、milter-managerはエラーなしで起動するようになりました。
この現象が起こるようになった原因は、milter-managerがruby 1.8ではなくruby 1.9.1を使うようになったためではないかと想像しています。